feat: basic tmux configuration
This commit is contained in:
parent
4e4f46a183
commit
4beae4c2e7
4 changed files with 63 additions and 27 deletions
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
58
home/modules/console/multiplexer/tmux/default.nix
Normal file
58
home/modules/console/multiplexer/tmux/default.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue