feat(wl-kbptr): package wl-kbptr for NixOS as home module

This commit is contained in:
2026-03-29 16:25:49 +02:00
parent b321172044
commit 248756df77
4 changed files with 268 additions and 212 deletions

View File

@@ -19,6 +19,7 @@ in {
./swaync.nix ./swaync.nix
./theme.nix ./theme.nix
./waybar.nix ./waybar.nix
./wl-kbptr.nix
./wlr-which-key.nix ./wlr-which-key.nix
./wlsunset.nix ./wlsunset.nix
]; ];

View File

@@ -0,0 +1,37 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
configDir = config.xdg.configHome;
cfg = config.home.desktop.wl-kbptr;
iniFormat = pkgs.formats.ini {};
in {
options.home.desktop.wl-kbptr = {
enable = mkEnableOption "enable wl-kbptr";
config = mkOption {
inherit (iniFormat) type;
default = {};
description = ''
Options to add to the {file}`config` file. See
<https://github.com/moverest/wl-kbptr/blob/main/config.example>
for options.
'';
example = {
general = {
home_row_keys = "abcd";
};
};
};
};
config = mkIf cfg.enable {
home = {
packages = [pkgs.wl-kbptr];
file."${configDir}/wl-kbptr/config" = mkIf (cfg.config != {}) {
source = iniFormat.generate "wl-kbptr-config" cfg.config;
};
};
};
}

View File

