import XMonad import XMonad.Util.EZConfig (additionalKeys) 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 myConfig = defaultConfig { modMask = mod1Mask , terminal = "alacritty" } `additionalKeys` [ ( (mod1Mask, xK_r), compileRestart True) , ( (mod1Mask, xK_q), restart "xmonad" True ) ] 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 = getDirectories >>= launch myConfig