diff --git a/etc/xmonad.hs b/etc/xmonad.hs new file mode 100644 index 0000000..1422e76 --- /dev/null +++ b/etc/xmonad.hs @@ -0,0 +1,67 @@ +import XMonad +import XMonad.Actions.CopyWindow +import XMonad.Actions.GridSelect +import XMonad.Hooks.SetWMName +import XMonad.Util.EZConfig + +import qualified XMonad.StackSet as W + +main = xmonad $ defaultConfig + { terminal = "kitty" + , borderWidth = 0 + , modMask = mod4Mask + , startupHook = startup + , manageHook = windowManage + , workspaces = [ "1:emacs", "2:web", "3", "4", "5", "6", "7", "8", "9" ] + } `additionalKeysP` keysP + +startup = do + setWMName "LG3D" + spawn "xrandr --auto && xrandr --output DP-1.3 --above DP-2" + spawn "xsetroot -solid '#000000'" + spawn "xinput --disable $(xinput | grep -o 'Synaptics TouchPad.*id=[0-9]*' | cut -d '=' -f 2)" + spawn "xinput --set-prop 15 'Device Accel Constant Deceleration' 0.20" + spawn "xhost +local" + +windowManage = composeAll + [ className =? "Emacs" --> doShift "1:emacs" + + , role =? "browser" --> doShift "2:web" + + , role =? "gimp- layer-new" --> doFloat + , role =? "gimp- color-selector" --> doFloat + , role =? "gimp- dock" --> doF W.focusDown + , role =? "gimp- toolbox" --> doF W.focusDown + , role =? "toolbox_window" --> doF W.focusDown + + , className =? "Dunst" --> doF W.focusDown <+> doF copyToAll + ] + where + role = stringProperty "WM_WINDOW_ROLE" + command = stringProperty "WM_COMMAND" + +notifySend :: Integer -> String -> X () +notifySend expireTime shellCommand = spawn + $ "DISPLAY=:0 notify-send -t " ++ show expireTime + ++ " -h string:bgcolor:#000000 " + ++ " \"$(" ++ shellCommand ++ ")\"" + +-- M - modMask, M1 - Alt, C - Control, S - Shift. Use xev. +keysP = [ ("M-l", spawn "i3lock -n -c 000000") + , ("", spawn "escrotum -Cs") + , ("", spawn "sudo light -A 3") + , ("", spawn "sudo light -U 3") + , ("", spawn "pulsemixer --toggle-mute") + , ("", spawn "pulsemixer --change-volume -3") + , ("", spawn "pulsemixer --change-volume +3") + , ("M-d", notifySend 3000 "date") + , ("M-p", spawn "rofi -theme android_notification -font 'Ubuntu Mono 30' -show run") + , ("M-g", goToSelected defaultGSConfig) + , ("M-s", spawn "kitty") + , ("M-b", notifySend 1000 "acpi -b") + ] + ++ + [ (mask ++ "M-" ++ [key], screenWorkspace scr >>= flip whenJust (windows . action)) + | (key, scr) <- zip "wer" [1,0,0] -- was [0..] *** change to match your screen order *** + , (action, mask) <- [ (W.view, "") , (W.shift, "S-")] + ] diff --git a/home-manager.nix b/home-manager.nix index eb2d55d..8832127 100644 --- a/home-manager.nix +++ b/home-manager.nix @@ -21,5 +21,8 @@ in { }; }; - home-manager.users.user.home.file.".emacs.d/init.el".source = ./etc/emacs.el; + home-manager.users.user.home.file = { + ".emacs.d/init.el".source = ./etc/emacs.el; + ".xmonad/xmonad.hs".source = ./etc/xmonad.hs; + }; }