summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Rahm <rahm@josher.dev>2026-09-09 17:45:44 +0000
committerJosh Rahm <rahm@josher.dev>2026-09-09 17:45:44 +0000
commit323c84c462f9ef8f6a8c29190b2d6605b7c236f0 (patch)
tree29ba5d7ed0b5688b11b50acda34c861587d06a82
downloadtmux-config-323c84c462f9ef8f6a8c29190b2d6605b7c236f0.tar.gz
tmux-config-323c84c462f9ef8f6a8c29190b2d6605b7c236f0.tar.bz2
tmux-config-323c84c462f9ef8f6a8c29190b2d6605b7c236f0.zip
Initial tmux config commit.
-rw-r--r--hosts/charm.conf12
-rw-r--r--tmux.conf104
2 files changed, 116 insertions, 0 deletions
diff --git a/hosts/charm.conf b/hosts/charm.conf
new file mode 100644
index 0000000..f2013c7
--- /dev/null
+++ b/hosts/charm.conf
@@ -0,0 +1,12 @@
+# Gentoo Glass palette for charm.
+# Loaded by ../tmux.conf through #{host_short}.
+
+set -g @theme_bg '#17121f' # abyss
+set -g @theme_surface '#281f35' # smoky glass
+set -g @theme_border '#4a3a60' # mountain ridge
+set -g @theme_muted '#8f80a5' # muted lavender
+set -g @theme_accent '#9d78d0' # amethyst
+set -g @theme_active '#b99ae5' # illuminated glass
+set -g @theme_fg '#d9c8f2' # frost
+set -g @theme_bright '#f5f1fa' # snow highlight
+set -g @theme_alert '#744f91' # deep orchid
diff --git a/tmux.conf b/tmux.conf
new file mode 100644
index 0000000..969ac53
--- /dev/null
+++ b/tmux.conf
@@ -0,0 +1,104 @@
+# Shared tmux configuration.
+# Requires tmux 3.2+ and a font containing the Powerline separators.
+
+# Terminal capabilities -------------------------------------------------------
+# TERM inside tmux should describe tmux, not the outer terminal.
+set -g default-terminal "tmux-256color"
+
+# RGB is the official true-colour capability; Tc covers older tmux/terminfo.
+set -as terminal-features ",xterm*:RGB"
+set -as terminal-overrides ",xterm*:Tc"
+
+# extended-keys and escape-time are server options.
+set -s extended-keys always
+set -s escape-time 0
+
+# Prefix ----------------------------------------------------------------------
+# Explicitly remove the old local override so reloading also cleans it up.
+unbind C-a
+set -g prefix C-b
+bind C-b send-prefix
+
+# Prefix-a returns to the last window.
+bind a last-window
+
+# General ---------------------------------------------------------------------
+set -g base-index 1
+setw -g pane-base-index 1
+set -g renumber-windows on
+
+setw -g aggressive-resize on
+setw -g mode-keys vi
+setw -g automatic-rename on
+
+set -g mouse on
+set -g allow-passthrough on
+
+set -g set-titles on
+set -g set-titles-string "#T / #S / #W"
+set -s set-clipboard off
+set -g update-environment "DISPLAY XAUTHORITY WAYLAND_DISPLAY XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS"
+
+# Activity --------------------------------------------------------------------
+setw -g monitor-activity on
+set -g visual-activity on
+
+# Theme -----------------------------------------------------------------------
+# Fallback colors. A host file may override any of these before styles are set.
+set -g @theme_bg '#17121f'
+set -g @theme_surface '#281f35'
+set -g @theme_border '#4a3a60'
+set -g @theme_muted '#8f80a5'
+set -g @theme_accent '#9d78d0'
+set -g @theme_active '#b99ae5'
+set -g @theme_fg '#d9c8f2'
+set -g @theme_bright '#f5f1fa'
+set -g @theme_alert '#744f91'
+
+# For example, host "charm" loads ~/.config/tmux/hosts/charm.conf.
+# Missing host files are intentionally ignored.
+source-file -qF '~/.config/tmux/hosts/#{host_short}.conf'
+
+set -g status-style 'bg=#{@theme_bg},fg=#{@theme_fg}'
+set -g message-style 'bg=#{@theme_accent},fg=#{@theme_bg},bold'
+set -g message-command-style 'bg=#{@theme_surface},fg=#{@theme_bright},bold'
+set -g mode-style 'bg=#{@theme_accent},fg=#{@theme_bg},bold'
+
+set -g pane-border-style 'fg=#{@theme_border}'
+set -g pane-active-border-style 'fg=#{@theme_active},bold'
+set -g pane-border-status off
+
+set -g window-status-style 'fg=#{@theme_muted},bg=#{@theme_bg}'
+set -g window-status-activity-style 'fg=#{@theme_bright},bg=#{@theme_border},bold'
+set -g window-status-bell-style 'fg=#{@theme_bright},bg=#{@theme_alert},bold'
+
+# Status bar ------------------------------------------------------------------
+set -g status on
+set -g status-position bottom
+set -g status-interval 1
+set -g status-justify centre
+set -g status-left-length 80
+set -g status-right-length 80
+
+# Host and kernel flow from bright glass into the dark bar.
+set -g status-left '#[fg=#{@theme_bg},bg=#{@theme_accent},bold] #H #[fg=#{@theme_accent},bg=#{@theme_surface},nobold]#[fg=#{@theme_fg},bg=#{@theme_surface}] #(uname -r) #[fg=#{@theme_surface},bg=#{@theme_bg}]'
+
+# Uptime and clock flow back toward the bright glass accent.
+set -g status-right '#[fg=#{@theme_surface},bg=#{@theme_bg}]#[fg=#{@theme_fg},bg=#{@theme_surface}] #(uptime -p 2>/dev/null | sed "s/^up //") #[fg=#{@theme_accent},bg=#{@theme_surface}]#[fg=#{@theme_bg},bg=#{@theme_accent},bold] %a %I:%M:%S %p │ %Y-%m-%d '
+
+set -g window-status-separator ""
+set -g window-status-format '#[fg=#{@theme_muted},bg=#{@theme_bg}] #I:#W '
+set -g window-status-current-format '#[fg=#{@theme_bg},bg=#{@theme_active},bold] #I:#W #[fg=#{@theme_active},bg=#{@theme_bg},nobold]'
+
+# Pane and window bindings ----------------------------------------------------
+bind -r h select-pane -L
+bind -r j select-pane -D
+bind -r k select-pane -U
+bind -r l select-pane -R
+
+bind c new-window -c "#{pane_current_path}"
+bind '"' split-window -c "#{pane_current_path}"
+bind % split-window -h -c "#{pane_current_path}"
+
+# Reload ----------------------------------------------------------------------
+bind r source-file ~/.tmux.conf \; display-message "Config reloaded"