diff --git a/alacritty/files/alacritty.toml b/alacritty/files/alacritty.toml index 2a878d2..7c17017 100644 --- a/alacritty/files/alacritty.toml +++ b/alacritty/files/alacritty.toml @@ -11,7 +11,7 @@ import = ["~/.config/alacritty/dank-theme.toml"] [terminal.shell] program = "fish" -args = ["-l", "-c", "zellij; exec fish -l"] +args = ["-l", "-c", "tmux new; exec fish -l"] [window] opacity = 0.9 diff --git a/fish/files/conf.d/rustup.fish b/fish/files/conf.d/rustup.fish deleted file mode 100644 index e4cb363..0000000 --- a/fish/files/conf.d/rustup.fish +++ /dev/null @@ -1 +0,0 @@ -source "$HOME/.cargo/env.fish" diff --git a/fish/files/config.fish b/fish/files/config.fish index 3579918..e42b28d 100644 --- a/fish/files/config.fish +++ b/fish/files/config.fish @@ -25,7 +25,11 @@ end status is-interactive; and begin # Abbreviations - + abbr -a tx 'tmux' + abbr -a txa 'tmux attach' + abbr -a txl 'tmux list-sessions' + abbr -a txk 'tmux kill-session -t' + abbr -a txks 'tmux kill-server' # Aliases alias che chezmoi diff --git a/tmux/config.lua b/tmux/config.lua new file mode 100644 index 0000000..2e2fa77 --- /dev/null +++ b/tmux/config.lua @@ -0,0 +1,7 @@ +return { + target = { + linux = "~/.config/tmux", + macos = "~/.config/tmux", + windows = "~/.config/tmux", + } +} diff --git a/tmux/files/tmux.conf b/tmux/files/tmux.conf new file mode 100644 index 0000000..a57e48a --- /dev/null +++ b/tmux/files/tmux.conf @@ -0,0 +1,224 @@ +# ============================================= +# Tmux Configuration +# ============================================= + +# ----------------------------------------- +# Core Settings (Fixing Pi's Warning) +# ----------------------------------------- + +# Enable extended keys for modified Enter keys to work properly +set -g extended-keys on + +# Format for extended keys (csi-u required for Pi) +set -g extended-keys-format csi-u + +# Enable true color support +set -g default-terminal "tmux-256color" +set -ag terminal-overrides ",xterm-256color:RGB" + +# ============================================= +# Theme Colors (generated by matugen) +# ============================================= +source-file ~/.config/tmux/colors.conf + +# Faster escape time (for vim/neovim) +set -sg escape-time 10 + +# Increase scrollback buffer size +set -g history-limit 50000 + +# Enable mouse support (scroll, select, resize) +set -g mouse on + +# Start window and pane numbering at 1 (easier to reach) +set -g base-index 1 +setw -g pane-base-index 1 + +# Renumber windows when one is closed +set -g renumber-windows on + +# Allow focus events (for vim/neovim) +set -g focus-events on + +# ----------------------------------------- +# Prefix Key (Change from Ctrl+b to Ctrl+s) +# ----------------------------------------- + +unbind C-b +set -g prefix C-s +bind C-s send-prefix + +# ----------------------------------------- +# Window Management +# ----------------------------------------- + +# Create new window +bind c new-window -c "#{pane_current_path}" + +# Split panes with | and - (more intuitive) +bind | split-window -h -c "#{pane_current_path}" +bind - split-window -v -c "#{pane_current_path}" +unbind '"' +unbind % + +# Quick window switching with prefix + number +bind -r 1 select-window -t 1 +bind -r 2 select-window -t 2 +bind -r 3 select-window -t 3 +bind -r 4 select-window -t 4 +bind -r 5 select-window -t 5 +bind -r 6 select-window -t 6 +bind -r 7 select-window -t 7 +bind -r 8 select-window -t 8 +bind -r 9 select-window -t 9 + +# Swap windows left/right +bind -r < swap-window -t -1 +bind -r > swap-window -t +1 + +# ----------------------------------------- +# Pane Navigation (Vim-style) +# ----------------------------------------- + +# Move between panes with vim keys +bind h select-pane -L +bind j select-pane -D +bind k select-pane -U +bind l select-pane -R + +# Zellij-style: Alt+arrows to navigate panes (no prefix!) +bind -n M-Left select-pane -L +bind -n M-Down select-pane -D +bind -n M-Up select-pane -U +bind -n M-Right select-pane -R + +# Resize panes with prefix + hjkl +bind -r H resize-pane -L 5 +bind -r J resize-pane -D 5 +bind -r K resize-pane -U 5 +bind -r L resize-pane -R 5 + +# ----------------------------------------- +# Moving Panes (Zellij-like) +# ----------------------------------------- + +# Break pane into new window (pop out) +bind b break-pane + +# Join pane from another window (bring in) +bind j command-prompt -p "join pane from window #:" "join-pane -s '%%'" + +# Swap panes with directional keys +bind > swap-pane -D +bind < swap-pane -U + +# Mark pane + swap with marked pane (advanced) +bind m select-pane -m # Mark current pane +bind M swap-pane # Swap with marked pane + +# Move pane to another window by number +bind @ command-prompt -p "send pane to window #:" "join-pane -t ':%%'" + +# Alt+Shift+Left/Right for previous/next window (Zellij-style tabs) +bind -n M-S-Left previous-window +bind -n M-S-Right next-window + +# ----------------------------------------- +# Layouts (Stacking-like) +# ----------------------------------------- + +# Cycle through layouts: even-horizontal, even-vertical, main-horizontal, main-vertical, tiled +bind Space next-layout +bind BSpace previous-layout + +# Quick layout shortcuts +bind Enter select-layout tiled +bind M-1 select-layout even-horizontal +bind M-2 select-layout even-vertical +bind M-3 select-layout main-horizontal +bind M-4 select-layout main-vertical + +# Note: Pane resize with H/J/K/L is defined in the resize section above + +# ----------------------------------------- +# Copy Mode (Vim-style) +# ----------------------------------------- + +setw -g mode-keys vi + +# Enter copy mode with prefix + [ +bind [ copy-mode + +# v to start selection (like vim) +bind -T copy-mode-vi v send -X begin-selection + +# y to yank (copy) +bind -T copy-mode-vi y send -X copy-selection-and-cancel + +# Escape to exit copy mode +bind -T copy-mode-vi Escape send -X cancel + +# ----------------------------------------- +# Session Management +# ----------------------------------------- + +# Prefix + d to detach from session (keeps it running) +# Reattach with: tmux attach + +# Prefix + s to list and switch sessions +bind s choose-session + +# Prefix + $ to rename current session +bind $ command-prompt -I "#S" "rename-session '%%'" + +# Prefix + , to rename current window +bind , command-prompt -I "#W" "rename-window '%%'" + +# ----------------------------------------- +# Status Bar +# ----------------------------------------- + +# Update status bar every second +set -g status-interval 1 + +# Position at bottom +set -g status-position bottom + +# Status bar sizing +set -g status-left-length 40 +set -g status-right-length 100 + +# Note: Colors are defined in ~/.config/tmux/colors.conf (generated by matugen) +# The theme file sets: status-style, status-left, status-right, +# window-status-format, window-status-current-format, pane borders, etc. + +# ----------------------------------------- +# Other Useful Bindings +# ----------------------------------------- + +# Prefix + r to reload config +bind r source-file ~/.tmux.conf \; display "Config reloaded!" + +# Prefix + x to kill current pane (with confirmation) +bind x confirm-before -p "kill-pane #P? (y/n)" kill-pane + +# Prefix + & to kill current window (with confirmation) +bind & confirm-before -p "kill-window #W? (y/n)" kill-window + +# Synchronize all panes in current window (toggle) +bind S set synchronize-panes + +# Zoom current pane (toggle full-screen for pane) +bind z resize-pane -Z + +# ----------------------------------------- +# Notification Settings +# ----------------------------------------- + +# Enable activity monitoring +setw -g monitor-activity on +set -g visual-activity off + +# Bell settings +set -g bell-action any +set -g visual-bell off