xmonad.hs
1 import XMonad 2 3 import XMonad.Hooks.EwmhDesktops (ewmhFullscreen, ewmh) 4 import XMonad.Hooks.DynamicLog 5 import XMonad.Hooks.StatusBar 6 import XMonad.Hooks.StatusBar.PP 7 import XMonad.Util.Loggers 8 import XMonad.Util.EZConfig (additionalKeysP) 9 import XMonad.Actions.Navigation2D (navigation2DP, windowGo, windowSwap) 10 import XMonad.Layout.Spacing (spacingWithEdge) 11 12 main :: IO () 13 main = xmonad 14 . ewmhFullscreen 15 . ewmh 16 . withEasySB (statusBarProp "xmobar" (pure myXmobarPP)) defToggleStrutsKey 17 $ navigation2DP def 18 ("k", "h", "j", "l") 19 [("M-", windowGo), ("M-S-", windowSwap)] 20 False 21 $ myConfig 22 23 myConfig = def 24 { terminal = "x-terminal-emulator" 25 , borderWidth = 3 26 , focusedBorderColor = "#f7768e" 27 , layoutHook = spacingWithEdge 3 $ myLayoutHook 28 } `additionalKeysP` [ 29 ( "<Print>", spawn "flameshot gui -c -p ~/Pictures/Screenshots") 30 , ("M-p", spawn "j4-dmenu-desktop --dmenu='dmenu -i'") 31 , ("M-<Esc>", spawn "slock") 32 , ("<XF86AudioLowerVolume>", spawn "amixer -q set Master 3%-") 33 , ("<XF86AudioRaiseVolume>", spawn "amixer -q set Master 3%+") 34 , ("<XF86AudioMute>", spawn "amixer -q set Master toggle") 35 , ("<XF86AudioPlay>", spawn "playerctl play-pause") 36 ] 37 38 myLayoutHook = tiled ||| Mirror tiled ||| Full 39 where 40 tiled = Tall nmaster delta ratio 41 nmaster = 1 42 ratio = 1/2 43 delta = 3/100 44 45 myXmobarPP :: PP 46 myXmobarPP = def 47 { ppSep = " • " 48 , ppTitleSanitize = xmobarStrip 49 , ppCurrent = wrap " " "" . xmobarBorder "Top" "#8be9fd" 2 50 , ppHidden = white . wrap " " "" 51 , ppHiddenNoWindows = lowWhite . wrap " " "" 52 , ppUrgent = red . wrap (yellow "!") (yellow "!") 53 , ppOrder = \[ws, l, _, wins] -> [ws, l, wins] 54 , ppExtras = [logTitles formatFocused formatUnfocused] 55 } 56 where 57 formatFocused = wrap (white "[") (white "]") . magenta . ppWindow 58 formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue . ppWindow 59 60 ppWindow :: String -> String 61 ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30 62 63 blue, lowWhite, magenta, red, white, yellow :: String -> String 64 magenta = xmobarColor "#ff79c6" "" 65 blue = xmobarColor "#bd93f9" "" 66 white = xmobarColor "#f8f8f2" "" 67 yellow = xmobarColor "#f1fa8c" "" 68 red = xmobarColor "#ff5555" "" 69 lowWhite = xmobarColor "#bbbbbb" ""