dotfiles/dotfiles/xmonad/xmonad.hs

67 lines
2.4 KiB
Haskell

import System.Taffybar.Hooks.PagerHints (pagerHints)
import XMonad hiding ( (|||) )
import XMonad.Actions.WindowBringer
import XMonad.Config ()
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.FadeInactive
import XMonad.Layout.BoringWindows
import XMonad.Layout.LayoutCombinators
import XMonad.Layout.Minimize
import XMonad.Layout.MultiColumns
import XMonad.Layout.MultiToggle
import XMonad.Layout.MultiToggle.Instances
import XMonad.Layout.NoBorders
import XMonad.Layout.Spacing
import qualified XMonad.StackSet as W
import XMonad.Util.CustomKeys
main = xmonad $ ewmh $ pagerHints def
{ modMask = mod4Mask
, terminal = "urxvt"
, manageHook = manageDocks <+> manageHook def
, layoutHook = myLayoutHook
, logHook = myLogHook
, handleEventHook = docksEventHook <+> fullscreenEventHook
, startupHook = myStartup
, keys = customKeys (\x -> []) addKeys
}
myLogHook :: X()
myLogHook = fadeInactiveLogHook 0.9
shiftThenView i = W.greedyView i . W.shift i
addKeys conf@XConfig {modMask = modm} =
[ ((modm, xK_p), spawn "rofi -show drun")
, ((modm .|. shiftMask, xK_p), spawn "rofi -show run")
, ((modm, xK_g), spawn "rofi -show window")
, ((modm .|. controlMask, xK_t), spawn "systemctl --user restart taffybar.service")
-- TODO: Change this to bringing the window to the current workspace
, ((modm, xK_b), bringMenuArgs' "rofi" ["-dmenu"])
, ((modm, xK_v), spawn "copyq paste")
, ((mod3Mask, xK_v), spawn "copyq_rofi.sh")
, ((modm .|. controlMask, xK_space), sendMessage $ JumpToLayout "Full")
, ((modm, xK_slash), sendMessage $ Toggle MIRROR)
, ((modm, xK_m), withFocused minimizeWindow)
, ((modm .|. shiftMask, xK_m), sendMessage RestoreNextMinimizedWin)
] ++
-- Replace original moving stuff around + greedy view bindings
[((additionalMask .|. modm, key), windows $ function workspace)
| (workspace, key) <- zip (workspaces conf) [xK_1 .. xK_9]
, (function, additionalMask) <-
[ (W.greedyView, 0)
, (W.shift, shiftMask)
, (shiftThenView, controlMask)]]
layouts = tiled ||| Full ||| multiCol [1, 1] 2 0.01 (-0.5)
where
tiled = Tall 1 (3/100) (1/2)
myLayoutHook = avoidStruts . smartSpacing 10 . noBorders . minimize
. boringWindows . mkToggle (MIRROR ?? EOT) $ layouts
myStartup = do
spawn "systemctl --user start wm.target"