Compare commits

..

2 Commits

Author SHA1 Message Date
Moritz Böhme 35ddc6a33c
feat: add tmux-vim-navigator 2023-04-28 08:12:15 +02:00
Moritz Böhme 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; gpg.enable = true;
navi.enable = true; navi.enable = true;
tmux.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 promise-async
vim-fugitive vim-fugitive
vim-lion vim-lion
vim-tmux-navigator
] ++ pluginsWithConfig; ] ++ 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 -- tab
require("which-key").register({ require("which-key").register({
["<tab>"] = { ["<tab>"] = {

View File

@ -9,7 +9,7 @@ let
runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd ]; runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd ];
text = '' text = ''
#!/usr/bin/env bash #!/usr/bin/env bash
options=$(fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | fzf --filter "''$*") options=$(fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | fzf --filter "''$*")
if [[ -z $options ]]; then if [[ -z $options ]]; then
@ -43,6 +43,22 @@ in
options.my.programs.tmux = { options.my.programs.tmux = {
enable = mkEnableOption "tmux"; enable = mkEnableOption "tmux";
autoAttach = mkEnableOption "autoAttach"; 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 { config = mkIf cfg.enable {
@ -62,8 +78,18 @@ in
plugins = with pkgs.tmuxPlugins; [ plugins = with pkgs.tmuxPlugins; [
sensible sensible
tmux-fzf tmux-fzf
vim-tmux-navigator
yank 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; fzf.tmux.enableShellIntegration = true;
fish.interactiveShellInit = fish.interactiveShellInit =
@ -80,7 +106,6 @@ in
end end
end end
''; '';
}; };
}; };
} }