diff options
Diffstat (limited to '')
-rwxr-xr-x | modules/by-name/ri/river/init_base.sh | 5 | ||||
-rw-r--r-- | modules/by-name/ri/river/keymap.nix | 247 | ||||
-rwxr-xr-x | modules/by-name/ri/river/river-start/river-start.sh | 3 |
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")" |