X-Git-Url: https://code.delx.au/dotfiles/blobdiff_plain/00111470269898437ad937c3ddabab4cda5c4971..b28a9f3fdcab2af3dccec7a24dbbfd099e2182d0:/.xmonad/xmonad.hs diff --git a/.xmonad/xmonad.hs b/.xmonad/xmonad.hs index bfb8a41..05989b5 100644 --- a/.xmonad/xmonad.hs +++ b/.xmonad/xmonad.hs @@ -1,7 +1,9 @@ {-# LANGUAGE FlexibleContexts #-} import System.IO import XMonad +import XMonad.Actions.CycleRecentWS import XMonad.Actions.PhysicalScreens +import XMonad.Config.Desktop import XMonad.Hooks.DynamicLog import XMonad.Hooks.EwmhDesktops import XMonad.Hooks.ICCCMFocus @@ -18,7 +20,6 @@ import XMonad.Layout.PerWorkspace import XMonad.Layout.Renamed import XMonad.Layout.Reflect import XMonad.Layout.Tabbed -import XMonad.Layout.ThreeColumns import XMonad.Util.Run(spawnPipe) import qualified Data.Map as M import qualified XMonad.StackSet as W @@ -28,10 +29,11 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ [ ((modm .|. shiftMask, xK_h), spawn "xfce4-session-logout"), ((modm .|. shiftMask, xK_l), spawn "xscreensaver-command --lock"), - ((modm, xK_f), spawn "xmonad --restart"), + ((modm .|. shiftMask, xK_r), spawn "xmonad --restart"), ((modm, xK_n), spawn "xfce4-terminal"), ((modm, xK_i), spawn "firefox"), + ((modm .|. shiftMask, xK_i), spawn "firefox --private-window"), ((modm, xK_c), spawn "emacsclient --create-frame --no-wait"), ((modm, xK_p), spawn "kupfer"), @@ -50,7 +52,8 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ ((modm , xK_comma ), sendMessage (IncMasterN 1)), ((modm , xK_period), sendMessage (IncMasterN (-1))), ((modm , xK_b ), sendMessage ToggleStruts), - ((modm , xK_z ), sendMessage Mag.Toggle) + ((modm , xK_z ), sendMessage Mag.Toggle), + ((modm , xK_a), cycleRecentWorkspaceOnSingleScreen [xK_Super_L] xK_a xK_a) ] ++ @@ -58,8 +61,7 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ -- mod-shift-{o,e,u}, Move client to screen 1, 2, or 3 [((m .|. modm, key), f sc) | (key, sc) <- zip [xK_o, xK_e, xK_u] [0..] - , (f, m) <- [(viewScreen, 0), (sendToScreen, shiftMask)] - ] + , (f, m) <- [(viewScreen def, 0), (sendToScreen def, shiftMask)]] ++ -- mod-[1..9], Switch to workspace N @@ -69,6 +71,10 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)] ] +cycleRecentWorkspaceOnSingleScreen = cycleWindowSets options + where + options w = map (W.view `flip` w) (recentTags w) + recentTags w = map W.tag $ W.hidden w ++ [W.workspace (W.current w)] avoidMaster = W.modify' $ \c -> case c of W.Stack t [] (r:rs) -> W.Stack t [r] rs @@ -133,15 +139,6 @@ myTabbedLayout = createLayout "Tab" $ avoidStruts $ tabbed shrinkText myTitleTheme -myThreeColLayout = createLayout "ThreeCol" $ - avoidStruts $ - Mag.magnifierOff $ - ThreeCol numMaster resizeDelta masterRatio - where - resizeDelta = 3/100 - masterRatio = 4/10 - numMaster = 1 - myMasterTabbedLayout = createLayout "MTab" $ avoidStruts $ Mag.magnifierOff $ @@ -159,30 +156,16 @@ myGimpLayout = createLayout "Gimp" $ reflectHoriz $ tabbed shrinkText myTitleTheme - --- This was the easiest way I found to avoid a compile error when I have --- an unused layout -referenceAllLayoutsToAvoidErrors = - myFullLayout ||| - myTiledLayout ||| - myTabbedLayout ||| - myThreeColLayout ||| - myMasterTabbedLayout ||| - myGimpLayout - - myLayout = ( - onWorkspace "1" (myTabbedLayout ||| myMasterTabbedLayout) $ - onWorkspace "2" (myTabbedLayout ||| myMasterTabbedLayout) $ - onWorkspace "9" (myFullLayout ||| myMasterTabbedLayout ||| myTabbedLayout ||| myTiledLayout ||| myGimpLayout) $ - (myMasterTabbedLayout ||| myTabbedLayout ||| myTiledLayout) + onWorkspace "9" (myTabbedLayout ||| myFullLayout ||| myGimpLayout) $ + (myTabbedLayout ||| myMasterTabbedLayout ||| myTiledLayout) ) main = do xmonadDir <- getXMonadDir xmobars <- mapM (\x -> spawnPipe ("xmobar -x " ++ (show x) ++ " " ++ xmonadDir ++ "/xmobar.hs")) [1, 2] - xmonad $ ewmh defaultConfig { + xmonad $ desktopConfig { manageHook = myManageHook, layoutHook = myLayout, workspaces = myWorkspaces, @@ -190,7 +173,7 @@ main = do startupHook = myStartupHook, keys = myKeys, modMask = mod4Mask, - handleEventHook = handleEventHook defaultConfig <+> fullscreenEventHook, + handleEventHook = handleEventHook desktopConfig <+> fullscreenEventHook, focusFollowsMouse = False }