Compare commits

...

2 commits

Author SHA1 Message Date
35ddc6a33c
feat: add tmux-vim-navigator 2023-04-28 08:12:15 +02:00
b23382ee8e
feat(tmux): add keybinds option 2023-04-28 08:11:44 +02:00
4 changed files with 41 additions and 10 deletions

View file

@ -64,6 +64,19 @@ in
gpg.enable = true;
navi.enable = true;
tmux.enable = true;
tmux.keybinds = {
prefix = {
"-" = "split-window -v";
"|" = "split-window -h";
"C-l" = "send-keys C-l";
"R" = "source-file $XDG_CONFIG_HOME/tmux/tmux.conf \\; display-message 'Reloaded tmux.conf'";
};
copy-mode-vi = {
"v" = "send -X begin-selection";
"V" = "send -X select-line";
"C-v" = "send -X rectangle-toggle";
};
};
};
};

View file

@ -88,6 +88,7 @@ in
promise-async
vim-fugitive
vim-lion
vim-tmux-navigator
] ++ pluginsWithConfig;
};
};

View file

@ -26,14 +26,6 @@ require("which-key").register({
},
})
-- fast window move
require("which-key").register({
["<C-h>"] = { "<C-w>h", "Move window left" },
["<C-j>"] = { "<C-w>j", "Move window down" },
["<C-k>"] = { "<C-w>k", "Move window up" },
["<C-l>"] = { "<C-w>l", "Move window right" },
})
-- tab
require("which-key").register({
["<tab>"] = {

View file

@ -43,6 +43,22 @@ in
options.my.programs.tmux = {
enable = mkEnableOption "tmux";
autoAttach = mkEnableOption "autoAttach";
keybinds = mkOption {
type = with types; attrsOf (attrsOf string);
default = { };
description = "Keybinds for tmux";
example = literalExample ''
{
prefix = {
"-" = "split-window -v";
"|" = "split-window -h";
};
copy-mode-vi = {
"v" = "send -X begin-selection";
};
}
'';
};
};
config = mkIf cfg.enable {
@ -62,8 +78,18 @@ in
plugins = with pkgs.tmuxPlugins; [
sensible
tmux-fzf
vim-tmux-navigator
yank
];
extraConfig =
let
mkKeybind = table: mapAttrsToList (keybind: value: "bind-key -T ${table} '${keybind}' ${value}");
keybinds = flatten (mapAttrsToList mkKeybind cfg.keybinds);
in
''
# Keybinds
${concatStringsSep "\n" keybinds}
'';
};
fzf.tmux.enableShellIntegration = true;
fish.interactiveShellInit =
@ -80,7 +106,6 @@ in
end
end
'';
};
};
}