aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hosts/by-name/apzu/configuration.nix72
-rw-r--r--hosts/by-name/tiamat/configuration.nix92
-rw-r--r--modules/by-name/ri/river/keymap.nix127
-rw-r--r--modules/by-name/ri/river/module.nix17
4 files changed, 150 insertions, 158 deletions
diff --git a/hosts/by-name/apzu/configuration.nix b/hosts/by-name/apzu/configuration.nix
index d4aad0f9..4464011e 100644
--- a/hosts/by-name/apzu/configuration.nix
+++ b/hosts/by-name/apzu/configuration.nix
@@ -39,78 +39,6 @@
river.init = {
mappings = {
layout = "dvorak-modified";
- keymap =
- {
- # Focus change
- "<Meta-T>" = {command = ["focus-view" "next"];};
- "<Meta-N>" = {command = ["focus-view" "previous"];};
- "<Meta+Ctrl-T>" = {command = ["focus-output" "next"];};
- "<Meta+Ctrl-N>" = {command = ["focus-output" "previous"];};
-
- # Standard programs
- "<Meta-<ENTER>>" = {command = ["spawn" "${lib.getExe pkgs.alacritty}"];};
- "<Meta+Shift-q>" = {command = ["exit"];};
- "<Meta-L>" = {command = ["spawn" "${lib.getExe pkgs.lock}"];};
-
- # Screenshot
- "<PRINTSCREEN>" = {command = ["spawn" "${lib.getExe pkgs.screenshot_persistent}"];};
-
- # Audio
- "<MEDIA_RAISEVOLUME>" = {
- command = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%+"];
- modes = ["normal" "locked"];
- };
- "<MEDIA_LOWERVOLUME>" = {
- command = ["spawn" "${lib.getExe' pkgs.wireplumber "wpctl"} set-volume @DEFAULT_SINK@ 5%-"];
- modes = ["normal" "locked"];
- };
- "<MEDIA_MUTEVOLUME>" = {
- command = ["spawn" "${lib.getExe pkgs.mpp} toggle"];
- modes = ["normal" "locked"];
- };
-
- # Launcher
- "<Meta-R>" = {command = ["spawn" "${lib.getExe pkgs.rofi} -show combi -modes combi -combi-modes 'window, drun, run' -show-icons"];};
- "<Meta-<F1>>" = {command = ["spawn" "${lib.getExe pkgs.tskm} open select"];};
- "<Meta-<F2>>" = {command = ["spawn" "${lib.getExe pkgs.keepassxc}"];};
- "<Meta-<F3>>" = {command = ["spawn" "${lib.getExe pkgs.signal-desktop}"];};
- # "<Meta-<F4>>" = {command = ["spawn" "${lib.getExe pkgs.steam}"];};
-
- # Client
- "<Meta-f>" = {command = ["toggle-fullscreen"];};
- "<Meta+Shift-c>" = {command = ["close"];};
- "<Meta+Ctrl- >" = {command = ["toggle-float"];};
- "<Meta+Ctrl-<ENTER>>" = {command = ["zoom"];};
- "<Meta-o>" = {command = ["send-to-output" "next"];};
- "<Meta+Shift-T>" = {command = ["swap" "next"];};
- "<Meta+Shift-N>" = {command = ["swap" "previous"];};
-
- # Toggle all tags
- "<Meta-0>" = {command = ["set-focused-tags" (builtins.toString ((baseLib.pow 2 32) - 1))];};
- "<Meta+Shift-0>" = {command = ["set-view-tags" (builtins.toString ((baseLib.pow 2 32) - 1))];};
-
- # Mouse
- "<Meta-<MOUSE_LEFT>>" = {
- command = ["move-view"];
- map_mode = "MapMouse";
- };
- "<Meta-<MOUSE_RIGHT>>" = {
- command = ["resize-view"];
- map_mode = "MapMouse";
- };
- }
- // (
- builtins.foldl' (acc: elem: acc // elem) {} (
- builtins.map (index: let
- num = builtins.toString index;
- index2tag = input: builtins.toString (baseLib.pow 2 (input - 1));
- in {
- "<Meta-${num}>" = {command = ["set-focused-tags" (index2tag index)];};
- "<Meta+Shift-${num}>" = {command = ["set-view-tags" (index2tag index)];};
- "<Meta+Shift+Ctrl-${num}>" = {command = ["toggle-view-tags" (index2tag index)];};
- }) (builtins.genList (i: i + 1) 9)
- )
- );
};
screenSetupCode = {};
};
diff --git a/hosts/by-name/tiamat/configuration.nix b/hosts/by-name/tiamat/configuration.nix
index efb77b96..18393543 100644
--- a/hosts/by-name/tiamat/configuration.nix
+++ b/hosts/by-name/tiamat/configuration.nix
@@ -46,91 +46,13 @@
init = {
mappings = {
layout = "us";
- keymap = let
- map = key: "<Alt+Ctrl+Meta+Shift-${key}>";
- in
- (lib.mapAttrs' (name: value: lib.nameValuePair (map name) value) {
- # Movement
- "A" = {command = ["exit"];};
- "B" = {command = ["close"];};
-
- "C" = {command = ["focus-view" "previous"];};
- "D" = {command = ["focus-view" "next"];};
-
- "E" = {command = ["swap" "previous"];};
- "F" = {command = ["swap" "next"];};
-
- "G" = {command = ["zoom"];};
-
- "H" = {command = ["toggle-fullscreen"];};
- "I" = {command = ["toggle-float"];};
-
- "J" = {command = ["send-to-output" "next"];};
-
- "K" = {command = ["spawn" "${lib.getExe pkgs.alacritty}"];};
- "L" = {command = ["spawn" "${lib.getExe pkgs.screenshot_persistent}"];};
-
- # Audio
- # "M" = {command = ["spawn" "video-pause toggle"]; modes = ["normal" "locked"]; };
- "N" = {
- command = ["spawn" "${lib.getExe pkgs.mpp} toggle"];
- modes = ["normal" "locked"];
- };
-
- # Launcher
- "O" = {command = ["spawn" "${lib.getExe pkgs.rofi} -show combi -modes combi -combi-modes 'window,drun,run' -show-icons"];};
- "P" = {command = ["spawn" "${lib.getExe pkgs.tskm} open select"];};
- "Q" = {command = ["spawn" "${lib.getExe pkgs.keepassxc}"];};
- # "R" = {command = ["spawn" "nheko"];};
- "S" = {command = ["spawn" "${lib.getExe pkgs.signal-desktop}"];};
- "T" = {command = ["spawn" "${lib.getExe pkgs.lock}"];};
-
- "U" = {command = ["focus-output" "next"];};
- "V" = {command = ["focus-previous-tags"];};
- "W" = {command = ["send-to-previous-tags"];};
- # "X" = {command = ["spawn" "bemenu-run"];};
- # "Y" = {command = ["spawn" "bemenu-run"];};
-
- # Toggle all tags
- "0" = {command = ["set-focused-tags" "${builtins.toString ((libraries.base.pow 2 32) - 1)}"];};
-
- # Support Unicode input
- "Z" = {command = ["spawn" "${lib.getExe externalBinaries.qmk_firmware.packages.${system}.qmk_unicode_type} 106 65377"];};
- })
- // ({
- # TODO: add toggle-focus mapping
-
- # Toggle all tags
- "<Alt+Ctrl+Shift-0>" = {
- command = [
- "set-view-tags"
- "${builtins.toString
- ((libraries.base.pow 2 32) - 1)}"
- ];
- };
-
- # Mouse
- "<Meta-<MOUSE_LEFT>>" = {
- command = ["move-view"];
- map_mode = "MapMouse";
- };
- "<Meta-<MOUSE_RIGHT>>" = {
- command = ["resize-view"];
- map_mode = "MapMouse";
- };
- }
- // (
- builtins.foldl' (acc: elem: acc // elem) {} (
- builtins.map (index: let
- num = builtins.toString index;
- index2tag = input: builtins.toString (libraries.base.pow 2 (input - 1));
- in {
- "${map num}" = {command = ["set-focused-tags" (index2tag index)];};
- "<Alt+Ctrl+Shift-${num}>" = {command = ["set-view-tags" (index2tag index)];};
- # "<Super+Shift+Ctrl-${num}>" = {command = ["toggle-view-tags" (index2tag index)];};
- }) (builtins.genList (i: i + 1) 9)
- )
- ));
+ keymap = {
+ # Support Unicode input
+ "<Alt+Ctrl+Meta+Shift-Z>" = [
+ "spawn"
+ "${lib.getExe externalBinaries.qmk_firmware.packages.${system}.qmk_unicode_type} 106 65377"
+ ];
+ };
};
screenSetupCode = {
"DP-2" = {pos = "2560,0";};
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 {
+ "<SUPER_LEFT>" = {
+ # Change focus
+ "f" = {
+ "t" = ["focus-view" "next"];
+ "n" = ["focus-view" "previous"];
+ "<Ctrl-t>" = ["focus-output" "next"];
+ "<Ctrl-n>" = ["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"];
+ "<SPACE>" = ["toggle-float"];
+ "<ENTER>" = ["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
+ "<MEDIA_RAISEVOLUME>" = {
+ command = ["spawn" "${lib.getExe' 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%-"];
+ allow_locked = true;
+ };
+ "<MEDIA_MUTEVOLUME>" = {
+ command = ["spawn" "${lib.getExe pkgs.mpp} toggle"];
+ allow_locked = true;
+ };
+
+ # Mouse
+ "<Meta-<MOUSE_LEFT>>" = ["move-view"];
+ "<Meta-<MOUSE_RIGHT>>" = ["resize-view"];
+
+ # Lock screen.
+ "<Meta-L>" = ["spawn" "${lib.getExe pkgs.lock}"];
+
+ # Screenshot
+ "<PRINTSCREEN>" = ["spawn" "${lib.getExe pkgs.screenshot_persistent}"];
+ };
+}
diff --git a/modules/by-name/ri/river/module.nix b/modules/by-name/ri/river/module.nix
index 38d4bdef..ed7eb363 100644
--- a/modules/by-name/ri/river/module.nix
+++ b/modules/by-name/ri/river/module.nix
@@ -36,10 +36,21 @@
longRunningPrograms = builtins.concatStringsSep "\n" (builtins.map mkLrProgram cfg.init.backgroundStart);
keymapFormat = pkgs.formats.json {};
+ keymapGenerate = name: value:
+ pkgs.runCommandLocal "mk-${name}-and-check" {
+ nativeBuildInputs = [pkgs.river-mk-keymap];
+ preferLocalBuild = true;
+
+ env = {
+ JSON_FILE = keymapFormat.generate name value;
+ };
+ } ''
+ river-mk-keymap --keymap "$JSON_FILE" init --dry-run
+ '';
keymappings = ''
err_fail ${riverctl} keyboard-layout ${esa cfg.init.mappings.layout}
- err_fail ${lib.getExe pkgs.river-mk-keymap} ${keymapFormat.generate "keys.json" cfg.init.mappings.keymap}
+ err_fail ${lib.getExe pkgs.river-mk-keymap} ${keymapGenerate "keys.json" cfg.init.mappings.keymap}
'';
mkRule = {
@@ -175,6 +186,10 @@ in {
};
};
+ imports = [
+ ./keymap.nix
+ ];
+
config = lib.mkIf cfg.enable {
services.udev.packages = lib.mkIf cfg.unicodeInput.enable [externalBinaries.qmk_firmware.packages.${system}.qmk_unicode_type];