import XMonad import XMonad.Util.Ungrab (unGrab) import XMonad.Util.EZConfig (additionalKeys, additionalKeysP) import Control.Monad (when) import Text.Printf (printf) import System.Posix.Process (executeFile) import System.Info (arch,os) import System.Environment (getArgs) import System.FilePath (()) compiledConfig = printf "xmonad-%s-%s" arch os compileRestart resume = do dirs <- asks directories whenX (recompile dirs True) $ do when resume writeStateToFile catchIO ( do args <- getArgs executeFile (cacheDir dirs compiledConfig) False args Nothing ) main :: IO () main = getDirectories >>= launch myConfig myConfig = defaultConfig { modMask = mod4Mask -- Use Super instead of Alt , terminal = "alacritty" } `additionalKeys` [ ( (mod4Mask,xK_r), compileRestart True) , ( (mod4Mask,xK_q), restart "xmonad" True ) ] `additionalKeysP` [ ("M-S-z", spawn "xscreensaver-command -lock") , ("M-C-s", unGrab *> spawn "scrot -s" ) , ("M-f" , spawn "firefox" ) ] -- myManageHook :: ManageHook -- myManageHook = composeAll -- [ className =? "Gimp" --> doFloat -- , isDialog --> doFloat -- ] -- main = xmonad -- . ewmhFullscreen -- . ewmh -- . withEasySB (statusBarProp "xmobar" (pure myXmobarPP)) defToggleStrutsKey -- $ myConfig -- myXmobarPP :: PP -- myXmobarPP = def -- { ppSep = magenta " • " -- , ppTitleSanitize = xmobarStrip -- , ppCurrent = wrap " " "" . xmobarBorder "Top" "#8be9fd" 2 -- , ppHidden = white . wrap " " "" -- , ppHiddenNoWindows = lowWhite . wrap " " "" -- , ppUrgent = red . wrap (yellow "!") (yellow "!") -- , ppOrder = \[ws, l, _, wins] -> [ws, l, wins] -- , ppExtras = [logTitles formatFocused formatUnfocused] -- } -- where -- formatFocused = wrap (white "[") (white "]") . magenta . ppWindow -- formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue . ppWindow -- -- | Windows should have *some* title, which should not not exceed a -- -- sane length. -- ppWindow :: String -> String -- ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30 -- blue, lowWhite, magenta, red, white, yellow :: String -> String -- magenta = xmobarColor "#ff79c6" "" -- blue = xmobarColor "#bd93f9" "" -- white = xmobarColor "#f8f8f2" "" -- yellow = xmobarColor "#f1fa8c" "" -- red = xmobarColor "#ff5555" "" -- lowWhite = xmobarColor "#bbbbbb" ""