From 8ec26b5d8c7cb44aed62679a77e9c56fed070f26 Mon Sep 17 00:00:00 2001 From: Ilya V. Portnov Date: Tue, 3 May 2011 15:36:44 +0600 Subject: [PATCH] Support for tabbed layout for `inet' workspace. --- lib/KeyBindings.hs | 42 ++++++++++++++++++++++++++---------------- lib/Layouts.hs | 18 ++++++++---------- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/lib/KeyBindings.hs b/lib/KeyBindings.hs index 4508307..d1e6d61 100644 --- a/lib/KeyBindings.hs +++ b/lib/KeyBindings.hs @@ -19,12 +19,15 @@ import XMonad.Actions.DwmPromote import XMonad.Actions.GridSelect import XMonad.Actions.FindEmptyWorkspace import XMonad.Actions.GroupNavigation +import XMonad.Actions.PerWorkspaceKeys import XMonad.Layout.MultiToggle import XMonad.Layout.MultiToggle.Instances import XMonad.Layout.Maximize import XMonad.Layout.Minimize -import qualified XMonad.Layout.TabbedModifier as Tab +import XMonad.Layout.SubLayouts +import qualified XMonad.Layout.Groups as G +import qualified XMonad.Layout.Groups.Examples as Ex import qualified XMonad.Layout.WindowNavigation as Nav import XMonad.Prompt @@ -84,7 +87,6 @@ addKeys = [("M-s n", spawn "screenslide start"), ("M-o", chooseLayout "onebig"), ("M-w", chooseLayout "mgrid"), ("M-u", chooseLayout "autogrid"), - ("M-S-u", twoTabs), ("M-", withFocused (sendMessage . maximizeRestore)), ("M-", withFocused minimizeWindow), ("M-", withFocused (sendMessage . RestoreMinimizedWin)), @@ -103,15 +105,15 @@ addKeys = [("M-s n", spawn "screenslide start"), ("M1-e", viewEmptyWorkspace), ("M1-S-e", windows $ emptyCurrentWorkspace), - ("M-", nextMatch History (return True)), + ("M-", nextMatch History (return True)), -- Resize viewed windows to the correct size ("M-n", refresh), -- Move focus to the next window ("M1-", windows W.focusDown), - ("M-j", windows W.focusDown), - ("M-k", windows W.focusUp ), + ("M-j", bindOn [("inet", Ex.focusDown), ("", windows W.focusDown)]), + ("M-k", bindOn [("inet", Ex.focusUp), ("", windows W.focusUp)] ), -- ("M-", sendMessage $ Nav.Go Nav.L ), -- ("M-", sendMessage $ Nav.Go Nav.R ), @@ -119,23 +121,31 @@ addKeys = [("M-s n", spawn "screenslide start"), -- ("M-", sendMessage $ Nav.Go Nav.D ), -- Rotate windows list - ("M-C-j", rotateWindows ), - ("M-C-k", rotateWindows' ), + ("M-C-j", bindOn [("inet", Ex.focusGroupDown), + ("", rotateWindows)] ), + ("M-C-k", bindOn [("inet", Ex.focusGroupUp), + ("", rotateWindows')] ), -- Swap the focused window and the master window - ("M-", dwmpromote), + ("M-", bindOn [("inet", Ex.swapGroupMaster), + ("", dwmpromote)]), -- Swap the focused window with the next window - ("M-S-j", windows W.swapDown ), - ("M-S-k", windows W.swapUp ), + ("M-S-j", bindOn [("inet", Ex.swapDown), + ("", windows W.swapDown)]), + ("M-S-k", bindOn [("inet", Ex.swapUp), + ("", windows W.swapUp)]), -- Tab/Untab - ("M-M1-j", sendMessage $ Tab.pull Nav.L), - ("M-M1-l", sendMessage $ Tab.pull Nav.R), - ("M-M1-k", sendMessage $ Tab.pull Nav.U), - ("M-M1-h", sendMessage $ Tab.pull Nav.D), - - ("M-M1-u", withFocused (sendMessage . Tab.UnTab)), + ("M-M1-j", bindOn [("inet", Ex.moveToGroupDown False), + ("", sendMessage $ pushWindow Nav.D)]), + ("M-M1-l", bindOn [("inet", Ex.moveToGroupUp False), + ("", sendMessage $ pushWindow Nav.R)]), + ("M-M1-k", sendMessage $ pushWindow Nav.U), + ("M-M1-h", sendMessage $ pushWindow Nav.L), + + ("M-M1-u", bindOn [("inet", Ex.splitGroup), + ("", withFocused (sendMessage . UnMerge))]), -- Shrink/expand the master area ("M-e", sendMessage Shrink), diff --git a/lib/Layouts.hs b/lib/Layouts.hs index 77c3ea4..43e8064 100644 --- a/lib/Layouts.hs +++ b/lib/Layouts.hs @@ -35,8 +35,10 @@ import XMonad.Layout.Tabbed import XMonad.Layout.TrackFloating import XMonad.Layout.Maximize import XMonad.Layout.Minimize +import XMonad.Layout.SubLayouts +import XMonad.Layout.Simplest +import XMonad.Layout.Groups -import qualified XMonad.Layout.TabbedModifier as Tab import qualified XMonad.Layout.WindowNavigation as Nav import CommonFunctions @@ -49,6 +51,9 @@ tWithIM = withIM (1%6) ((Role "buddy_list") `Or` (Role "MainWindow") `Or` (Role isGfxPanel = (Role "gimp-toolbox") `Or` (Role "Brush selector") `Or` (Role "toolbox_window") `Or` (Role "Layers") +imlayout = addTabs shrinkText deco $ subLayout [] Simplest autogrid2 +tabgrid = group (tabbed shrinkText deco) (Mirror $ Tall 1 (1/100) (2/3)) + grid = named "grid" $ Grid (2) vgrid = Grid (1/2) tiled = Tall 1 (1/100) (1/2) @@ -64,7 +69,7 @@ autogrid2 = autoMaster 2 (1/100) grid books = named "books" (Tall 1 (1/100) (2/3)) -- rowtile = Mirror hortile mgrid = centerMaster grid -forim = named "im" (tWithIM (minimax autogrid2 ||| minimax grid ||| zgrid ||| Full)) +forim = named "im" (tWithIM imlayout) column = Column 1.8 forgimp = named "gimp" $ withButtons $ combineTwoP (TwoPane 0.03 0.75) column (reflectVert $ Column 0.4) $ Not isGfxPanel onebig = named "onebig" $ (OneBig (3/4) (3/4)) @@ -95,8 +100,7 @@ myLayout = trackFloating $ smartBorders $ Nav.configurableNavigation (Nav.navigateBrightness 0.0) $ avoidStruts $ - Tab.modify shrinkText deco $ - onWorkspace "inet" (minimax full ||| autogrid ||| onebig) $ + onWorkspace "inet" (minimax full ||| tabgrid ||| onebig) $ onWorkspace "text" (minimax full ||| minimax autogrid2 ||| minimax dwmtile ||| minimax mirrored ||| books ||| autogrid ||| onebig ) $ onWorkspace "files" (minimax full ||| minimax dwmtile ||| autogrid) $ onWorkspace "im" forim $ @@ -104,9 +108,3 @@ myLayout = trackFloating $ onWorkspace "dashboard" (forgimp ||| full ||| grid) $ onWorkspace "trash" (full ||| autogrid ||| grid) (minimax mirrored ||| full) -twoTabs = do - chooseLayout "autogrid" - sendMessage $ IncMasterN 1 - sendMessage $ Tab.pull Nav.R - sendMessage $ IncMasterN (-1) - -- 1.7.2.3