@@ -139,6 +139,17 @@
enable = true; enable = true;
spicetify.enable = true; spicetify.enable = true;
}; };
wl-kbptr = {
enable = true;
config = {
general = {
# first eight chars to select areas, last three chars
# for left, right, middle click
home_row_keys = "auiectsrtsr";
modes = "tile,bisect";
};
};
};
}; };
dev = { dev = {
ai.claude.enable = true; ai.claude.enable = true;

View File

@@ -1,6 +1,7 @@
{ {
config, config,
pkgs, pkgs,
lib,
... ...
}: { }: {
config.home.desktop.wlr-which-key.settings = { config.home.desktop.wlr-which-key.settings = {
@@ -27,217 +28,223 @@
logout = import ./logout.nix {inherit pkgs;}; logout = import ./logout.nix {inherit pkgs;};
ytplay = import ../../modules/cli/scripts/ytplay.nix {inherit pkgs;}; ytplay = import ../../modules/cli/scripts/ytplay.nix {inherit pkgs;};
plock = import ../../modules/cli/scripts/plock.nix {inherit pkgs;}; plock = import ../../modules/cli/scripts/plock.nix {inherit pkgs;};
in [ in
{ [
key = "a"; {
desc = "Apps"; key = "a";
submenu = [ desc = "Apps";
{ submenu = [
key = "b"; {
desc = "Browser"; key = "b";
cmd = "zen"; desc = "Browser";
} cmd = "zen";
{ }
key = "B"; {
desc = "Qutebrowser"; key = "B";
cmd = "${pkgs.qutebrowser}/bin/qutebrowser"; desc = "Qutebrowser";
} cmd = "${pkgs.qutebrowser}/bin/qutebrowser";
{ }
key = "d"; {
desc = "Discord"; key = "d";
cmd = "${pkgs.vesktop}/bin/vesktop"; desc = "Discord";
} cmd = "${pkgs.vesktop}/bin/vesktop";
{ }
key = "e"; {
desc = "Emacs"; key = "e";
cmd = "${config.home.dev.editors.emacs.package}/bin/emacsclient -c -n"; desc = "Emacs";
} cmd = "${config.home.dev.editors.emacs.package}/bin/emacsclient -c -n";
{ }
key = "g"; {
desc = "Gimp"; key = "g";
cmd = "${pkgs.gimp}/bin/gimp"; desc = "Gimp";
} cmd = "${pkgs.gimp}/bin/gimp";
{ }
key = "h"; {
desc = "Handy"; key = "h";
cmd = "pkill -USR2 -n handy"; desc = "Handy";
} cmd = "pkill -USR2 -n handy";
{ }
key = "n"; {
desc = "Nemo"; key = "n";
cmd = "${pkgs.nemo-with-extensions}/bin/nemo"; desc = "Nemo";
} cmd = "${pkgs.nemo-with-extensions}/bin/nemo";
{ }
key = "N"; {
desc = "Nextcloud"; key = "N";
cmd = "${pkgs.nextcloud-client}/bin/nextcloud"; desc = "Nextcloud";
} cmd = "${pkgs.nextcloud-client}/bin/nextcloud";
{ }
key = "r"; {
desc = "Rofi"; key = "r";
submenu = [ desc = "Rofi";
{ submenu = [
key = "b"; {
desc = "Bluetooth"; key = "b";
cmd = "${pkgs.rofi-bluetooth}/bin/rofi-bluetooth"; desc = "Bluetooth";
} cmd = "${pkgs.rofi-bluetooth}/bin/rofi-bluetooth";
{ }
key = "c"; {
desc = "calc"; key = "c";
cmd = "rofi -show calc"; desc = "calc";
} cmd = "rofi -show calc";
{ }
key = "e"; {
desc = "Emoji"; key = "e";
cmd = "rofi -show emoji"; desc = "Emoji";
} cmd = "rofi -show emoji";
{ }
key = "r"; {
desc = "App Menu"; key = "r";
cmd = "rofi -show drun"; desc = "App Menu";
} cmd = "rofi -show drun";
{ }
key = "s"; {
desc = "SSH"; key = "s";
cmd = "rofi -show ssh"; desc = "SSH";
} cmd = "rofi -show ssh";
{ }
key = "y"; {
desc = "YouTube"; key = "y";
cmd = "${ytplay}/bin/ytplay"; desc = "YouTube";
} cmd = "${ytplay}/bin/ytplay";
]; }
} ];
]; }
} ];
{ }
key = "b"; {
desc = "Buffers"; key = "b";
submenu = [ desc = "Buffers";
{ submenu = [
key = "c"; {
desc = "Center"; key = "c";
cmd = "${center-window}/bin/center-window"; desc = "Center";
} cmd = "${center-window}/bin/center-window";
{ }
key = "d"; {
desc = "Close"; key = "d";
cmd = "${close-window}/bin/close-window"; desc = "Close";
} cmd = "${close-window}/bin/close-window";
{ }
key = "f"; {
desc = "Fullscreen"; key = "f";
cmd = "${fullscreen}/bin/fullscreen"; desc = "Fullscreen";
} cmd = "${fullscreen}/bin/fullscreen";
{ }
key = "F"; {
desc = "Float"; key = "F";
cmd = "${float-window}/bin/float-window"; desc = "Float";
} cmd = "${float-window}/bin/float-window";
{ }
key = "u"; {
desc = "Urgent"; key = "u";
cmd = "${focus-urgent}/bin/focus-urgent"; desc = "Urgent";
} cmd = "${focus-urgent}/bin/focus-urgent";
{ }
key = "."; {
desc = "Resize"; key = ".";
submenu = [ desc = "Resize";
{ submenu = [
key = left; {
desc = "Decrease Width"; key = left;
cmd = "echo decrease width"; desc = "Decrease Width";
keep-open = true; cmd = "echo decrease width";
} keep-open = true;
{ }
key = down; {
desc = "Increase Height"; key = down;
cmd = "echo decrease height"; desc = "Increase Height";
keep-open = true; cmd = "echo decrease height";
} keep-open = true;
{ }
key = up; {
desc = "Decrease Height"; key = up;
cmd = "echo decrease height"; desc = "Decrease Height";
keep-open = true; cmd = "echo decrease height";
} keep-open = true;
{ }
key = right; {
desc = "Increase Width"; key = right;
cmd = "echo increase width"; desc = "Increase Width";
keep-open = true; cmd = "echo increase width";
} keep-open = true;
]; }
} ];
]; }
} ];
{ }
key = "l"; {
desc = "Lock session"; key = "l";
cmd = "${plock}/bin/plock"; desc = "Lock session";
} cmd = "${plock}/bin/plock";
{ }
key = "p"; {
desc = "Power"; key = "p";
submenu = [ desc = "Power";
{ submenu = [
key = "l"; {
desc = "Logout"; key = "l";
cmd = "${logout}/bin/logout"; desc = "Logout";
} cmd = "${logout}/bin/logout";
{ }
key = "s"; {
desc = "Suspend"; key = "s";
cmd = "systemctl suspend"; desc = "Suspend";
} cmd = "systemctl suspend";
{ }
key = "r"; {
desc = "Reboot"; key = "r";
cmd = "systemctl reboot"; desc = "Reboot";
} cmd = "systemctl reboot";
{ }
key = "o"; {
desc = "Poweroff"; key = "o";
cmd = "systemctl poweroff"; desc = "Poweroff";
} cmd = "systemctl poweroff";
]; }
} ];
{ }
key = "s"; {
desc = "Screenshots"; key = "s";
submenu = [ desc = "Screenshots";
{ submenu = [
key = "Print"; {
desc = "Screenshot"; key = "Print";
cmd = "screenshot"; desc = "Screenshot";
} cmd = "screenshot";
{ }
key = "d"; {
desc = "Delayed"; key = "d";
cmd = "screenshot -d 3"; desc = "Delayed";
} cmd = "screenshot -d 3";
{ }
key = "D"; {
desc = "Select, Delay, Edit, and Copy"; key = "D";
cmd = "screenshot -secd 3"; desc = "Select, Delay, Edit, and Copy";
} cmd = "screenshot -secd 3";
{ }
key = "e"; {
desc = "Select, Edit, and Copy"; key = "e";
cmd = "screenshot -sec"; desc = "Select, Edit, and Copy";
} cmd = "screenshot -sec";
{ }
key = "g"; {
desc = "Select, Gimp, and Copy"; key = "g";
cmd = "screenshot -sgc"; desc = "Select, Gimp, and Copy";
} cmd = "screenshot -sgc";
{ }
key = "s"; {
desc = "Select and Copy"; key = "s";
cmd = "screenshot -sc"; desc = "Select and Copy";
} cmd = "screenshot -sc";
]; }
} ];
]; }
]
++ lib.lists.optional config.home.desktop.wl-kbptr.enable {
key = "m";
desc = "Mouse Warp";
cmd = "wl-kbptr";
};
}; };
} }