feat: basic tmux configuration

This commit is contained in:
ooks-io 2024-02-08 20:49:25 +13:00
parent 4e4f46a183
commit 4beae4c2e7
4 changed files with 63 additions and 27 deletions

View file

@ -3,12 +3,15 @@
imports = [
./zellij
#./screen
#./tmux
./tmux
];
options.homeModules.console.multiplexer = {
zellij = {
enable = lib.mkEnableOption "Enable zellij multiplexer";
};
tmux = {
enable = lib.mkEnableOption "Enable tmux multiplexer";
};
};
}

View file

@ -0,0 +1,58 @@
{ 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
'';
};
};
}

View file

@ -7,7 +7,6 @@ let
hasNeovim = config.programs.neovim.enable;
hasBat = hasPackage "bat";
hasHelix = hasPackage "helix";
hasKitty = config.programs.kitty.enable;
in
{
config = {
@ -47,26 +46,6 @@ in
};
functions = {
fish_greeting = "";
zellij_session_select = ''
if not set -q ZELLIJ
set -l ZJ_SESSIONS (zellij list-sessions | awk '{print $1}')
set -l NO_SESSIONS (count $ZJ_SESSIONS)
if test $NO_SESSIONS -gt 0
set -l SELECTED_SESSION (printf "%s\n" $ZJ_SESSIONS | sk --ansi)
if test -n "$SELECTED_SESSION"
zellij attach -c $SELECTED_SESSION
else
zellij
end
else
zellij
end
end
'';
fish_flake_edit = ''
cd $FLAKE
hx $FLAKE
@ -81,10 +60,6 @@ in
'';
};
interactiveShellInit =
# zellij auto start script
''
zellij_session_select
'' +
''
set --global KITTY_INSTALLATION_DIR "${pkgs.kitty}/lib/kitty"
set --global KITTY_SHELL_INTEGRATION enabled

View file

@ -55,7 +55,7 @@ in
fish.enable = true;
bash.enable = true;
};
multiplexer.zellij.enable = true;
multiplexer.tmux.enable = true;
utility = {
nixIndex.enable = true;
git.enable = true;