-- My xmonad configuration, based on the example.hs of the xmonad project -- including best practises. -- https://github.com/xmonad/xmonad-contrib/blob/master/XMonad/Config/Example.hs module Main (main) where import XMonad import XMonad.Actions.DynamicProjects import XMonad.Config.Desktop import XMonad.Hooks.DynamicLog --import XMonad.Hooks.EwmhDesktops (ewmh, ewmhFullscreen) import XMonad.Hooks.EwmhDesktops (ewmh) import XMonad.Hooks.ManageHelpers import XMonad.Layout.NoBorders (noBorders, smartBorders, hasBorder, BorderMessage (HasBorder)) import XMonad.Layout.ResizableTile (ResizableTall(..)) import XMonad.Layout.Spacing import XMonad.Layout.ToggleLayouts (toggleLayouts) import XMonad.Util.EZConfig import qualified Nord as N import qualified XMonad.Layout.Spacing as SS (Border(..)) -- Tidy modules import KeyBindings as Keys (modify) import MouseBindings as Mouse (modify) import Projects (modify) import Scratchpad (modify) --------- toggle btw vvvvvvvvvv or vvvvv layouts = toggleLayouts fullscreen tiled where smallBorder = SS.Border 5 5 5 5 fullscreen = noBorders Full tiled = smarts $ resizableTall ||| Mirror resizableTall smarts = spacingRaw True smallBorder True smallBorder True . smartBorders resizableTall = ResizableTall 1 (5/100) (1/2) [] -- Use the `xprop' tool to get the info you need for these matches. -- For className, use the second value that xprop gives you. -------------- Here be the law of windows myManageHook = composeAll [ className =? "Patchage" --> doShift "patchage" , className =? "Pavucontrol" --> doShift "music" , className =? "Pinentry" --> doCenterFloat , className =? "REAPER" --> hasBorder False , className =? "Renoise" --> hasBorder False , className =? "Steam" --> doShift "steam" , className =? "csgo_linux64" --> doShift "steam" , isDialog --> doCenterFloat -- Move transient windows to their parent: , transience' ] ------------ build the full config withConfig = ewmh $ Projects.modify -- Apply projects config $ Keys.modify -- Apply keybindings config $ Mouse.modify -- Apply mouse bindings config $ Scratchpad.modify -- Apply scratchpad managehook config $ desktopConfig -- on a default desktop config { manageHook = myManageHook , layoutHook = desktopLayoutModifiers layouts , terminal = "kitty" , normalBorderColor = N.backgroundhl , focusedBorderColor = N.nord9 , borderWidth = 5 } ------ and pass it to xmonad: main = xmonad withConfig