summaryrefslogtreecommitdiff
path: root/modules/xmonad.hs
diff options
context:
space:
mode:
Diffstat (limited to 'modules/xmonad.hs')
-rw-r--r--modules/xmonad.hs29
1 files changed, 29 insertions, 0 deletions
diff --git a/modules/xmonad.hs b/modules/xmonad.hs
new file mode 100644
index 0000000..1df21b5
--- /dev/null
+++ b/modules/xmonad.hs
@@ -0,0 +1,29 @@
+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