Advertisement
Guest User

click no work

a guest
May 31st, 2021
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.37 KB | None | 0 0
  1. import XMonad
  2.  
  3. -- Layouts
  4.  
  5. import XMonad.Layout.Grid
  6. import XMonad.Layout.NoBorders
  7. import XMonad.Layout.SimpleFloat
  8. import XMonad.Layout.Magnifier
  9. import XMonad.Layout.ThreeColumns
  10. import XMonad.Layout.LayoutModifier
  11. import XMonad.Layout.Spacing
  12. import XMonad.Layout.Renamed
  13.  
  14. -- Hooks
  15.  
  16. import XMonad.Hooks.DynamicLog
  17. import XMonad.Hooks.ManageDocks
  18. import XMonad.Hooks.ManageHelpers
  19. import XMonad.Hooks.StatusBar
  20. import XMonad.Hooks.StatusBar.PP
  21. import XMonad.Hooks.EwmhDesktops
  22.  
  23. -- Utils
  24.  
  25. import XMonad.Util.EZConfig
  26. import XMonad.Util.Loggers
  27. import XMonad.Util.Ungrab
  28. import XMonad.Util.SpawnOnce
  29. import XMonad.Util.NamedScratchpad
  30. import XMonad.Util.ClickableWorkspaces
  31.  
  32. import XMonad.Actions.Promote
  33. import XMonad.Actions.CycleWS
  34.  
  35. import qualified XMonad.StackSet as W
  36.  
  37. import Data.Maybe (fromJust)
  38. import Data.Maybe (isJust)
  39. -- Default Programs
  40.  
  41. myTerminal :: String
  42. myTerminal = "alacritty"
  43.  
  44. myNormColor :: String
  45. myNormColor = "282c34"
  46.  
  47. myFocusColor :: String
  48. myFocusColor = "#46d9ff"
  49.  
  50. main :: IO ()
  51. main = xmonad
  52. . ewmhFullscreen
  53. . ewmh
  54. . dynamicEasySBs barSpawner
  55. $ myConfig
  56.  
  57. xmobar1 = statusBarProp "xmobar -x 0 ~/.config/xmonad/.xmobarrc" (pure myXmobarPP)
  58. xmobar2 = statusBarProp "xmobar -x 1 ~/.config/xmonad/.xmobarrc1" (pure myXmobarPP)
  59.  
  60. barSpawner :: ScreenId -> IO StatusBarConfig
  61. barSpawner 0 = pure (xmobar1) <> trayerSB
  62. barSpawner 1 = pure xmobar2
  63.  
  64. myManageHook :: ManageHook
  65. myManageHook = composeAll
  66. [ className =? "Gimp" --> doFloat
  67. , isDialog --> doFloat
  68. ] <+> namedScratchpadManageHook myScratchPads
  69.  
  70. staticStatusBar cmd = pure $ def { sbStartupHook = spawnStatusBar cmd
  71. , sbCleanupHook = killStatusBar cmd
  72. }
  73.  
  74. trayerSB :: IO StatusBarConfig
  75. trayerSB = staticStatusBar
  76. (unwords
  77. ["trayer"
  78. , "--edge top"
  79. , "--align right"
  80. , "--widthtype request"
  81. , "--expand true"
  82. , "--monitor primary"
  83. , "--transparent true"
  84. , "--alpha 0"
  85. , "--tint 0x282c34"
  86. , "--height 22"
  87. , "--padding 6"
  88. , "--SetDockType true"
  89. , "--SetPartialStrut true"
  90. ]
  91. )
  92.  
  93. myStartupHook :: X()
  94. myStartupHook = do
  95. spawnOnce "picom &"
  96. spawnOnce "nitrogen --restore"
  97. spawnOnce "nm-applet"
  98.  
  99. myScratchPads :: [NamedScratchpad]
  100. myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm ]
  101. where
  102. spawnTerm = myTerminal ++ " -t scratchpad"
  103. findTerm = title =? "scratchpad"
  104. manageTerm = customFloating $ W.RationalRect l t w h
  105. where
  106. h = 0.9
  107. w = 0.9
  108. t = 0.95 -h
  109. l = 0.95 -w
  110.  
  111. --Makes setting the spacingRaw simpler to write. The spacingRaw module adds a configurable amount of space around windows.
  112. mySpacing :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a
  113. mySpacing i = spacingRaw False (Border i i i i) True (Border i i i i) True
  114.  
  115.  
  116. myLayout = smartBorders (tiled ||| Mirror tiled ||| Full ||| threeCol)
  117. where
  118. threeCol = renamed [Replace "Centered"]
  119. $ mySpacing 8
  120. $ magnifiercz' 1.3
  121. $ ThreeColMid nmaster delta ratio
  122. tiled = renamed [Replace "Tiled"]
  123. $ mySpacing 8
  124. $ Tall nmaster delta ratio
  125. nmaster = 1 -- Default number of windows in the master pane
  126. ratio = 1/2 -- Default proportion of screen occupied by master pane
  127. delta = 3/100 -- Percent of screen to increment by when resizing panes
  128.  
  129. myKeys :: [(String, X())]
  130. myKeys =
  131. [ ("M-<Return>", spawn (myTerminal))
  132. , ("M-S-z", spawn "xscreensaver-command -lock")
  133. , ("M-S-=", unGrab *> spawn "scrot -s" )
  134. , ("M-]" , spawn "firefox" )
  135. , ("M-S-<Return>" , spawn "dmenu_run -i -p \"Run: \"")
  136. , ("M-p q", spawn "dmpower")
  137. , ("M-<Backspace>", promote)
  138. , ("M-b", sendMessage ToggleStruts)
  139. , ("M-p d", spawn "dual.sh")
  140. , ("M-p s", spawn "single.sh")
  141. , ("C-s t", namedScratchpadAction myScratchPads "terminal")
  142. , ("M-p c", spawn "picom")
  143. , ("M-p x", spawn "pkill picom")
  144. , ("M-M1-j", decWindowSpacing 4)
  145. , ("M-M1-k", incWindowSpacing 4)
  146. , ("M-M1-h", decScreenSpacing 4)
  147. , ("M-M1-l", incScreenSpacing 4)
  148. ]
  149. -- where nonNSP = WSIs (return (\ws -> W.tag ws /= "NSP"))
  150. -- nonEmptyNonNSP = WSIs (return (\ws -> isJust (W.stack ws) && W.tag ws /= "NSP"))
  151.  
  152. myXmobarPP :: PP
  153. myXmobarPP = clickablePP . filterOutWsPP [scratchpadWorkspaceTag] $ def
  154. { ppSep = magenta " • "
  155. , ppTitleSanitize = xmobarStrip
  156. , ppCurrent = wrap " " "" . xmobarBorder "Top" "#88c0d0" 2
  157. , ppHidden = nordfrost4 . wrap " " ""
  158. , ppHiddenNoWindows = nordfrost1 . wrap " " ""
  159. , ppUrgent = red . wrap (yellow "!") (yellow "!")
  160. , ppOrder = \[ws, l, _, wins] -> [ws, l, wins]
  161. , ppExtras = [logTitles formatFocused formatUnfocused]
  162. }
  163. where
  164. formatFocused = wrap (white "[") (white "]") . magenta . ppWindow
  165. formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue . ppWindow
  166.  
  167. -- | Windows should have *some* title, which should not not exceed a
  168. -- sane length.
  169. ppWindow :: String -> String
  170. ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30
  171.  
  172. blue, lowWhite, magenta, red, white, yellow :: String -> String
  173. magenta = xmobarColor "#ff79c6" ""
  174. blue = xmobarColor "#bd93f9" ""
  175. white = xmobarColor "#f8f8f2" ""
  176. yellow = xmobarColor "#f1fa8c" ""
  177. red = xmobarColor "#ff5555" ""
  178. lowWhite = xmobarColor "#bbbbbb" ""
  179. nordfrost1 = xmobarColor "#8fbcbb" ""
  180. nordfrost3 = xmobarColor "#81a1c1" ""
  181. nordfrost4 = xmobarColor "#5e91ac" ""
  182. nordsnow1 = xmobarColor "#d8dee9" ""
  183. nordsnow2 = xmobarColor "#e5e9f0" ""
  184. nordnight4 = xmobarColor "4c566a" ""
  185.  
  186. myConfig = def
  187. { modMask = mod4Mask -- Rebind Mod to the Super key
  188. , layoutHook = myLayout -- Use custom layouts
  189. , manageHook = myManageHook -- Match on certain windows
  190. , terminal = myTerminal
  191. , startupHook = myStartupHook
  192. , focusedBorderColor = myFocusColor
  193. , normalBorderColor = myNormColor
  194. }
  195. `additionalKeysP` myKeys
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement