{ config, lib, pkgs, ... }: with config.lib.niri.actions; let playerctl = spawn "${pkgs.playerctl}/bin/playerctl"; ss = "${toString config.hm.conf.xdg-dirs.mediaPath}/pics/ss/$(date +%Y-%m-%d_%H-%M-%S)"; in { "Mod+O" = { action = toggle-overview; repeat = false; }; "Mod+Slash".action = show-hotkey-overlay; XF86AudioRaiseVolume.action = playerctl "volume" "0.03+"; XF86AudioLowerVolume.action = playerctl "volume" "0.03-"; XF86AudioMute.action = spawn "sh" "-c" '' wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && \ wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle ''; XF86Tools.action = spawn "sh" "-c" '' wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && \ wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle ''; "Mod+WheelScrollDown".action = focus-column-right; "Mod+WheelScrollUp".action = focus-column-left; "Mod+Shift+WheelScrollDown".action = move-column-right; "Mod+Shift+WheelScrollUp".action = move-column-left; "Super+WheelScrollDown".action = focus-workspace-down; "Super+WheelScrollUp".action = focus-workspace-up; "Super+Shift+WheelScrollDown".action = move-window-down-or-to-workspace-down; "Super+Shift+WheelScrollUp".action = move-window-up-or-to-workspace-up; XF86Launch5.action = consume-or-expel-window-right; XF86Launch6.action = consume-or-expel-window-left; XF86Launch7.action = switch-preset-column-width; "Super+Shift+L".action = spawn "swaylock" "-f"; XF86AudioPlay.action = playerctl "play-pause"; XF86AudioPrev.action = playerctl "previous"; XF86AudioNext.action = playerctl "next"; "Mod+Minus".action = set-column-width "-10%"; "Mod+Equal".action = set-column-width "+10%"; "Mod+Shift+Minus".action = set-window-height "-10%"; "Mod+Shift+Equal".action = set-window-height "+10%"; "Mod+Shift+V".action = toggle-window-floating; "Mod+W".action = toggle-column-tabbed-display; "Mod+XF86Launch7" = { action = spawn "sh" "-c" '' grim -g "$(slurp)" - | tee ${ss}.png | wl-copy ''; repeat = false; }; "Mod+Shift+XF86Launch7" = { action = spawn "sh" "-c" '' grim -g "$(slurp)" ${ss}.png satty --filename "${ss}.png" --output-filename "${ss}-edited.png" ''; repeat = false; }; "Mod+Shift+D".action = spawn "sh" "-c" '' cliphist list | fuzzel --dmenu | cliphist decode | wl-copy ''; "Mod+Return".action = spawn "foot"; "Mod+D".action = spawn "fuzzel"; "Mod+C".action = spawn "qalculate-gtk"; "Mod+BracketLeft".action = consume-or-expel-window-left; "Mod+BracketRight".action = consume-or-expel-window-right; "Mod+R".action = switch-preset-column-width; "Mod+Shift+R".action = reset-window-height; "Mod+F".action = maximize-column; "Mod+Shift+F".action = fullscreen-window; "Mod+Comma".action = consume-window-into-column; "Mod+Period".action = expel-window-from-column; "Mod+Shift+E".action = quit; "Mod+H".action = focus-column-left; "Mod+L".action = focus-column-right; "Mod+J".action = focus-workspace-down; "Mod+K".action = focus-workspace-up; "Mod+Shift+H".action = move-column-left; "Mod+Shift+L".action = move-column-right; "Mod+Shift+J".action = move-window-down-or-to-workspace-down; "Mod+Shift+K".action = move-window-up-or-to-workspace-up; "Mod+Shift+Q".action = close-window; "Super+Return".action = spawn "obs-cmd" "replay" "save"; } // (builtins.listToAttrs ( builtins.concatMap ( keyNum: let key = toString keyNum; targetWS = keyNum + 1; in [ { name = "Mod+${key}"; value.action = focus-workspace targetWS; } { name = "Mod+Shift+${key}"; value.action.move-column-to-workspace = [ targetWS ]; } ] ) (lib.range 1 9) ))