xmonad.hs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import XMonad
  2. import XMonad.Config.Desktop
  3. import XMonad.Hooks.DynamicLog
  4. import XMonad.Hooks.ManageDocks
  5. import XMonad.Util.Run(spawnPipe, hPutStrLn, runProcessWithInput)
  6. -- Layouts
  7. import XMonad.Layout.Spacing(smartSpacing)
  8. import XMonad.Layout.Tabbed(simpleTabbed)
  9. import XMonad.Layout.NoBorders
  10. -- Shutdown commands and keys
  11. import Data.Map(fromList)
  12. import XMonad.Prompt
  13. import XMonad.Prompt.XMonad
  14. import System.Exit(ExitCode(ExitSuccess), exitWith)
  15. import XMonad.Util.EZConfig(additionalKeys)
  16. -- Brightness and audio keys
  17. import Graphics.X11.ExtraTypes.XF86
  18. main = do
  19. xmproc <- spawnPipe "xmobar"
  20. xmonad $ docks defaultConfig
  21. { manageHook = manageDocks <+> manageHook defaultConfig
  22. , layoutHook = smartBorders $ withBorder 2 $ avoidStruts $ smartSpacing 5 $
  23. Tall 1 (3/100) (1/2) |||
  24. Mirror (Tall 1 (3/100) (1/2)) |||
  25. Full |||
  26. simpleTabbed
  27. , logHook = dynamicLogWithPP xmobarPP
  28. { ppOutput = hPutStrLn xmproc
  29. , ppTitle = xmobarColor "green" "" . shorten 50
  30. }
  31. , startupHook = startup
  32. , terminal = "gnome-terminal"
  33. , modMask = mod4Mask
  34. } `additionalKeys` myKeys
  35. startup :: X ()
  36. startup = do
  37. spawn "feh --bg-scale ~/Owncloud/Backgrounds/Xmbindings.png"
  38. spawn "owncloud"
  39. spawn "trayer --transparent true --alpha 0 --tint 0x00000000 --SetDockType true --expand true --edge top --align right --width 15 --height 18"
  40. spawn "xfce4-clipman"
  41. spawn "xbacklight -set 12"
  42. spawn "compton"
  43. spawn "xscreensaver -nosplash"
  44. myKeys = [
  45. -- scrot
  46. ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
  47. , ((0, xK_Print), spawn "scrot")
  48. -- rofi
  49. , ((mod4Mask, xK_p ), spawn "rofi -show run")
  50. -- shutdown
  51. , ((mod4Mask .|. shiftMask, xK_q),
  52. xmonadPrompt defaultXPConfig
  53. { promptKeymap = fromList
  54. [ ((0, xK_r), do
  55. spawn "emacsclient -e '(kill emacs)'"
  56. spawn "systemctl reboot")
  57. , ((0 , xK_s), do
  58. spawn "emacsclient -e '(kill emacs)'"
  59. spawn "sudo poweroff")
  60. , ((0, xK_e), do
  61. spawn "emacsclient -e '(kill emacs)'"
  62. io $ exitWith ExitSuccess)
  63. , ((0, xK_l), do
  64. spawn "xscreensaver-command -lock"
  65. quit)
  66. , ((0, xK_z), do
  67. spawn "xscreensaver-command -lock"
  68. spawn "systemctl suspend"
  69. quit)
  70. , ((0, xK_Escape), quit)
  71. ]
  72. , defaultText = "(r) Reboot, (s) Shutdown, (e) Exit, (l) Lock, (z) Sleep"
  73. })
  74. -- pulseaudio
  75. , ((0, xF86XK_AudioRaiseVolume),
  76. spawn "pactl set-sink-volume alsa_output.pci-0000_00_1f.3.analog-stereo +5%")
  77. , ((0, xF86XK_AudioLowerVolume),
  78. spawn "pactl set-sink-volume alsa_output.pci-0000_00_1f.3.analog-stereo -XF86AudioMute exec --no-startup-id pactl set-sink-mute alsa_output.pci-0000_00_1f.3.analog-stereo toggle5%")
  79. , ((0, xF86XK_AudioMute),
  80. spawn "pactl set-sink-mute alsa_output.pci-0000_00_1f.3.analog-stereo toggle")
  81. -- brightness
  82. , ((0, xF86XK_MonBrightnessUp),
  83. let
  84. returnValM = fmap init $ runProcessWithInput "xbacklight" [] ""
  85. in do
  86. currentBrightness <- returnValM
  87. if (read currentBrightness :: Double) == 0 then
  88. spawn "xbacklight -set 2"
  89. else
  90. spawn "xbacklight -inc 5")
  91. , ((0, xF86XK_MonBrightnessDown), spawn "xbacklight -dec 5")
  92. -- Another option for brightness configuration: never let it reach 0.
  93. {-|
  94. let
  95. returnValM = fmap init $ runProcessWithInput "xbacklight" [] ""
  96. in do
  97. currentBrightness <- returnValM
  98. if (read currentBrightness :: Double) - 5 >= 0 then
  99. spawn "xbacklight -dec 5"
  100. else return ())
  101. -}
  102. ]