Advertisement
Guest User

jg xmonad

a guest
May 27th, 2021
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. import XMonad
  2.  
  3. import XMonad.Hooks.DynamicLog
  4. import XMonad.Hooks.ManageDocks
  5. import XMonad.Hooks.ManageHelpers
  6. import XMonad.Hooks.StatusBar
  7. import XMonad.Hooks.StatusBar.PP
  8.  
  9. import XMonad.Util.EZConfig
  10. import XMonad.Util.Loggers
  11. import XMonad.Util.Ungrab
  12.  
  13. import XMonad.Layout.Magnifier
  14. import XMonad.Layout.ThreeColumns
  15.  
  16. import XMonad.Hooks.EwmhDesktops
  17.  
  18.  
  19.  
  20. myTerminal :: String
  21. myTerminal = "termite"
  22.  
  23. main :: IO ()
  24. main = xmonad
  25. . ewmhFullscreen
  26. . ewmh
  27. . withEasySB (statusBarProp "xmobar" (pure myXmobarPP)) defToggleStrutsKey
  28. $ myConfig
  29.  
  30. myManageHook :: ManageHook
  31. myManageHook = composeAll
  32. [ className =? "Gimp" --> doFloat
  33. , isDialog --> doFloat
  34. ]
  35.  
  36. myLayout = tiled ||| Mirror tiled ||| Full ||| threeCol
  37. where
  38. threeCol = magnifiercz' 1.3 $ ThreeColMid nmaster delta ratio
  39. tiled = Tall nmaster delta ratio
  40. nmaster = 1 -- Default number of windows in the master pane
  41. ratio = 1/2 -- Default proportion of screen occupied by master pane
  42. delta = 3/100 -- Percent of screen to increment by when resizing panes
  43.  
  44. myKeys :: [(String, X())]
  45. myKeys =
  46. [ ("M-<Return>", spawn (myTerminal))
  47. , ("M-S-z", spawn "xscreensaver-command -lock")
  48. , ("M-S-=", unGrab *> spawn "scrot -s" )
  49. , ("M-]" , spawn "firefox" )
  50. , ("M-S-<Return>" , spawn "dmenu_run -i -p \"Run: \"")
  51. , ("M-p q", spawn "dmpower")
  52. ]
  53.  
  54. myXmobarPP :: PP
  55. myXmobarPP = def
  56. { ppSep = magenta " • "
  57. , ppTitleSanitize = xmobarStrip
  58. , ppCurrent = wrap " " "" . xmobarBorder "Top" "#8be9fd" 2
  59. , ppHidden = white . wrap " " ""
  60. , ppHiddenNoWindows = lowWhite . wrap " " ""
  61. , ppUrgent = red . wrap (yellow "!") (yellow "!")
  62. , ppOrder = \[ws, l, _, wins] -> [ws, l, wins]
  63. , ppExtras = [logTitles formatFocused formatUnfocused]
  64. }
  65. where
  66. formatFocused = wrap (white "[") (white "]") . magenta . ppWindow
  67. formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue . ppWindow
  68.  
  69. -- | Windows should have *some* title, which should not not exceed a
  70. -- sane length.
  71. ppWindow :: String -> String
  72. ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30
  73.  
  74. blue, lowWhite, magenta, red, white, yellow :: String -> String
  75. magenta = xmobarColor "#ff79c6" ""
  76. blue = xmobarColor "#bd93f9" ""
  77. white = xmobarColor "#f8f8f2" ""
  78. yellow = xmobarColor "#f1fa8c" ""
  79. red = xmobarColor "#ff5555" ""
  80. lowWhite = xmobarColor "#bbbbbb" ""
  81.  
  82. myConfig = def
  83. { modMask = mod4Mask -- Rebind Mod to the Super key
  84. , layoutHook = myLayout -- Use custom layouts
  85. , manageHook = myManageHook -- Match on certain windows
  86. , terminal = myTerminal
  87. }
  88. `additionalKeysP` myKeys
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement