diff --git a/modules/wm/xmonad/config.hs b/modules/wm/xmonad/config.hs index 0287136..7fc4d74 100644 --- a/modules/wm/xmonad/config.hs +++ b/modules/wm/xmonad/config.hs @@ -1,44 +1,39 @@ import XMonad +import XMonad.Actions.CycleWS qualified as WS import XMonad.Actions.Navigation2D (navigation2DP, windowGo, windowSwap) -import qualified XMonad.Actions.CycleWS as WS -import XMonad.Util.Ungrab (unGrab) -import XMonad.Layout.ThreeColumns -import XMonad.Layout.ToggleLayouts (ToggleLayout(..), toggleLayouts) +import XMonad.Hooks.EwmhDesktops +import XMonad.Hooks.ManageDocks qualified as Docks +import XMonad.Hooks.SetWMName import XMonad.Layout.BinarySpacePartition import XMonad.Layout.BorderResize (borderResize) -import XMonad.Hooks.EwmhDesktops -import XMonad.Hooks.SetWMName -import qualified XMonad.Hooks.ManageDocks as Docks -import qualified XMonad.Util.EZConfig as EZ +import XMonad.Layout.ThreeColumns +import XMonad.Layout.ToggleLayouts (ToggleLayout (..), toggleLayouts) +import XMonad.Util.EZConfig qualified as EZ +import XMonad.Util.Ungrab (unGrab) -import Numeric.Natural import Control.Monad (when) -import Text.Printf (printf) -import System.Posix.Process (executeFile) -import System.Info (arch,os) +import Numeric.Natural import System.Environment (getArgs) import System.FilePath (()) +import System.Info (arch, os) +import System.Posix.Process (executeFile) +import Text.Printf (printf) 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 - ) + dirs <- asks directories + whenX (recompile dirs True) $ do + when resume writeStateToFile + catchIO + ( do + args <- getArgs + executeFile (cacheDir dirs compiledConfig) False args Nothing + ) -myLayout = borderResize $ Docks.avoidStruts $ layout +myLayout = borderResize $ Docks.avoidStruts layout where - layout = (emptyBSP ||| columns ||| tiled ||| Full) - 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 + layout = emptyBSP ||| Full main :: IO () main = getDirectories >>= launch myConfig @@ -48,66 +43,67 @@ main = getDirectories >>= launch myConfig windowMoveSplit :: Direction2D -> Bool -> X () windowMoveSplit direction _ = sendMessage $ MoveSplit direction -data VolumeCommand = ToggleVolume - | LowerVolume Natural - | RaiseVolume Natural +data VolumeCommand + = ToggleVolume + | LowerVolume Natural + | RaiseVolume Natural interpretVolumeCommand :: VolumeCommand -> String interpretVolumeCommand command = "amixer -q set Master " <> cmd where cmd = case command of - ToggleVolume -> "toggle" - LowerVolume delta -> show delta <> "%-" - RaiseVolume delta -> show delta <> "%+" + ToggleVolume -> "toggle" + LowerVolume delta -> show delta <> "%-" + RaiseVolume delta -> show delta <> "%+" changeVolume :: VolumeCommand -> X () changeVolume = spawn . interpretVolumeCommand -myConfig = ewmhFullscreen $ ewmh $ Docks.docks $ nav $ def - { modMask = mod4Mask -- Use Super instead of Alt - , terminal = "alacritty" - , layoutHook = myLayout - -- this seems to be necessary to make java gui applications work :( - , startupHook = ewmhDesktopsStartup >> setWMName "LG3D" - } - `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-f", sendMessage (Toggle "Full")) - , ("M-p", spawn appLauncher) - , ("M-i", spawn passLauncher) - , ("M-w", kill) - , ("M-l", WS.toggleWS) - , ("M-g", WS.prevWS) - , ("M-r", WS.nextWS) +myConfig = + ewmhFullscreen $ + ewmh $ + Docks.docks $ + nav $ + def + { modMask = mod4Mask -- Use Super instead of Alt + , terminal = "alacritty" + , layoutHook = myLayout + , -- this seems to be necessary to make java gui applications work :( + startupHook = ewmhDesktopsStartup >> setWMName "LG3D" + } + `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-f", sendMessage (Toggle "Full")) + , ("M-p", spawn appLauncher) + , ("M-i", spawn passLauncher) + , ("M-w", kill) + , ("M-l", WS.toggleWS) + , ("M-g", WS.prevWS) + , ("M-r", WS.nextWS) + , -- backlight control - -- backlight control + ("", spawn "xbacklight -dec 5") + , ("", spawn "xbacklight -inc 5") + , ("", spawn "xbacklight -dec 5") + , ("", spawn "xbacklight -inc 5") + , -- volume control - , ("", spawn "xbacklight -dec 5") - , ("", spawn "xbacklight -inc 5") - , ("", spawn "xbacklight -dec 5") - , ("", spawn "xbacklight -inc 5") - - -- volume control - - , ("", changeVolume ToggleVolume) - , ("", changeVolume $ LowerVolume 5) - , ("", changeVolume $ RaiseVolume 5) - - , ("M-a", sendMessage Balance) - , ("M-S-a", sendMessage Equalize) - , ("M-o", sendMessage Rotate) - ] + ("", changeVolume ToggleVolume) + , ("", changeVolume $ LowerVolume 5) + , ("", changeVolume $ RaiseVolume 5) + , ("M-a", sendMessage Balance) + , ("M-S-a", sendMessage Equalize) + , ("M-o", sendMessage Rotate) + ] where -- navigate using dvorak bindings nav = navigation2DP def ("c", "h", "t", "n") [("M-", windowGo), ("M-C-", windowSwap), ("M-S-", windowMoveSplit)] True appLauncher = "rofi -show combi -modes combi -combi-modes window,drun,run,ssh" passLauncher = "rofi-pass" - -- myManageHook :: ManageHook -- myManageHook = composeAll -- [ className =? "Gimp" --> doFloat