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