Guest User

Untitled

a guest
Jun 18th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.33 KB | None | 0 0
  1. import XMonad
  2. import System.Exit
  3.  
  4. import IO
  5.  
  6. import qualified Data.Map as M
  7. import qualified XMonad.StackSet as W
  8.  
  9. import XMonad.Hooks.DynamicLog
  10. import XMonad.Hooks.ManageDocks
  11. import XMonad.Hooks.ManageHelpers
  12.  
  13. import XMonad.Util.Run
  14.  
  15. import XMonad.Layout.Combo
  16. import XMonad.Layout.Dishes
  17. import XMonad.Layout.Minimize
  18. import XMonad.Layout.NoBorders
  19. import XMonad.Layout.PerWorkspace
  20. import XMonad.Layout.Reflect
  21. import XMonad.Layout.ResizableTile
  22. import XMonad.Layout.SimplestFloat
  23. import XMonad.Layout.TwoPane
  24. import XMonad.Layout.WindowNavigation
  25. --------------------------------------
  26.  
  27. -- Options
  28. -- -------
  29. myBorderWidth = 1
  30. myModMask = mod1Mask
  31. myNormalBorderColor = "#171717"
  32. myFocusedBorderColor = "#a62424"
  33. myTerminal = "urxvt"
  34. myWorkspaces = ["main","etc","misc"]
  35.  
  36.  
  37. -- Keybinds
  38. -- --------
  39. myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
  40.  
  41. [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
  42. , ((0, xK_F2 ), spawn $ XMonad.terminal conf)
  43. , ((modm, xK_p ), spawn "dmenu_run -fn glisp -nb gray10 -nf gray70 -sb black -sf red")
  44. , ((0, xK_F3 ), spawn "dmenu_run -fn glisp -nb gray10 -nf gray70 -sb black -sf red")
  45. , ((modm .|. shiftMask, xK_p ), spawn "gmrun")
  46. , ((modm .|. shiftMask, xK_c ), kill)
  47. , ((modm, xK_space ), sendMessage NextLayout)
  48. , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
  49. , ((modm, xK_n ), refresh)
  50. , ((modm, xK_Tab ), windows W.focusDown)
  51. , ((modm, xK_j ), windows W.focusDown)
  52. , ((modm, xK_k ), windows W.focusUp )
  53. , ((modm, xK_Return), windows W.swapMaster)
  54. , ((modm .|. shiftMask, xK_j ), windows W.swapDown )
  55. , ((modm .|. shiftMask, xK_k ), windows W.swapUp )
  56. , ((modm, xK_h ), sendMessage Shrink)
  57. , ((modm, xK_l ), sendMessage Expand)
  58. , ((modm, xK_t ), withFocused $ windows . W.sink)
  59. , ((modm, xK_comma ), sendMessage (IncMasterN 1))
  60. , ((modm, xK_period), sendMessage (IncMasterN (-1)))
  61. , ((modm .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
  62. , ((modm, xK_q ), restart "xmonad" True)
  63. , ((modm, xK_b ), sendMessage ToggleStruts)
  64. , ((modm .|. shiftMask, xK_l ), sendMessage MirrorShrink)
  65. , ((modm .|. shiftMask, xK_h ), sendMessage MirrorExpand)
  66. , ((modm, xK_m ), withFocused minimizeWindow)
  67. , ((modm .|. shiftMask, xK_m ), sendMessage RestoreNextMinimizedWin)
  68.  
  69. -- Manual Movements
  70. -- ------ ---------
  71. , ((modm .|. controlMask, xK_Right), sendMessage $ Move R)
  72. , ((modm .|. controlMask, xK_Left ), sendMessage $ Move L)
  73. , ((modm .|. controlMask, xK_Up ), sendMessage $ Move U)
  74. , ((modm .|. controlMask, xK_Down ), sendMessage $ Move D)
  75.  
  76. -- Media keys
  77. -- ----- ----
  78. , ((0 , 0x1008ff16), spawn "mpc -q prev")
  79. , ((0 , 0x1008ff14), spawn "mpc -q toggle")
  80. , ((0 , 0x1008ff17), spawn "mpc -q next")
  81. , ((modm , 0x1008ff11), spawn "mpc -q volume -5")
  82. , ((modm , 0x1008ff13), spawn "mpc -q volume +5")
  83. , ((modm , 0x1008ff12), spawn "/home/square/bin/headphones.sh")
  84. , ((0 , 0x1008ff12), spawn "ossvol -t")
  85. , ((0 , 0x1008ff11), spawn "ossvol -d")
  86. , ((0 , 0x1008ff13), spawn "ossvol -i")
  87. , ((0 , 0x1008ff93), spawn "showbatt")
  88. ]
  89. ++
  90. [((m .|. modm, k), windows $ f i)
  91. | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
  92. , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
  93. ++
  94. [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
  95. | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
  96. , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
  97.  
  98.  
  99. -- Mouse
  100. -- -----
  101. myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
  102.  
  103. [ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w))
  104. , ((modMask, button2), (\w -> focus w >> windows W.swapMaster))
  105. , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w))
  106. ]
  107.  
  108. myFocusFollowsMouse :: Bool
  109. myFocusFollowsMouse = True
  110.  
  111.  
  112. -- Layouts
  113. -- -------
  114. myLayout = minimize $ smartBorders $ avoidStruts (funkyhack ||| lays ||| windowNavigation (nethack))
  115. where
  116. tiled = ResizableTall 1 (1/100) (147/227) []
  117. funkyhack = onWorkspace "etc" simplestFloat (tiled)
  118. lays = reflectHoriz tiled ||| Mirror tiled ||| Full
  119. nethack = (combineTwo (TwoPane (1/100) (147/227)) (Mirror (ResizableTall 1 (1/100) (3/4) [])) (Dishes 1 (1/6)))
  120.  
  121.  
  122. -- Kludges
  123. -- -------
  124. myManageHook = composeAll
  125. [ className =? "MPlayer" --> doFloat
  126. , className =? "Gimp" --> doFloat
  127. , className =? "feh" --> doFloat
  128. , className =? "Xmessage" --> doFloat
  129. , resource =? "quickhack" --> doFloat
  130. , resource =? "desktop_window" --> doIgnore
  131. , isFullscreen --> doFullFloat ]
  132.  
  133.  
  134. -- Empties
  135. -- -------
  136. myLogHook = return ()
  137. myStartupHook = return ()
  138.  
  139.  
  140. -- XMobar PP
  141. -- ------ --
  142. myPP :: PP
  143. myPP = defaultPP
  144. { ppCurrent = xmobarColor "#a62424" ""
  145. , ppSep = xmobarColor "#3a3a3a" "" " . "
  146. , ppLayout = xmobarColor "#aa6868" ""
  147. , ppUrgent = xmobarColor "red" ""
  148. , ppTitle = xmobarColor "#acacab" "" . pad }
  149.  
  150.  
  151. -- Get Ready
  152. -- --- -----
  153. myconfig = defaultConfig {
  154. terminal = myTerminal,
  155. focusFollowsMouse = myFocusFollowsMouse,
  156. borderWidth = myBorderWidth,
  157. modMask = myModMask,
  158. workspaces = myWorkspaces,
  159. normalBorderColor = myNormalBorderColor,
  160. focusedBorderColor = myFocusedBorderColor,
  161.  
  162. keys = myKeys,
  163. mouseBindings = myMouseBindings,
  164.  
  165. layoutHook = myLayout,
  166. manageHook = myManageHook,
  167. logHook = myLogHook,
  168. startupHook = myStartupHook
  169. }
  170.  
  171. -- Make it rain
  172. -- ---- -- ----
  173. main = do
  174. xmonad myconfig
  175.  
  176. -- Don't use xmobar anymore.
  177. -- xmobar <- spawnPipe "xmobar"
  178. -- xmonad myconfig
  179. -- { logHook = dynamicLogWithPP $ myPP { ppOutput = hPutStrLn xmobar }
  180. -- }
Add Comment
Please, Sign In to add comment