Skip to content

Instantly share code, notes, and snippets.

@LeastFixedPoint
Last active December 11, 2015 13:08
Show Gist options
  • Save LeastFixedPoint/4605333 to your computer and use it in GitHub Desktop.
Save LeastFixedPoint/4605333 to your computer and use it in GitHub Desktop.
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Util.EZConfig(additionalKeys)
import XMonad.Layout.LayoutModifier
import qualified XMonad.StackSet as W
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks (avoidStruts, manageDocks)
import XMonad.Actions.PhysicalScreens
import XMonad.Util.Run (spawnPipe)
import System.IO (hPutStrLn)
import Control.Monad ((>=>))
main = xmonad =<< myAdditionalKeys =<< myBar defaultConfig
{ modMask = mod4Mask
, workspaces = [ name | (name, _, _) <- myWorkspaces ]
, manageHook = myManageHook <+> manageHook defaultConfig
, handleEventHook = fullscreenEventHook
}
data MyScreen = A | L | R deriving (Eq, Enum)
myWorkspaces =
[ ("h", R, xK_1)
, ("w", R, xK_2)
, ("t", L, xK_3)
, ("e", A, xK_4)
, ("s", A, xK_5)
, ("6", A, xK_6)
, ("7", A, xK_7)
]
myWsOn screen = [ ws | ws@(_, s, _) <- myWorkspaces, s == screen ]
myManageHook = composeAll
[ className =? "Gnome-terminal" --> doShift "t"
, className =? "Eclipse" --> doShift "e"
, (role =? "gimp-toolbox" <||> role =? "gimp-image-window") --> (ask >>= doF . W.sink)
]
where role = stringProperty "WM_WINDOW_ROLE"
myAdditionalKeys = (.) return $ flip additionalKeys $
[ ((mod4Mask, xK_F12), spawn "setxkbmap us && xscreensaver-command -lock && set-kb-layout")
, ((mod4Mask, xK_Print), spawn "scrot /tmp/screenshot.png")
] -- ++ [ ((mod4Mask, key), (viewScreen (fromEnum L)) >> (windows $ W.greedyView wid)) | (wid, screen, key) <- myWorkspaces ]
myBar conf = do
hBarL <- spawnPipe "xmobar -x 0"
hBarR <- spawnPipe "xmobar -x 1"
return $ conf
{ layoutHook = avoidStruts (layoutHook conf)
, logHook = do
logHook conf
dynamicLogWithPP xmobarPP
{ ppOutput = \s -> hPutStrLn hBarL s >> hPutStrLn hBarR s
, ppCurrent = xmobarColor "#429942" ""
}
, manageHook = manageHook conf <+> manageDocks
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment