-- $Id: xmonad.hs,v 1.5 2024/09/20 13:07:33 oc45ujef Exp oc45ujef $ import XMonad import qualified XMonad.StackSet as W import XMonad.Util.EZConfig (additionalKeysP) import XMonad.Hooks.DynamicLog import XMonad.Util.Run (spawnPipe) import XMonad.Util.SpawnOnce import System.IO (hPutStrLn) import XMonad.Hooks.ManageDocks (avoidStruts, manageDocks, docks) import XMonad.Layout.ResizableTile import XMonad.Hooks.StatusBar import XMonad.Hooks.StatusBar.PP main :: IO () main = xmonad . withSB sb . docks $ def { modMask = mod4Mask , focusedBorderColor = "#189b6d" , borderWidth = 2 , layoutHook = layout , startupHook = startup , manageHook = mHook } `additionalKeysP` [ ("M-w", kill) , ("M-", spawn "kitty") , ("M--", spawn "kitty --name foo") , ("M-r", windows W.swapMaster) , ("M-e", spawn "/proj/ciptmp/oc45ujef/emacs/lib-src/emacsclient -c") , ("M-f", spawn "firefox") , ("", spawn "xlock") , ("", spawn "firefox 'https://wwwcip.cs.fau.de/~oc45ujef'") , ("" , spawn "scrot -s ~/Pictures/Screenshots/%Y-%m-%d-%T-screenshot.png") ] sb = statusBarProp "xmobar $HOME/.xmonad/xmobar.hs" (pure def {ppLayout = const mempty, ppTitle = const mempty}) layout = avoidStruts (tiled ||| Full) where tiled = ResizableTall 1 (2/50) (1/2) [] startup = spawn "setxkbmap eu -option 'ctrl:nocaps'" >> spawnOnce "$HOME/.fehbg" mHook = manageDocks <> ((stringProperty "WM_WINDOW_ROLE" =? "gimp-toolbox-color-dialog") --> doFloat) <> ((stringProperty "WM_WINDOW_ROLE" =? "alert") --> doFloat) <> ((appName =? "xclock") --> doFloat)