diff --git a/users/modules/window_manager/xmonad_config.hs b/users/modules/window_manager/xmonad_config.hs index fdb4f91..a757905 100644 --- a/users/modules/window_manager/xmonad_config.hs +++ b/users/modules/window_manager/xmonad_config.hs @@ -16,6 +16,7 @@ import qualified Data.Map.Strict as Map import Data.Monoid import System.Exit import XMonad +import XMonad.Actions.Minimize (withLastMinimized, minimizeWindow, maximizeWindow) import XMonad.Actions.CycleSelectedLayouts (cycleThroughLayouts) import XMonad.Actions.EasyMotion ( ChordKeys (..), @@ -34,12 +35,13 @@ import XMonad.Hooks.ManageHelpers ) import XMonad.Hooks.StatusBar import XMonad.Hooks.StatusBar.PP -import XMonad.Layout.BoringWindows (boringWindows) +import XMonad.Layout.BoringWindows (boringWindows, focusUp, focusDown, focusMaster, swapUp, swapDown) import XMonad.Layout.Gaps (gaps) import XMonad.Layout.Grid import XMonad.Layout.LimitWindows (limitWindows) import XMonad.Layout.NoBorders (smartBorders) import XMonad.Layout.Spacing (spacing) +import XMonad.Layout.Minimize (minimize) import XMonad.Prompt (XPConfig (..), XPPosition (Top), XPType (..), XPrompt (..), mkComplFunFromList', mkXPromptWithModes) import qualified XMonad.StackSet as W import XMonad.Util.EZConfig @@ -102,7 +104,7 @@ main' dbus = keys = myKeys, mouseBindings = myMouseBindings, -- hooks, layouts - layoutHook = myLayout, + layoutHook = myLayoutHook, manageHook = myManageHook, handleEventHook = myEventHook, logHook = myPolybarLogHook dbus, @@ -158,7 +160,7 @@ myPolybarLogHook dbus = myLogHook <+> dynamicLogWithPP (polybarHook dbus) -- The available layouts. Note that each layout is separated by |||, -- which denotes layout choice. -- -myLayout = avoidStruts . smartBorders $ (Mirror tiled ||| tiled ||| full) +myLayoutHook = minimize . boringWindows . avoidStruts . smartBorders $ (Mirror tiled ||| tiled ||| full) where full = Full tiled = gapSpaced 5 $ Tall nmaster incRatio ratio @@ -280,17 +282,17 @@ myKeys conf = -- Easy moution to focus windows ("M-s", selectWindow easyMotionConfig >>= (`whenJust` windows . W.focusWindow)), -- Move focus to the next window - ("M-j", windows W.focusDown), + ("M-j", focusDown), -- Move focus to the previous window - ("M-k", windows W.focusUp), + ("M-k", focusUp), -- Move focus to the master window - ("M-m", windows W.focusMaster), + ("M-m", focusMaster), -- Swap the focused window and the master window ("M-", windows W.swapMaster), -- Swap the focused window with the next window - ("M-S-j", windows W.swapDown), + ("M-S-j", swapDown), -- Swap the focused window with the previous window - ("M-S-k", windows W.swapUp) + ("M-S-k", swapUp) ] where easyMotionConfig = @@ -317,7 +319,10 @@ myKeys conf = -- Toggle the status bar gap -- Use this binding with avoidStruts from Hooks.ManageDocks. -- See also the statusBar function from Hooks.DynamicLog. - ("M-b", toggleStruts) + ("M-b", toggleStruts), + -- Minimize and maximize windows + ("M4-m", withFocused minimizeWindow), + ("M4-S-m", withLastMinimized maximizeWindow) ] where togglePolybar = spawn "polybar-msg cmd toggle &"