Advertisement
Guest User

jg dynamicSB attempt

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