about summary refs log tree commit diff stats
path: root/modules/by-name/ri/river
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/by-name/ri/river/keymap.nix93
1 files changed, 51 insertions, 42 deletions
diff --git a/modules/by-name/ri/river/keymap.nix b/modules/by-name/ri/river/keymap.nix
index 420db61a..a80534a7 100644
--- a/modules/by-name/ri/river/keymap.nix
+++ b/modules/by-name/ri/river/keymap.nix
@@ -7,7 +7,16 @@
 }: let
   index2tag = input: builtins.toString (libraries.base.pow 2 (input - 1));
 
-  mkCommand = name: index: [name (index2tag index)];
+  mkTagCommand = name: index: [name (index2tag index)];
+  mkSpawn' = pkg: binaryName: args: {
+    command = [
+      "spawn"
+      "${lib.getExe' pkgs binaryName} ${args}"
+    ];
+
+    description = "${binaryName} ${args}";
+  };
+  mkSpawn = pkg: args: (mkSpawn' pkg pkg.meta.mainProgram args);
 
   cfg = config.soispha.programs.river;
 in {
@@ -23,11 +32,11 @@ in {
 
       # 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}"];
+        "a" = mkSpawn pkgs.alacritty "";
+        "b" = mkSpawn pkgs.tskm "open select";
+        "k" = mkSpawn pkgs.keepassxc "";
+        "s" = mkSpawn pkgs.signal-desktop "";
+        "p" = mkSpawn pkgs.screenshot_persistent "";
       };
 
       # Client changes
@@ -44,14 +53,14 @@ in {
       # River compositor control.
       "x" = {
         "q" = ["exit"];
-        "l" = ["spawn" "${lib.getExe pkgs.lock}"];
+        "l" = mkSpawn 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"];
+        "r" = mkSpawn' pkgs.wireplumber "wpctl" "set-volume @DEFAULT_SINK@ 5%+";
+        "l" = mkSpawn' pkgs.wireplumber "wpctl" "set-volume @DEFAULT_SINK@ 5%-";
+        "m" = mkSpawn pkgs.mpp "toggle";
       };
 
       # Select tags to view.
@@ -59,27 +68,27 @@ in {
         "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;
+        "1" = mkTagCommand "set-view-tags" 1;
+        "2" = mkTagCommand "set-view-tags" 2;
+        "3" = mkTagCommand "set-view-tags" 3;
+        "4" = mkTagCommand "set-view-tags" 4;
+        "5" = mkTagCommand "set-view-tags" 5;
+        "6" = mkTagCommand "set-view-tags" 6;
+        "7" = mkTagCommand "set-view-tags" 7;
+        "8" = mkTagCommand "set-view-tags" 8;
+        "9" = mkTagCommand "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;
+          "1" = mkTagCommand "toggle-view-tags" 1;
+          "2" = mkTagCommand "toggle-view-tags" 2;
+          "3" = mkTagCommand "toggle-view-tags" 3;
+          "4" = mkTagCommand "toggle-view-tags" 4;
+          "5" = mkTagCommand "toggle-view-tags" 5;
+          "6" = mkTagCommand "toggle-view-tags" 6;
+          "7" = mkTagCommand "toggle-view-tags" 7;
+          "8" = mkTagCommand "toggle-view-tags" 8;
+          "9" = mkTagCommand "toggle-view-tags" 9;
         };
       };
 
@@ -88,29 +97,29 @@ in {
         "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;
+        "1" = mkTagCommand "set-focused-tags" 1;
+        "2" = mkTagCommand "set-focused-tags" 2;
+        "3" = mkTagCommand "set-focused-tags" 3;
+        "4" = mkTagCommand "set-focused-tags" 4;
+        "5" = mkTagCommand "set-focused-tags" 5;
+        "6" = mkTagCommand "set-focused-tags" 6;
+        "7" = mkTagCommand "set-focused-tags" 7;
+        "8" = mkTagCommand "set-focused-tags" 8;
+        "9" = mkTagCommand "set-focused-tags" 9;
       };
     };
 
     # Audio
     "<MEDIA_RAISEVOLUME>" = {
-      command = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%+"];
+      command = mkSpawn' pkgs.wireplumber "wpctl" "set-volume @DEFAULT_SINK@ 5%+";
       allow_locked = true;
     };
     "<MEDIA_LOWERVOLUME>" = {
-      command = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%-"];
+      command = mkSpawn' pkgs.wireplumber "wpctl" "set-volume @DEFAULT_SINK@ 5%-";
       allow_locked = true;
     };
     "<MEDIA_MUTEVOLUME>" = {
-      command = ["spawn" "${lib.getExe pkgs.mpp} toggle"];
+      command = mkSpawn pkgs.mpp "toggle";
       allow_locked = true;
     };
 
@@ -119,9 +128,9 @@ in {
     "<Meta-<MOUSE_RIGHT>>" = ["resize-view"];
 
     # Lock screen.
-    "<Meta-L>" = ["spawn" "${lib.getExe pkgs.lock}"];
+    "<Meta-L>" = mkSpawn pkgs.lock "";
 
     # Screenshot
-    "<PRINTSCREEN>" = ["spawn" "${lib.getExe pkgs.screenshot_persistent}"];
+    "<PRINTSCREEN>" = mkSpawn pkgs.screenshot_persistent "";
   };
 }