
Adapted to dock changes by adding docksEventHook as suggested by Bogdan. Here's v3 with more fixes and better wording: xmonad and xmonad-contrib have evolved a lot over the years, and therefore it's a good idea to showcase a modern xmonad.hs. The config below will give you a good starter xmonad setup with minor customizations. These are: (1) Ask for confirmation before exiting (2) Replace default launcher binding with built-in shellPrompt, which is friendlier to use and does not require dmenu. Arguably, these customizations should be the default, but as it requires xmonad-contrib, we can not really make it the default. Things you might want to configure next: * customize looks * control volume and display back-light * customize layouts * customize mouse behavior * add more prompts (ssh, man, password, etc.) * whatever you can imagine and/or need Save this as ~/.xmonad/xmonad.hs: import System.Exit import XMonad import XMonad.Hooks.DynamicLog import XMonad.Hooks.ManageDocks import XMonad.Hooks.ManageHelpers import XMonad.Layout.Fullscreen import XMonad.Layout.LayoutHints import XMonad.Layout.NoBorders import XMonad.Prompt import XMonad.Prompt.ConfirmPrompt import XMonad.Prompt.Shell import XMonad.Util.EZConfig import XMonad.Util.Run(hPutStrLn, spawnPipe) main = do xmproc <- spawnPipe "xmobar ~/.xmonad/xmobarrc" xmonad $ defaultConfig { terminal = "xterm" , manageHook = myManageHook <+> fullscreenManageHook <+> manageDocks <+> manageHook defaultConfig , layoutHook = fullscreenFloat $ fullscreenFocus $ layoutHints $ smartBorders $ avoidStruts $ layoutHook defaultConfig , handleEventHook = fullscreenEventHook <+> docksEventHook , logHook = dynamicLogWithPP $ xmobarPP { ppOutput = hPutStrLn xmproc } } `additionalKeysP` [ -- Ask for confirmation before exiting by replacing the default -- binding with a custom one. ("M-S-q", confirmPrompt myXPConfig "exit" $ io exitSuccess) -- Replace M-p launcher binding with built-in shellPrompt, which -- is friendlier and does not require dmenu. , ("M-p", shellPrompt myXPConfig) ] `additionalKeys` [ ((mod4Mask, xK_q), spawn "xmonad --recompile && xmonad --restart") ] -- see http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Prompt.html#t:XPConfig myXPConfig = defaultXPConfig { position = Top , promptBorderWidth = 0 , defaultText = "" , alwaysHighlight = True , font = "9x15" } -- see http://xmonad.org/xmonad-docs/xmonad/XMonad-ManageHook.html myManageHook = composeAll [ className =? "Pidgin" --> doFloat , className =? "XCalc" --> doFloat , className =? "mpv" --> doFloat ]