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 = [
|
imports = [
|
||||||
./zellij
|
./zellij
|
||||||
#./screen
|
#./screen
|
||||||
#./tmux
|
./tmux
|
||||||
];
|
];
|
||||||
|
|
||||||
options.homeModules.console.multiplexer = {
|
options.homeModules.console.multiplexer = {
|
||||||
zellij = {
|
zellij = {
|
||||||
enable = lib.mkEnableOption "Enable zellij multiplexer";
|
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;
|
hasNeovim = config.programs.neovim.enable;
|
||||||
hasBat = hasPackage "bat";
|
hasBat = hasPackage "bat";
|
||||||
hasHelix = hasPackage "helix";
|
hasHelix = hasPackage "helix";
|
||||||
hasKitty = config.programs.kitty.enable;
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
config = {
|
config = {
|
||||||
|
|
@ -47,26 +46,6 @@ in
|
||||||
};
|
};
|
||||||
functions = {
|
functions = {
|
||||||
fish_greeting = "";
|
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 = ''
|
fish_flake_edit = ''
|
||||||
cd $FLAKE
|
cd $FLAKE
|
||||||
hx $FLAKE
|
hx $FLAKE
|
||||||
|
|
@ -81,10 +60,6 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
interactiveShellInit =
|
interactiveShellInit =
|
||||||
# zellij auto start script
|
|
||||||
''
|
|
||||||
zellij_session_select
|
|
||||||
'' +
|
|
||||||
''
|
''
|
||||||
set --global KITTY_INSTALLATION_DIR "${pkgs.kitty}/lib/kitty"
|
set --global KITTY_INSTALLATION_DIR "${pkgs.kitty}/lib/kitty"
|
||||||
set --global KITTY_SHELL_INTEGRATION enabled
|
set --global KITTY_SHELL_INTEGRATION enabled
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ in
|
||||||
fish.enable = true;
|
fish.enable = true;
|
||||||
bash.enable = true;
|
bash.enable = true;
|
||||||
};
|
};
|
||||||
multiplexer.zellij.enable = true;
|
multiplexer.tmux.enable = true;
|
||||||
utility = {
|
utility = {
|
||||||
nixIndex.enable = true;
|
nixIndex.enable = true;
|
||||||
git.enable = true;
|
git.enable = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue