import XMonad import XMonad.Util.Ungrab (unGrab) import XMonad.Layout.ThreeColumns import XMonad.Layout.Magnifier (magnifiercz') import XMonad.Hooks.EwmhDesktops import qualified XMonad.Hooks.ManageDocks as Docks import qualified XMonad.Util.EZConfig as EZ 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 ) myLayout = Docks.avoidStruts (tiled ||| Mirror tiled ||| Full ||| columns) where tiled = Tall nmaster delta ratio columns = ThreeColMid nmaster delta ratio nmaster = 1 -- default number of windows in the master pane ratio = 1/2 -- default proportion occupied by master pane delta = 3/100 -- percent of screen to increment when resizing main :: IO () main = getDirectories >>= launch myConfig myConfig = ewmhFullscreen $ ewmh $ Docks.docks $ def { modMask = mod4Mask -- Use Super instead of Alt , terminal = "alacritty" , layoutHook = myLayout } `EZ.additionalKeysP` [ ("M-S-z", spawn "xscreensaver-command -lock") , ("M-S-r", compileRestart True) , ("M-S-q", restart "xmonad" True) , ("M-C-s", unGrab *> spawn "scrot -s") , ("M-b", sendMessage Docks.ToggleStruts) , ("M-p", spawn appLauncher) , ("M-i", spawn passLauncher) ] where appLauncher = "rofi -show combi -modes combi -combi-modes window,drun,run,ssh" passLauncher = "rofi-pass" -- myManageHook :: ManageHook -- myManageHook = composeAll -- [ className =? "Gimp" --> doFloat -- , isDialog --> doFloat -- ]