Advertisement
Guest User

jg dual

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