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)
  ]
  ++
  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..]))
  
  `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()))
  ]

myKeys conf = M.union (keys def conf) $ myPlaneKeys conf
myPlaneKeys (XConfig {modMask = modm}) = planeKeys modm (Lines 4) Circular

main :: IO ()
main = xmonad . ewmh $ myXConfig