Add workspace keybinds

This commit is contained in:
Riley Apeldoorn 2023-05-24 11:32:54 +02:00 committed by Riley Apeldoorn
parent 4f21c610a5
commit 4a45f67fa4

View file

@ -1,11 +1,31 @@
{ pkgs, lib, config, ... }: { pkgs, lib, config, ... }:
let cfg = config.custom.gui.sway; let mod = "Mod4";
cfg = config.custom.gui.sway;
# Generate the workspace keybinds
genWorkspaces = { numbered, named }: with lib; (
let nums = genAttrs (map toString (range 1 (min numbered 9))) id;
genBindings = (num: key: {
"${mod}+${key}" = "workspace ${num}";
"${mod}+Shift+${key}" = "move window to workspace ${num}";
});
keybinds = mapAttrsToList genBindings (nums // named);
in mkMerge keybinds
);
in with lib; { in with lib; {
options.custom.gui.sway = { options.custom.gui.sway = with types; {
enable = mkEnableOption "sway window manager"; enable = mkEnableOption "sway window manager";
workspaces.named = mkOption {
type = attrsOf str;
default = {};
};
workspaces.numbered = mkOption {
type = int;
default = 5;
};
}; };
config = mkIf (cfg.enable) { config = mkIf (cfg.enable) {
@ -37,13 +57,13 @@ in with lib; {
terminal = "${pkgs.kitty}/bin/kitty"; terminal = "${pkgs.kitty}/bin/kitty";
# Directional keys # Directional keys
modifier = "Mod4"; modifier = mod;
fonts = { fonts = {
names = [ "Fira Code" ]; names = [ "Fira Code" ];
size = 8.0; size = 8.0;
}; };
keybindings = let mod = modifier; in { keybindings = (genWorkspaces { inherit (cfg.workspaces) numbered named; }) // {
"${mod}+h" = "focus left"; "${mod}+h" = "focus left";
"${mod}+j" = "focus down"; "${mod}+j" = "focus down";
"${mod}+k" = "focus up"; "${mod}+k" = "focus up";