/xmonad-old.hs

https://github.com/meiersi/dotfiles · Haskell · 100 lines · 66 code · 20 blank · 14 comment · 0 complexity · 39e43a8de91ea1e71e0756cb95a7a9f9 MD5 · raw file

  1. import qualified Data.Map as M
  2. import XMonad
  3. import XMonad.Config.Gnome
  4. import qualified XMonad.StackSet as W -- to shift and float windows
  5. import XMonad.Actions.CycleWS
  6. import XMonad.Hooks.ManageDocks
  7. import XMonad.Layout.MosaicAlt
  8. import XMonad.Layout.Tabbed
  9. import XMonad.Layout.NoBorders
  10. import XMonad.Layout.ShowWName
  11. import XMonad.Layout.WindowNavigation
  12. import XMonad.Layout.LayoutHints (layoutHints)
  13. import System.Exit
  14. -- import XMonad.Util.Run (spawnPipe)
  15. main :: IO ()
  16. main = xmonad gnomeConfig
  17. { manageHook = myManageHook
  18. , modMask = mod4Mask
  19. , keys = \c -> myKeys c `M.union` keys gnomeConfig c
  20. , layoutHook = myLayout
  21. , workspaces = myWorkspaces
  22. , startupHook = startup
  23. }
  24. where
  25. startup = do
  26. spawn "gnome-keyring-daemon"
  27. spawn "gnome-settings-daemon"
  28. spawn "redshift -O 6400K"
  29. spawn "xset r rate 250 80"
  30. myLayout = avoidStruts $ layoutHints $ showWName $ smartBorders $
  31. (navigable $ MosaicAlt M.empty) |||
  32. simpleTabbed
  33. navigable = configurableNavigation noNavigateBorders
  34. myManageHook :: ManageHook
  35. myManageHook = composeAll (
  36. [ manageHook gnomeConfig
  37. -- , className =? "Unity-2d-panel" --> doIgnore
  38. -- , className =? "Unity-2d-launcher" --> doFloat
  39. ])
  40. myWorkspaces :: [String]
  41. myWorkspaces = map (\i -> ">> "++show i++" <<") [1..9]
  42. myKeys :: XConfig t -> M.Map (KeyMask, KeySym) (X ())
  43. myKeys (XConfig {modMask = modm}) = M.fromList $
  44. [ ((modm, xK_p), spawn "krunner")
  45. -- , ((modm .|. shiftMask, xK_q), spawn "")
  46. , ((modm, xK_a), withFocused (sendMessage . expandWindowAlt))
  47. , ((modm, xK_z), withFocused (sendMessage . shrinkWindowAlt))
  48. , ((modm, xK_s), withFocused (sendMessage . tallWindowAlt))
  49. , ((modm, xK_d), withFocused (sendMessage . wideWindowAlt))
  50. -- close focused window
  51. , ((modm, xK_c), kill)
  52. -- Quit xmonad
  53. , ((modm .|. shiftMask, xK_q), io (exitWith ExitSuccess))
  54. -- reset the current layout
  55. , ((modm .|. controlMask, xK_space ), sendMessage resetAlt)
  56. -- move focus to the next window
  57. , ((mod1Mask, xK_Tab ), windows W.focusDown)
  58. -- move focus to the previous window
  59. , ((mod1Mask .|. shiftMask, xK_Tab ), windows W.focusUp)
  60. -- Navigate windows
  61. , ((modm, xK_Right), sendMessage $ Go R)
  62. , ((modm, xK_Left ), sendMessage $ Go L)
  63. , ((modm, xK_Up ), sendMessage $ Go U)
  64. , ((modm, xK_Down ), sendMessage $ Go D)
  65. -- switching between workspaces
  66. , ((modm .|. controlMask, xK_Right), nextWS)
  67. , ((modm .|. controlMask, xK_Left ), prevWS)
  68. -- moving windows between adjacent workspaces
  69. , ((modm .|. shiftMask, xK_Right), shiftToNext >> nextWS)
  70. , ((modm .|. shiftMask, xK_Left ), shiftToPrev >> prevWS)
  71. -- swapping screens
  72. , ((modm, xK_x ), swapNextScreen)
  73. -- shortcuts for often used software
  74. , ((modm .|. shiftMask, xK_Return), spawn "gnome-terminal")
  75. , ((modm .|. shiftMask, xK_h), spawn "gvim")
  76. , ((modm .|. shiftMask, xK_j), spawn "firefox")
  77. , ((modm .|. shiftMask, xK_n), spawn "nautilus")
  78. , ((modm .|. shiftMask, xK_i), spawn "chromium-browser")
  79. , ((modm .|. shiftMask, xK_o), spawn "gksu synaptic")
  80. ]