about summary refs log tree commit diff stats
path: root/modules/by-name
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xmodules/by-name/ri/river/init_base.sh5
-rw-r--r--modules/by-name/ri/river/keymap.nix247
-rwxr-xr-xmodules/by-name/ri/river/river-start/river-start.sh3
3 files changed, 131 insertions, 124 deletions
diff --git a/modules/by-name/ri/river/init_base.sh b/modules/by-name/ri/river/init_base.sh
index b68d147b..edd7827f 100755
--- a/modules/by-name/ri/river/init_base.sh
+++ b/modules/by-name/ri/river/init_base.sh
@@ -10,8 +10,9 @@
 # You should have received a copy of the License along with this program.
 # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
 
-# NOTE: Keep this in sync with the file from `river-start` <2025-02-03>
-RIVER_LOG_FILE="$HOME/.cache/river/log"
+RIVER_LOG_FILE="$HOME/.cache/river/init-log"
+
+echo >"$RIVER_LOG_FILE"
 
 err_fail() {
     if ! "$@"; then
diff --git a/modules/by-name/ri/river/keymap.nix b/modules/by-name/ri/river/keymap.nix
index d1266576..fd911f69 100644
--- a/modules/by-name/ri/river/keymap.nix
+++ b/modules/by-name/ri/river/keymap.nix
@@ -9,135 +9,142 @@
 
   mkTagCommand = name: index: [name (index2tag index)];
   mkSpawn' = pkg: binaryName: args: further: (further
-    // {
+    // (let
+      maybeSpace =
+        if args == ""
+        then ""
+        else " ";
+    in {
       command = [
         "spawn"
-        "${lib.getExe' pkg binaryName} ${args}"
+        "${lib.getExe' pkg binaryName}${maybeSpace}${args}"
       ];
 
-      description = "${binaryName} ${args}";
-    });
+      description = "${binaryName}${maybeSpace}${args}";
+    }));
 
   mkSpawn = pkg: args: further: (mkSpawn' pkg pkg.meta.mainProgram args further);
 
   cfg = config.soispha.programs.river;
-
-  coreKeymap = {
-    # Change focus
-    "f" = {
-      "t" = ["focus-view" "next"];
-      "n" = ["focus-view" "previous"];
-      "T" = ["focus-output" "next"];
-      "N" = ["focus-output" "previous"];
-    };
-
-    # Spawn standard programs
-    "r" = {
-      "a" = mkSpawn pkgs.alacritty "" {};
-      "b" = mkSpawn pkgs.tskm "open select" {once = true;};
-      "k" = mkSpawn pkgs.keepassxc "" {once = true;};
-      "s" = mkSpawn pkgs.signal-desktop "" {once = true;};
-      "p" = mkSpawn pkgs.screenshot_persistent "" {once = true;};
-    };
-
-    # Client changes
-    "c" = {
-      "f" = ["toggle-fullscreen"];
-      "c" = ["close"];
-      " " = ["toggle-float"];
-      "<ENTER>" = ["zoom"];
-      "o" = ["send-to-output" "next"];
-      "t" = ["swap" "next"];
-      "n" = ["swap" "previous"];
-    };
-
-    # This is a fill in for <Super-L>, as that is otherwise impossible to input.
-    "l" = coreKeymap.x.l;
-
-    # River compositor control.
-    "x" = {
-      "q" = ["exit"];
-      "l" = mkSpawn pkgs.lock "" {once = true;};
-    };
-
-    # Media control
-    "m" = {
-      "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.
-    "v" = {
-      "0" = ["set-view-tags" (builtins.toString ((libraries.base.pow 2 32) - 1))];
-      "p" = ["send-to-previous-tags"];
-
-      "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" = 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;
-      };
-    };
-
-    # Select tags to focus.
-    "f" = {
-      "0" = ["set-focused-tags" (builtins.toString ((libraries.base.pow 2 32) - 1))];
-      "p" = ["focus-previous-tags"];
-
-      "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;
-    };
-  };
 in {
-  soispha.programs.river.init.mappings.keymap = lib.mkIf cfg.enable {
-    "<LEFT_SUPER>" = coreKeymap;
-
-    # Audio
-    "<MEDIA_RAISEVOLUME>" =
-      coreKeymap.m.r
-      // {
-        allow_locked = true;
-      };
-    "<MEDIA_LOWERVOLUME>" =
-      coreKeymap.m.l
-      // {
-        allow_locked = true;
+  soispha.programs.river.init.mappings.keymap = lib.mkIf cfg.enable (lib.fixedPoints.fix
+    (self: {
+      "<LEFT_SUPER>" = {
+        # Change focus
+        "f" = {
+          "t" = ["focus-view" "next"];
+          "n" = ["focus-view" "previous"];
+          "T" = ["focus-output" "next"];
+          "N" = ["focus-output" "previous"];
+        };
+
+        # Spawn standard programs
+        "r" = {
+          "a" = mkSpawn pkgs.alacritty "" {};
+          "b" = mkSpawn pkgs.tskm "open select" {once = true;};
+          "k" = mkSpawn pkgs.keepassxc "" {once = true;};
+          "s" = mkSpawn pkgs.signal-desktop "" {once = true;};
+          "p" = mkSpawn pkgs.screenshot_persistent "" {once = true;};
+        };
+
+        # Client changes
+        "c" = {
+          "f" = ["toggle-fullscreen"];
+          "c" = ["close"];
+          " " = ["toggle-float"];
+          "<ENTER>" = ["zoom"];
+          "o" = ["send-to-output" "next"];
+          "t" = ["swap" "next"];
+          "n" = ["swap" "previous"];
+        };
+
+        # This is a fill in for <Super-L>, as that is otherwise nearly impossible to input.
+        "l" = self."<LEFT_SUPER>".x.l;
+
+        # River compositor control.
+        "x" = {
+          "q" = ["exit"];
+          "l" = mkSpawn pkgs.lock "" {once = true;};
+        };
+
+        # Media control
+        "m" = {
+          "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.
+        "v" = {
+          "0" = ["set-view-tags" (builtins.toString ((libraries.base.pow 2 32) - 1))];
+          "p" = ["send-to-previous-tags"];
+
+          "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" = 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;
+          };
+        };
+
+        # Select tags to focus.
+        "f" = {
+          "0" = ["set-focused-tags" (builtins.toString ((libraries.base.pow 2 32) - 1))];
+          "p" = ["focus-previous-tags"];
+
+          "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;
+        };
       };
-    "<MEDIA_MUTEVOLUME>" =
-      coreKeymap.m.m
-      // {
-        allow_locked = true;
-      };
-
-    # Mouse
-    "<Meta-<MOUSE_LEFT>>" = ["move-view"];
-    "<Meta-<MOUSE_RIGHT>>" = ["resize-view"];
 
-    # Screenshot
-    "<PRINTSCREEN>" = coreKeymap.r.p;
-  };
+      # Screen locking
+      "<Super-l>" = self."<LEFT_SUPER>".x.l;
+
+      # Audio
+      "<MEDIA_RAISEVOLUME>" =
+        self."<LEFT_SUPER>".m.r
+        // {
+          allow_locked = true;
+        };
+      "<MEDIA_LOWERVOLUME>" =
+        self."<LEFT_SUPER>".m.l
+        // {
+          allow_locked = true;
+        };
+      "<MEDIA_MUTEVOLUME>" =
+        self."<LEFT_SUPER>".m.m
+        // {
+          allow_locked = true;
+        };
+
+      # Mouse
+      "<Meta-<MOUSE_LEFT>>" = ["move-view"];
+      "<Meta-<MOUSE_RIGHT>>" = ["resize-view"];
+
+      # Screenshot
+      "<PRINTSCREEN>" = self."<LEFT_SUPER>".r.p;
+    }));
 }
diff --git a/modules/by-name/ri/river/river-start/river-start.sh b/modules/by-name/ri/river/river-start/river-start.sh
index b4c5b0a6..55eddfcf 100755
--- a/modules/by-name/ri/river/river-start/river-start.sh
+++ b/modules/by-name/ri/river/river-start/river-start.sh
@@ -10,8 +10,7 @@
 # You should have received a copy of the License along with this program.
 # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
 
-# NOTE: Keep this in sync with the file from `base_init.sh` <2025-02-03>
-RIVER_LOG_FILE="$HOME/.cache/river/log"
+RIVER_LOG_FILE="$HOME/.cache/river/wm-log"
 
 [ -d "$(dirname "$RIVER_LOG_FILE")" ] || mkdir --parents "$(dirname "$RIVER_LOG_FILE")"