dotfiles/modules/darwin/tmux.nix

77 lines
1.9 KiB
Nix
Raw Normal View History

2022-06-14 11:54:18 +00:00
{ config, pkgs, ... }: {
home-manager.users.${config.user} = {
programs.tmux = {
enable = true;
baseIndex = 1; # Start windows and panes at 1
escapeTime = 0; # Wait time after escape is input
historyLimit = 100000;
keyMode = "vi";
newSession = true; # Automatically spawn new session
plugins = [ ];
resizeAmount = 10;
shell = "${pkgs.fish}/bin/fish";
terminal = "screen-256color";
extraConfig = ''
# Horizontal and vertical splits
bind \\ split-window -h -c '#{pane_current_path}'
bind - split-window -v -c '#{pane_current_path}'
# Move between panes with vi keys
bind h select-pane -L
bind j select-pane -D
bind K select-pane -U
bind l select-pane -R
# Split out pane
bind b break-pane
# Synchronize panes
bind S set-window-option synchronize-panes
# Copy mode works as Vim
bind Escape copy-mode
bind k copy-mode
bind C-[ copy-mode
# Use v to trigger selection
bind-key -T copy-mode-vi v send-keys -X begin-selection
# Use y to yank current selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# Enable mouse mode
set -g mouse on
# Status bar
set -g status-interval 60 # Seconds between refreshes
set -g renumber-windows on
set-option -g status-position bottom
'';
};
programs.alacritty.settings = {
shell.args = [
"--login"
"--init-command"
"tmux attach-session -t noah || tmux new-session -s noah"
];
2022-06-19 12:38:44 +00:00
key_bindings = [
2022-06-14 11:54:18 +00:00
{
key = "H";
mods = "Super|Shift";
2022-06-19 12:38:44 +00:00
chars = "\\x02p"; # Previous tmux window
2022-06-14 11:54:18 +00:00
}
{
key = "L";
mods = "Super|Shift";
2022-06-19 12:38:44 +00:00
chars = "\\x02n"; # Next tmux window
2022-06-14 11:54:18 +00:00
}
];
};
};
}