/ xmonad / .config / xmonad / xmonad.hs
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" ""