diff --git a/.gitmodules b/.gitmodules index 64cdafa..a3ac2e3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,7 +15,7 @@ url = https://git.k4li.de/dotfiles/zsh.git branch = main [submodule "tmux"] - path = tmux + path = dotfiles/.config/tmux url = https://git.k4li.de/dotfiles/tmux.git branch = main [submodule "dotfiles/.config/wlogout"] diff --git a/dotfiles/.config/tmux/.gitignore b/dotfiles/.config/tmux/.gitignore new file mode 100644 index 0000000..b78112a --- /dev/null +++ b/dotfiles/.config/tmux/.gitignore @@ -0,0 +1 @@ +.tmux/plugins/ diff --git a/dotfiles/.config/tmux/.stow-local-ignore b/dotfiles/.config/tmux/.stow-local-ignore new file mode 100644 index 0000000..e647e48 --- /dev/null +++ b/dotfiles/.config/tmux/.stow-local-ignore @@ -0,0 +1,6 @@ +\.git +\.gitignore +\.gitmodules +^/README.* +^/LICENCE.* +^/COPYING diff --git a/dotfiles/.config/tmux/tmux.conf b/dotfiles/.config/tmux/tmux.conf new file mode 100644 index 0000000..26aac8a --- /dev/null +++ b/dotfiles/.config/tmux/tmux.conf @@ -0,0 +1,157 @@ +# ─────────────────────────────────────────────────────────────────────────── +# General tmux Settings +# ─────────────────────────────────────────────────────────────────────────── + +# ─< Enable 256 color support for tmux >────────────────────────────────────────────────── +set-option -sa terminal-overrides ",xterm-256color*:Tc" + +set -s escape-time 3 + +# ─< Enable mouse support (for scrolling, resizing, etc.) >─────────────────────────────── +set -g mouse on + +# Set the prefix key to C-Space instead of default C-b +unbind C-b + +# ─< set the prefix to "C-Space" >──────────────────────────────────────────────────────── +set -g prefix C-Space +bind C-Space send-prefix +bind h copy-mode + +set -g visual-activity on +set -g visual-bell on +set -g status-keys vi +# ─< set v for starting selection in copy mode >────────────────────────────────────────── +bind -T copy-mode-vi v send -X begin-selection + +# ─< Reload tmux configuration without restarting tmux >────────────────────────────────── +bind r source-file ~/.tmux.conf \; display-message "Config reloaded!" + +# ─< Use C-h and C-l to switch between panes >──────────────────────────────────────────── +bind -n C-h select-pane -L +bind -n C-l select-pane -R +bind -n C-f resize-pane -Z + + +# 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 '  ' + +# prompt to display when tmux has synchronized panes +set -g @mode_indicator_sync_prompt '  ' + +# 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=#1d2021' + +# style values for copy prompt +set -g @mode_indicator_copy_mode_style 'bg=cyan,fg=#1d2021' + +# style values for sync prompt +set -g @mode_indicator_sync_mode_style 'bg=red,fg=#1d2021' + +# style values for empty prompt +set -g @mode_indicator_empty_mode_style 'bg=#fabd2f,fg=#1d2021' + +# ────────────────────────────────< 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 @plugin 'https://git.k4li.de/mirrors/tmux-gruvbox' +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 "$USER@#h " # Hostname and tmux mode indicator +set -g @tmux-gruvbox-right-status-x '#[fg=yellow] %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 +# ─────────────────────────────────────────────────────────────────────────── + +# # ────────────────────────────────────< 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' diff --git a/tmux b/tmux deleted file mode 160000 index 25036ec..0000000 --- a/tmux +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 25036ec9860880e0e85b3f8d69bfe43ad03f05c9