From 00a9fb7587b76b3f86c6515d6bea138a78eac096 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Sun, 29 Jun 2025 10:59:57 +0200 Subject: modules/river: Use the same keymap for both tiamat and apzu This avoids bit-rot in apzu's key mappings and maybe helps me to actually learn all the possible key mappings. --- modules/by-name/ri/river/keymap.nix | 127 ++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 modules/by-name/ri/river/keymap.nix (limited to 'modules/by-name/ri/river/keymap.nix') diff --git a/modules/by-name/ri/river/keymap.nix b/modules/by-name/ri/river/keymap.nix new file mode 100644 index 00000000..420db61a --- /dev/null +++ b/modules/by-name/ri/river/keymap.nix @@ -0,0 +1,127 @@ +{ + lib, + pkgs, + libraries, + config, + ... +}: let + index2tag = input: builtins.toString (libraries.base.pow 2 (input - 1)); + + mkCommand = name: index: [name (index2tag index)]; + + cfg = config.soispha.programs.river; +in { + soispha.programs.river.init.mappings.keymap = lib.mkIf cfg.enable { + "" = { + # Change focus + "f" = { + "t" = ["focus-view" "next"]; + "n" = ["focus-view" "previous"]; + "" = ["focus-output" "next"]; + "" = ["focus-output" "previous"]; + }; + + # Spawn standard programs + "r" = { + "a" = ["spawn" "${lib.getExe pkgs.alacritty}"]; + "b" = ["spawn" "${lib.getExe pkgs.tskm} open select"]; + "k" = ["spawn" "${lib.getExe pkgs.keepassxc}"]; + "s" = ["spawn" "${lib.getExe pkgs.signal-desktop}"]; + "p" = ["spawn" "${lib.getExe pkgs.screenshot_persistent}"]; + }; + + # Client changes + "c" = { + "f" = ["toggle-fullscreen"]; + "c" = ["close"]; + "" = ["toggle-float"]; + "" = ["zoom"]; + "o" = ["send-to-output" "next"]; + "t" = ["swap" "next"]; + "n" = ["swap" "previous"]; + }; + + # River compositor control. + "x" = { + "q" = ["exit"]; + "l" = ["spawn" "${lib.getExe pkgs.lock}"]; + }; + + # Media control + "m" = { + "r" = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%+"]; + "l" = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%-"]; + "m" = ["spawn" "${lib.getExe pkgs.mpp} toggle"]; + }; + + # Select tags to view. + "v" = { + "0" = ["set-view-tags" (builtins.toString ((libraries.base.pow 2 32) - 1))]; + "p" = ["send-to-previous-tags"]; + + "1" = mkCommand "set-view-tags" 1; + "2" = mkCommand "set-view-tags" 2; + "3" = mkCommand "set-view-tags" 3; + "4" = mkCommand "set-view-tags" 4; + "5" = mkCommand "set-view-tags" 5; + "6" = mkCommand "set-view-tags" 6; + "7" = mkCommand "set-view-tags" 7; + "8" = mkCommand "set-view-tags" 8; + "9" = mkCommand "set-view-tags" 9; + + # Add tags to view. + "a" = { + "1" = mkCommand "toggle-view-tags" 1; + "2" = mkCommand "toggle-view-tags" 2; + "3" = mkCommand "toggle-view-tags" 3; + "4" = mkCommand "toggle-view-tags" 4; + "5" = mkCommand "toggle-view-tags" 5; + "6" = mkCommand "toggle-view-tags" 6; + "7" = mkCommand "toggle-view-tags" 7; + "8" = mkCommand "toggle-view-tags" 8; + "9" = mkCommand "toggle-view-tags" 9; + }; + }; + + # Select tags to focus. + "f" = { + "0" = ["set-focused-tags" (builtins.toString ((libraries.base.pow 2 32) - 1))]; + "p" = ["focus-previous-tags"]; + + "1" = mkCommand "set-focused-tags" 1; + "2" = mkCommand "set-focused-tags" 2; + "3" = mkCommand "set-focused-tags" 3; + "4" = mkCommand "set-focused-tags" 4; + "5" = mkCommand "set-focused-tags" 5; + "6" = mkCommand "set-focused-tags" 6; + "7" = mkCommand "set-focused-tags" 7; + "8" = mkCommand "set-focused-tags" 8; + "9" = mkCommand "set-focused-tags" 9; + }; + }; + + # Audio + "" = { + command = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%+"]; + allow_locked = true; + }; + "" = { + command = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%-"]; + allow_locked = true; + }; + "" = { + command = ["spawn" "${lib.getExe pkgs.mpp} toggle"]; + allow_locked = true; + }; + + # Mouse + ">" = ["move-view"]; + ">" = ["resize-view"]; + + # Lock screen. + "" = ["spawn" "${lib.getExe pkgs.lock}"]; + + # Screenshot + "" = ["spawn" "${lib.getExe pkgs.screenshot_persistent}"]; + }; +} -- cgit 1.4.1