nixos-config/home-manager/profiles/tmux/default.nix
2024-11-28 01:14:34 +08:00

74 lines
2.1 KiB
Nix

{ pkgs, lib, ... }:
{
programs.tmux = {
enable = true;
baseIndex = 1;
escapeTime = 10;
keyMode = "vi";
terminal = "tmux-256color";
historyLimit = 50000;
plugins = with pkgs.tmuxPlugins; [
yank
open
];
extraConfig = ''
set -g set-clipboard on
set -g mouse on
set -g status-right ""
set -g renumber-windows on
set -g bell-action none
# keybind
bind \; command-prompt
bind p paste-buffer
bind C-p choose-buffer
# pane
bind k select-pane -U
bind j select-pane -D
bind h select-pane -L
bind l select-pane -R
bind -r C-k resize-pane -U 5
bind -r C-j resize-pane -D 5
bind -r C-h resize-pane -L 5
bind -r C-l resize-pane -R 5
# copy mode
bind Escape copy-mode
bind -T copy-mode-vi k send -X cursor-up
bind -T copy-mode-vi K send -N 5 -X cursor-up
bind -T copy-mode-vi j send -X cursor-down
bind -T copy-mode-vi J send -N 5 -X cursor-down
bind -T copy-mode-vi h send -X cursor-left
bind -T copy-mode-vi H send -N 5 -X cursor-left
bind -T copy-mode-vi C-h send -X start-of-line
bind -T copy-mode-vi l send -X cursor-right
bind -T copy-mode-vi L send -N 5 -X cursor-right
bind -T copy-mode-vi C-l send -X end-of-line
bind -T copy-mode-vi v send -X begin-selection
# window
bind -r [ previous-window
bind -r ] next-window
bind -r C-[ swap-window -d -t -1
bind -r C-] swap-window -d -t +1
bind -r - split-window -h -c "#{pane_current_path}"
bind -r = split-window -v -c "#{pane_current_path}"
bind C-x kill-window
bind c new-window -c "#{pane_current_path}"
bind r command-prompt "rename-window %%"
# session
bind q confirm-before -p "kill-session #S? (y/n)" kill-session
bind R command-prompt "rename-session %%"
# image preview
set -g allow-passthrough on
set -ga update-environment TERM
set -ga update-environment TERM_PROGRAM
'';
};
programs.kitty.settings.shell = lib.mkDefault "tmux";
}