NixOS-Configs/home/common/tmux.nix
2024-06-30 09:47:45 -05:00

147 lines
5 KiB
Nix

{pkgs, ...}: {
programs.tmux = {
enable = true;
aggressiveResize = true;
sensibleOnTop = false;
historyLimit = 2000;
tmuxinator.enable = true;
mouse = false;
baseIndex = 1;
disableConfirmationPrompt = true;
#shell = "${pkgs.bash}/bin/bash";
terminal = "tmux-256color";
keyMode = "vi";
plugins = [
# Add tmux-tasks
pkgs.tmuxPlugins.resurrect
pkgs.tmuxPlugins.continuum
pkgs.tmuxPlugins.battery
pkgs.tmuxPlugins.cpu
pkgs.tmuxPlugins.vim-tmux-navigator
{
plugin = pkgs.tmuxPlugins.online-status;
extraConfig = ''
set -g @online_icon "ok"
set -g @offline_icon "offline!"
'';
}
{
plugin = pkgs.tmuxPlugins.dracula;
extraConfig = ''
set -g @dracula-plugins "cpu-usage network battery weather time"
set -g @dracula-border-contrast true
set -g @dracula-refresh-rate 10
set -g @dracula-show-left-icon session
set -g @dracula-border-contrast true
set -g @dracula-show-powerline true
set -g @dracula-synchronize-panes-label "Sync"
set -g @dracula-show-flags true
set -g @dracula-show-timezone false
set -g @dracula-fixed-location "Katy, Texas"
set -g @dracula-show-location false
'';
}
];
extraConfig = ''
bind '~' split-window "exec btop"
bind - split-window -v -c "#{pane_current_path}"
bind | split-window -h -c "#{pane_current_path}"
bind -n C-1 select-window -t 11
bind -n C-2 select-window -t 12
bind -n C-3 select-window -t 13
bind -n C-4 select-window -t 14
bind -n C-left swap-window -t -1
bind -n C-right swap-window -t +1
bind -n S-down new-window
bind -n S-left prev
bind -n S-right next
bind 0 select-window -t 10
bind 1 select-window -t 1
bind 2 select-window -t 2
bind 3 select-window -t 3
bind 4 select-window -t 4
bind 5 select-window -t 5
bind 6 select-window -t 6
bind 7 select-window -t 7
bind 8 select-window -t 8
bind 9 select-window -t 9
bind C-0 select-window -t 20
bind C-5 select-window -t 15
bind C-6 select-window -t 16
bind C-7 select-window -t 17
bind C-8 select-window -t 18
bind C-9 select-window -t 19
bind C-c run "tmux show-buffer | wl-copy"
bind C-t neww -n vit "exec vit"
bind C-v run "tmux set-buffer -- \"$(wl-paste)\"; tmux paste-buffer"
bind F1 select-window -t 11
bind F10 select-window -t 20
bind F2 select-window -t 12
bind F3 select-window -t 13
bind F4 select-window -t 14
bind F5 select-window -t 15
bind F6 select-window -t 16
bind F7 select-window -t 17
bind F8 select-window -t 18
bind F9 select-window -t 19
bind I neww -n khal "exec ikhal"
bind K split-window -h "exec ikhal"
bind S split-window -v -l 5
bind Tab choose-window
bind ^b last-window
bind e setw synchronize-panes
bind g select-layout tiled
bind o select-pane -t :.-
bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; new-window -n "urlscan" '$SHELL -c "urlscan -c -d < /tmp/tmux-buffer"'
set -g bell-action any
set -g buffer-limit 9
set -g display-panes-active-colour red
set -g display-panes-colour blue
set -g display-panes-time 1000
set -g display-time 750
set -g focus-events on
set -g lock-after-time 120
set -g lock-command 'tty | grep -q "^/dev/tty" && vlock'
set -g renumber-windows off
set -g set-titles on
set -g set-titles-string "#S:#I:#W - "#T""
set -g status on
set -g status-interval 0
set -g status-interval 15
set -g status-justify left
set -g status-position top
set -g visual-activity off
set -g visual-bell off
set -sa terminal-features ',tmux-256color:RGB'
set -sa terminal-overrides ",tmux-256color:RGB"
set -sg escape-time 0
'';
};
xdg.configFile."tmuxinator" = {
recursive = true;
source = ./files/tmuxinator;
target = "tmuxinator";
};
home.file = {
tmux-css = {
enable = true;
target = ".tmux-cssh";
text = ''
vps:-sc www -sc nuwww
local:-sc harper -sc mini -sc display -sc harper2 -sc pihole -sc fred
server:-cs vps -cs local
laptop:-sc loki -sc dragon
arch:-sc harper -sc pihole -sc nuwww -sc display
nix:-sc loki -sc eve -sc smaug
nix-all:-cs nix -sc dragon -sc ace -sc pocket2 -sc fred
ubuntu:-sc mini -sc www -sc harper2
vm:-sc vm1 -sc vm2
all-laptop:-cs laptop -sc smaug -sc dragon -sc pocket2 -sc ace -sc eve
# -sc pine
#all:-cs server -cs laptop
all:-cs server -cs all-laptop
test:-cs all -cs vm
'';
};
};
}