Skip to content

Instantly share code, notes, and snippets.

@alistra
Created November 22, 2011 00:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alistra/1384434 to your computer and use it in GitHub Desktop.
Save alistra/1384434 to your computer and use it in GitHub Desktop.
import XMonad
import qualified XMonad.StackSet as W
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.DynamicLog hiding (xmobar)
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import XMonad.Actions.CycleWS
import XMonad.Layout.NoBorders
import XMonad.Actions.UpdateFocus
import System.IO
isKDEOverride = do
isover <- isInProperty "_NET_WM_WINDOW_TYPE" "_KDE_NET_WM_WINDOW_TYPE_OVERRIDE"
isfs <- isFullscreen
return $! isover && (not isfs)
myManageHook = composeAll . concat $
[ [ composeOne [ isKDEOverride -?> doFloat ] ],
[ className =? "Gimp" --> doFloat
, className =? "Vncviewer" --> doFloat
, className =? "Firefox" --> doF (W.shift "web")
, className =? "Chromium-browser" --> doF (W.shift "web")
, className =? "Emacs" --> doF (W.shift "emacs")
, className =? "Calibre" --> doF (W.shift "ebook")
, className =? "Konversation" --> doF (W.shift "irc")
, className =? "Pidgin" --> doF (W.shift "irc")
, className =? "Kmail" --> doF (W.shift "mail")
, title =? "Ediff" --> doFloat
, isFullscreen --> doFullFloat ]]
main = do
xmproc <- spawnPipe "~/.cabal/bin/xmobar ~/.xmonad/xmobar"
-- xmproc <- spawnPipe "/usr/bin/xmobar ~/.xmonad/xmobar"
xmonad $ defaultConfig
{ manageHook = manageDocks <+> myManageHook
<+> manageHook defaultConfig
-- , layoutHook = avoidStruts $ smartBorders (layoutHook defaultConfig)
, layoutHook = avoidStruts ( smartBorders (Full ||| Mirror tiled ))
, startupHook = adjustEventInput
, handleEventHook = focusOnMouseMove
, logHook = dynamicLogWithPP $ xmobarPP
{ ppOutput = hPutStrLn xmproc
, ppTitle = xmobarColor "green" "" . shorten 50
}
, terminal = "urxvtc"
, modMask = mod4Mask -- Rebind Mod to the Windows key
, workspaces = ["shell", "emacs", "irc", "mail", "ebook", "web", "notes"] ++ map show [8,9,0]
} `additionalKeys`
[ ((mod1Mask .|. controlMask, xK_l), spawn "xscreensaver-command -lock")
, ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
, ((0, xK_Print), spawn "scrot")
, ((mod3Mask, xK_r), toggleWS)
, ((mod4Mask, xK_b), sendMessage ToggleStruts)
, ((mod3Mask, xK_a), nextScreen)
, ((mod4Mask, xK_0), windows $ W.view "0")
]
where
tiled = Tall nmaster delta ratio
-- The default number of windows in the master pane
nmaster = 1
-- Default proportion of screen occupied by master pane
ratio = toRational (2/(1+sqrt(5)::Double)) -- golden
-- Percent of screen to increment by when resizing panes
delta = 0.03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment