This repository has been archived on 2026-04-20. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
AsaJS/modules/features/home/tmux.nix
2026-04-14 01:15:18 +07:00

84 lines
2.3 KiB
Nix

{
lib,
osconfig,
pkgs,
...
}: let
TOP_PANEL = ''
set -g pane-border-status top
set -g pane-border-lines single
set -g pane-border-indicators colour
set -g pane-border-format "#{E:@asa-module-icon} #{pane_index} #{E:@asa-module-text} #{pane_current_path} #[default]"
'';
OPTIONS = ''
set-option -g destroy-unattached on
set -g allow-passthrough on
'';
BINDS = ''
unbind r
bind r source-file ~/.config/tmux/tmux.conf;
'';
BOTTOM_PANEL = ''
set -g status-justify "centre"
set -g window-status-format "#{E:@asa-module-icon} #I #{E:@asa-module-text} #W "
set -g window-status-current-format "#{E:@asa-module-icon} #I #{E:@asa-module-text} #W "
set -gg status-left "#{E:@asa-module-text} %A %d/%m/%Y #[default] "
set -ag status-left "#{E:@asa-module-text} %I:%M %p #[default] "
set -g status-left-length 100
set -g status-right "#{E:@asa-module-icon} #{E:@asa-module-text} #S #[default] "
set -ag status-right "#{E:@asa-module-icon} CPU #{E:@asa-module-text} #{cpu_percentage} #[default] "
set -ag status-right "#{E:@asa-module-icon} RAM #{E:@asa-module-text} #{ram_percentage} "
set -g status-right-length 100
setw -g automatic-rename off
'';
CATPPUCCIN = ''
set -g @catppuccin_flavor 'mocha'
set -ogq @asa-module-icon "#[bg=#{E:@thm_sapphire},fg=#{E:@thm_surface_0}]"
set -ogq @asa-module-text "#[bg=#{E:@thm_surface_0},fg=#{E:@thm_fg}]"
'';
YANK = ''
set -g @yank_selection 'primary'
set -g @yank_selection_mouse 'primary'
'';
EXTRA_CONFIG = ''
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi V send-keys -X select-line
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
'';
in {
programs.tmux = lib.mkIf osconfig.device.programs.tmux.enable {
enable = true;
keyMode = "vi";
disableConfirmationPrompt = true;
prefix = "c-a";
extraConfig = TOP_PANEL + OPTIONS + BINDS + EXTRA_CONFIG;
plugins = with pkgs.tmuxPlugins; [
{
plugin = yank;
extraConfig = YANK;
}
{
plugin = catppuccin;
extraConfig = CATPPUCCIN;
}
{
plugin = cpu;
extraConfig = BOTTOM_PANEL;
}
];
};
}