Untitled
🧩 Syntax:
import Data.List
import Data.Map as M (union)
import System.Exit
import System.IO
import XMonad
import XMonad.Actions.CopyWindow(copy)
import XMonad.Actions.CycleWS
import XMonad.Actions.DynamicWorkspaces
import XMonad.Actions.NoBorders
import XMonad.Actions.Plane
import XMonad.Actions.UpdatePointer
import XMonad.Hooks.EwmhDesktops
import XMonad.Layout.MultiColumns
import XMonad.Layout.NoBorders
import XMonad.Layout.PerScreen
import XMonad.Prompt as P
import XMonad.Prompt.FuzzyMatch
import XMonad.Prompt.RunOrRaise
import XMonad.Util.Cursor
import XMonad.Util.EZConfig
import qualified XMonad.Prompt.Window as W
import qualified XMonad.StackSet as S
myLayout = ifWider 1080 (tiled ||| noBorders Full) $ Mirror (multiCol [1] 1 0.01 (-0.5)) ||| noBorders Full
where
tiled = Tall nmaster delta ratio
nmaster = 1
delta = 3/100
ratio = 1/2
myStartupHook :: X ()
myStartupHook = do
setDefaultCursor xC_left_ptr
myXPConfig :: XPConfig
myXPConfig =
def {
P.position = P.Bottom
, P.font = "xft:LiberationMono-Regular:size=11"
, P.height = 40
, searchPredicate = fuzzyMatch
, sorter = fuzzySort
}
myXConfig =
def {
layoutHook = myLayout
, focusedBorderColor="#a6a6a6"
, logHook = updatePointer (0.5, 0.5) (0, 0)
, normalBorderColor="#474747"
, modMask = mod4Mask
, startupHook = myStartupHook
, terminal = "kitty"
, keys = myKeys
}
`additionalKeys` [
((mod4Mask, xK_z), spawn "bash -i -c 'maim-active'")
, ((mod4Mask .|. controlMask, xK_z), spawn "bash -i -c 'maim-select'")
, ((mod4Mask, xK_s), W.windowPrompt myXPConfig W.Goto W.allWindows)
, ((mod4Mask, xK_r), runOrRaisePrompt myXPConfig)
, ((mod4Mask, xK_p), toggleWS)
, ((mod4Mask, xK_b), withFocused toggleBorder)
]
`additionalMouseBindings` [
((mod4Mask, button4), \w -> planeMove (Lines 4) Circular ToRight)
, ((mod4Mask, button5), \w -> planeMove (Lines 4) Circular ToLeft)
, ((mod4Mask .|. mod1Mask, button4), \w -> catchX (planeMove (Lines 4) Circular ToUp) (return()))
, ((mod4Mask .|. mod1Mask, button5), \w -> catchX (planeMove (Lines 4) Circular ToDown) (return()))
]
++
zip (zip (repeat (mod4Mask .|. controlMask)) [xK_1..xK_9]) (map (setWorkspaceIndex) [1..])
++
zip (zip (repeat (mod4Mask)) [xK_1..xK_9]) (map (withWorkspaceIndex S.greedyView) [1..])
myKeys conf = M.union (keys def conf) $ myPlaneKeys conf
myPlaneKeys (XConfig {modMask = modm}) = planeKeys modm (Lines 4) Circular
main :: IO ()
main = xmonad . ewmh $ myXConfig