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-<Up>", withFocused (sendMessage . maximizeRestore)),
("M-<Down>", withFocused minimizeWindow),
("M-<Right>", withFocused (sendMessage . RestoreMinimizedWin)),
@@ -103,15 +105,15 @@ addKeys = [("M-s n", spawn "screenslide start"),
("M1-e", viewEmptyWorkspace),
("M1-S-e", windows $ emptyCurrentWorkspace),
- ("M-<Backspace>", nextMatch History (return True)),
+ ("M-<Backspace>", nextMatch History (return True)),
-- Resize viewed windows to the correct size
("M-n", refresh),
-- Move focus to the next window
("M1-<Tab>", 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-<Left>", sendMessage $ Nav.Go Nav.L ),
-- ("M-<Right>", sendMessage $ Nav.Go Nav.R ),
@@ -119,23 +121,31 @@ addKeys = [("M-s n", spawn "screenslide start"),
-- ("M-<Down>", 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-<Return>", dwmpromote),
+ ("M-<Return>", 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)
-