diff --git a/tmux/tmux.sh b/tmux/tmux.sh new file mode 100755 index 0000000..95093a5 --- /dev/null +++ b/tmux/tmux.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env bash + +# -------------------------- +# 1. Install Tmux (Cross-Distro) +# -------------------------- +if ! command -v tmux >/dev/null 2>&1; then + echo "tmux not found. Attempting to install..." + + if command -v apt-get >/dev/null 2>&1; then + sudo apt-get update && sudo apt-get install -y tmux + elif command -v dnf >/dev/null 2>&1; then + sudo dnf install -y tmux + elif command -v pacman >/dev/null 2>&1; then + sudo pacman -Sy --noconfirm tmux + elif command -v zypper >/dev/null 2>&1; then + sudo zypper install -y tmux + elif command -v yum >/dev/null 2>&1; then + sudo yum install -y tmux + elif command -v apk >/dev/null 2>&1; then + sudo apk add tmux + else + echo "Error: Could not detect package manager. Please install tmux manually." + exit 1 + fi + echo "tmux installed successfully!" +else + echo "tmux is already installed." +fi + +# -------------------------- +# 2. Apply Configuration +# -------------------------- +TMUX_CONF="$HOME/.tmux.conf" + +# Forcibly remove existing config without backing up +rm -f "$TMUX_CONF" + +# Write the new configuration +cat << 'EOF' > "$TMUX_CONF" +# ========================== +# Tmux Minimal Style Config +# ========================== + +# -------------------------- +# Neovim / True Color Fixes +# -------------------------- +# Use modern tmux term if available, fixes background bleeding +set -g default-terminal "tmux-256color" + +# Force True Color (RGB/Tc) for ALL terminal emulators (* wildcard) +set -ag terminal-overrides ",*:Tc" +set -ag terminal-overrides ",*:RGB" + +# Pass through undercurl (squiggles) for Neovim +set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' +# Pass through colored underlines for Neovim +set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' + +# Fix Neovim ESC delay +set -sg escape-time 10 +# Allow Neovim to detect when the terminal window gains/loses focus +set -g focus-events on + +# -------------------------- +# Status Bar +# -------------------------- +set -g status-style "bg=default,fg=default" +set -g status-justify centre +set -g status-position bottom + +# Left side: Session name +set -g status-left-length 40 +set -g status-left "#[fg=green,bold][#S] #[default]" + +# Right side: Minimal time and date +set -g status-right-length 40 +set -g status-right "#[fg=color244]%H:%M #[fg=color250]%d-%b" + +# -------------------------- +# Window Status +# -------------------------- +# Inactive windows +set -g window-status-format " #I:#W " +set -g window-status-style "bg=default,fg=color244" + +# Active window (highlighted subtly) +set -g window-status-current-format " #I:#W " +set -g window-status-current-style "bg=default,fg=cyan,bold" + +# -------------------------- +# Pane Borders +# -------------------------- +set -g pane-border-style "fg=color238" +set -g pane-active-border-style "fg=cyan" + +# -------------------------- +# Quality of Life +# -------------------------- +set -g mouse on +set -g base-index 1 +setw -g pane-base-index 1 +set -g renumber-windows on +EOF + +echo "Old configuration deleted and new configuration applied to $TMUX_CONF!" + +# Reload tmux if it is currently running +if [ -n "$TMUX" ]; then + tmux source-file "$TMUX_CONF" + echo "Live tmux session reloaded with new styles." +fi