ooknet/inputs/home/modules/console/multiplexer/tmux/default.nix

58 lines
1.7 KiB
Nix

{ config, lib, pkgs, ... }:
let
cfg = config.homeModules.console.multiplexer.tmux;
inherit (config.colorscheme) colors;
in
{
config = lib.mkIf cfg.enable {
programs.tmux = {
enable = true;
shell = "${pkgs.fish}/bin/fish";
prefix = "C-space";
baseIndex = 1;
keyMode = "vi";
escapeTime = 0;
mouse = true;
plugins = with pkgs; [
{
plugin = tmuxPlugins.mode-indicator;
}
];
extraConfig = /* sh */ ''
# General Settings
set -g set-clipboard on
#Appearance
set -g status-position top
set -g status-style "fg=#${colors.base05} bg=#${colors.base00}"
#Windows
set -g status-justify "centre"
setw -g window-status-current-format "#[bg=#${colors.base0B},fg=#${colors.base00},bold] #W "
setw -g window-status-format "#[bg=#${colors.base03},fg=#${colors.base05}] #W "
#Left
set -g status-left " #{tmux_mode_indicator} #[bg=#${colors.base0B},fg=#${colors.base00}] #S"
set -g status-right '%Y-%m-%d %H:%M #{tmux_mode_indicator}'
#Move to Pane
bind -n M-Left select-pane -L
bind -n M-h select-pane -L
bind -n M-Right select-pane -R
bind -n M-l select-pane -R
bind -n M-Up select-pane -U
bind -n M-k select-pane -U
bind -n M-Down select-pane -D
bind -n M-j select-pane -D
#Split Pane
bind -n M-- split-window -h
bind -n M-= split-window -v
#Resize Pane
bind -n C-M-Up resize-pane -U 5
bind -n C-M-Down resize-pane -D 5
bind -n C-M-Left resize-pane -L 5
bind -n C-M-Right resize-pane -R 5
#Move to Window
bind -n M-1
'';
};
};
}