aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-06-29 11:52:52 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-06-29 11:52:52 +0200
commit708056676a639f58c508c34fe986d3c73f11488f (patch)
tree7268f0c0f3d7bbb2840732bcd7dd9f4325a2df6f /modules/by-name
parentmodules/river: Use the same keymap for both tiamat and apzu (diff)
downloadnixos-config-708056676a639f58c508c34fe986d3c73f11488f.zip
{modules/river,pkgs/river-mk-keymap}: Support keymap descriptions
That just avoids the visual clutter, caused by the nix store paths.
Diffstat (limited to 'modules/by-name')
-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 "";
};
}