From 9baedc315fac97a6c2fc9c3ab1364dbaf681d826 Mon Sep 17 00:00:00 2001 From: piecka Date: Tue, 11 Mar 2025 16:20:55 +0100 Subject: [PATCH] some tmux changes --- .tmux.conf | 208 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 125 insertions(+), 83 deletions(-) diff --git a/.tmux.conf b/.tmux.conf index 31fec0e..92ca30e 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -2,103 +2,145 @@ # General tmux Settings # ─────────────────────────────────────────────────────────────────────────── -# Enable 256 color support for tmux +# ─< Enable 256 color support for tmux >────────────────────────────────────────────────── set-option -sa terminal-overrides ",xterm-256color*:Tc" -# Enable mouse support (for scrolling, resizing, etc.) +# ─< Enable mouse support (for scrolling, resizing, etc.) >─────────────────────────────── set -g mouse on +# ─< set the prefix to "C-Space" >──────────────────────────────────────────────────────── +set -g prefix C-Space +bind C-Space send-prefix + +# Ensure that when prefix is pressed, the mode indicator is shown +set -g mode-keys vi # Use vi keybindings in copy mode +set -g status-left-length 30 # Limit length of the left status line +set -g status-right-length 60 # Limit length of the right status line + +# ─< Start windows and panes at index 1 instead of 0 >──────────────────────────────────── +set -g base-index 1 +set -g pane-base-index 1 +set-window-option -g pane-base-index 1 +set-option -g renumber-windows on + +# set -g status-right '#{prefix_highlight} | 󰃭 %d.%m.%Y |  %H:%M' + +# prompt to display when tmux prefix key is pressed +set -g @mode_indicator_prefix_prompt ' 󱙝 ' + +# prompt to display when tmux is in copy mode +set -g @mode_indicator_copy_prompt ' COPY ' + +# prompt to display when tmux has synchronized panes +set -g @mode_indicator_sync_prompt ' SYNC ' + +# prompt to display when tmux is in normal mode +set -g @mode_indicator_empty_prompt ' 󰊠 ' + +# style values for prefix prompt +set -g @mode_indicator_prefix_mode_style 'bg=#fe8019,fg=black' + +# style values for copy prompt +set -g @mode_indicator_copy_mode_style 'bg=yellow,fg=black' + +# style values for sync prompt +set -g @mode_indicator_sync_mode_style 'bg=red,fg=black' + +# style values for empty prompt +set -g @mode_indicator_empty_mode_style 'bg=#fabd2f,fg=black' + +# ────────────────────────────────< theme - minimal config >──────────────────────────────── +# set -g @plugin 'niksingh710/minimal-tmux-status' +# set -g @minimal-tmux-fg "#1d2021" +# set -g @minimal-tmux-bg "#fabd2f" +# set -g @minimal-tmux-indicator-str " 󰌽 $USER " +# set -g @minimal-tmux-indicator true +# set -g @minimal-tmux-status "bottom" +# +# # Enables or disables the left and right status bar +# set -g @minimal-tmux-right true +# set -g @minimal-tmux-left true +# +# # expanded icon (fullscreen icon) +# set -g @minimal-tmux-expanded-icon "󰊓 " +# +# # on all tabs (default is false) +# # false will make it visible for the current tab only +# set -g @minimal-tmux-show-expanded-icons-for-all-tabs true +# +# # To make the selection box rounded () or edged <> +# # Default is nothing, when set to true default is edged +# set -g @minimal-tmux-use-arrow false +# set -g @minimal-tmux-right-arrow "#[fg=#fabd2f]#[bg=#1d2021]" +# set -g @minimal-tmux-left-arrow "#[fg=#fabd2f]#[bg=#1d2021]" +# +# # Not recommended to change these values +# set -g @minimal-tmux-status-right "#[fg=#fabd2f]#[bg=#1d2021]#[fg=#1d2021]#[bg=#fabd2f]󰃭 %d.%m.%Y -  %H:%M#[fg=#fabd2f]#[bg=black]" +# # set -g @minimal-tmux-status-right "%d.%m.%Y" +# # set -g @minimal-tmux-status-left "refer to code" +# +# # To add or remove extra text in status bar +# set -g @minimal-tmux-status-right-extra "#[fg=#fb4934] #S" +# set -g @minimal-tmux-status-left-extra "" +# +# # If getting strings cut in left status or right +# # Here 20 is the length of the characters in the string +# set -g status-right-length 20 +# set -g status-left-length 20 +# ───────────────────────────────────< minimal --- end >───────────────────────────────── + +# ────────────────────────────────< theme - gruvbox config >──────────────────────────────── +set -g @plugin 'egel/tmux-gruvbox' # Gruvbox theme for tmux +set -g @tmux-gruvbox 'dark256' # Can be 'dark', 'dark256', 'light', 'light256' +set -g @tmux-gruvbox-left-status-a '#{tmux_mode_indicator}' +set -g @tmux-gruvbox-right-status-z '#h' # Hostname and tmux mode indicator +set -g @tmux-gruvbox-right-status-x ' %H:%M' # Time format 24H +set -g @tmux-gruvbox-right-status-y '󰃭 %d.%m.%Y' # Date format (e.g., 30.01.2024) + +# ───────────────────────────────────< gruvbox --- end >───────────────────────────────── + +# ──────────────────────────────< theme - gruvbox 2 - config >────────────────────────────── +# set -g @plugin 'l-lin/tmux-colorscheme' + +# set -g @tmux-colorscheme-show-upload-speed true +# set -g @tmux-colorscheme-show-download-speed true +# set -g @tmux-colorscheme-show-prefix-highlight true +# set -g @tmux-colorscheme-show-battery true +# set -g @tmux-colorscheme-show-cpu true +# set -g @tmux-colorscheme-show-cpu-temp true +# set -g @tmux-colorscheme-show-ram true + +# set -g @tmux-colorscheme "gruvbox-dark" +# ──────────────────────────────────< gruvbox 2 --- end >──────────────────────────────── + # ─────────────────────────────────────────────────────────────────────────── # Key Bindings # ─────────────────────────────────────────────────────────────────────────── # Set the prefix key to C-Space instead of default C-b unbind C-b -set -g prefix C-Space -bind C-Space send-prefix -# ─────────────────────────────────────────────────────────────────────────── -# Window and Pane Indexing -# ─────────────────────────────────────────────────────────────────────────── - -# Start windows and panes at index 1 instead of 0 -set -g base-index 1 -set -g pane-base-index 1 -set-window-option -g pane-base-index 1 -set-option -g renumber-windows on - -# ─────────────────────────────────────────────────────────────────────────── -# Split Panes in the Current Directory -# ─────────────────────────────────────────────────────────────────────────── - -# Split horizontally or vertically while preserving the current directory -bind h split-window -h -c "#{pane_current_path}" -bind j split-window -v -c "#{pane_current_path}" - -# ─────────────────────────────────────────────────────────────────────────── -# Make Pane Fullscreen -# ─────────────────────────────────────────────────────────────────────────── - -# Toggle the current pane between normal and fullscreen mode -bind -n C-f resize-pane -Z - -# ─────────────────────────────────────────────────────────────────────────── -# Navigation between Panes -# ─────────────────────────────────────────────────────────────────────────── - -# Use C-h and C-l to switch between panes +# ─< Use C-h and C-l to switch between panes >──────────────────────────────────────────── bind -n C-h select-pane -L bind -n C-l select-pane -R - -# ─────────────────────────────────────────────────────────────────────────── -# Plugins -# ─────────────────────────────────────────────────────────────────────────── - -# Use TPM (Tmux Plugin Manager) to manage plugins -set -g @plugin 'tmux-plugins/tpm' - -# List of Plugins to Install -set -g @plugin 'nhdaly/tmux-better-mouse-mode' -set -g @plugin 'egel/tmux-gruvbox' # Gruvbox theme for tmux -set -g @plugin 'tmux-plugins/tmux-sensible' # Sensible tmux defaults -set -g @plugin 'tmux-plugins/tmux-yank' # Yank (copy-paste) support -set -g @plugin 'b0o/tmux-autoreload' # Auto-reload tmux config when updated - -# Initialize TPM (Tmux Plugin Manager) -run '~/.tmux/plugins/tpm/tpm' - -# ─────────────────────────────────────────────────────────────────────────── -# Gruvbox Theme Configuration -# ─────────────────────────────────────────────────────────────────────────── - -# Gruvbox color scheme settings -set -g @tmux-gruvbox 'dark256' # Can be 'dark', 'dark256', 'light', 'light256' -set -g @tmux-gruvbox-right-status-z '#h #{tmux_mode_indicator}' # Hostname and tmux mode indicator -set -g @tmux-gruvbox-right-status-x '%d.%m.%Y' # Date format (e.g., 30.01.2024) -# Customize status line to show the mode indicator when in prefix mode -set -g status on -set -g status-interval 2 # Refresh every 2 seconds - -# Ensure that when prefix is pressed, the mode indicator is shown -set -g mode-keys vi # Use vi keybindings in copy mode -set -g status-left-length 30 # Limit length of the left status line -set -g status-right-length 60 # Limit length of the right status line - -# ─────────────────────────────────────────────────────────────────────────── -# Additional Settings (Optional) -# ─────────────────────────────────────────────────────────────────────────── - -# Allow pane splitting and navigation using Emacs-like bindings -# 'C-h' (left) and 'C-l' (right) to switch between panes. -# This is already defined earlier in the config. - -# ─────────────────────────────────────────────────────────────────────────── -# Auto-reload tmux config on changes (with TPM) -# ─────────────────────────────────────────────────────────────────────────── +bind -n C-f resize-pane -Z # Reload tmux configuration without restarting tmux bind r source-file ~/.tmux.conf \; display-message "Config reloaded!" -# ─────────────────────────────────────────────────────────────────────────── -# Other customizations or plugins can go below as needed. -# ─────────────────────────────────────────────────────────────────────────── +# # ────────────────────────────────────< status configs >──────────────────────────────────── + +# ───────────────────────────────────────< plugins >───────────────────────────────────── +set -g @plugin 'nhdaly/tmux-better-mouse-mode' +set -g @plugin 'tmux-plugins/tmux-sensible' # Sensible tmux defaults +set -g @plugin 'tmux-plugins/tmux-yank' # Yank (copy-paste) support +set -g @plugin 'b0o/tmux-autoreload' # Auto-reload tmux config when updated +set -g @plugin 'MunifTanjim/tmux-mode-indicator' +# set -g @plugin 'tmux-plugins/tmux-prefix-highlight' +set -g @plugin 'tmux-plugins/tpm' + +if "test ! -d ~/.tmux/plugins/tpm" \ + "run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'" + +# Initialize TPM (Tmux Plugin Manager) +run '~/.tmux/plugins/tpm/tpm'