From 108d9a5d26607db2c08e093428c06a1f5614f1aa Mon Sep 17 00:00:00 2001 From: "Thomas G. Lopes" Date: Wed, 11 Mar 2026 19:31:32 +0000 Subject: [PATCH] fix tmux keybindings and colors --- matugen/files/templates/tmux-colors.conf | 77 ++++++++++-------------- tmux/files/tmux.conf | 37 +++++++++--- 2 files changed, 61 insertions(+), 53 deletions(-) diff --git a/matugen/files/templates/tmux-colors.conf b/matugen/files/templates/tmux-colors.conf index d1cee82..fc2b28f 100644 --- a/matugen/files/templates/tmux-colors.conf +++ b/matugen/files/templates/tmux-colors.conf @@ -1,94 +1,81 @@ # Tmux theme colors (generated by matugen) -# Do not edit manually - run `matugen` to regenerate +# Uses Material Design 3 semantic color system # ============================================= -# Theme Colors +# Semantic Color Roles # ============================================= -# Primary colors +# Primary - main brand color PRIMARY={{colors.primary.default.hex}} ON_PRIMARY={{colors.on_primary.default.hex}} -PRIMARY_CONTAINER={{colors.primary_container.default.hex}} -ON_PRIMARY_CONTAINER={{colors.on_primary_container.default.hex}} -# Secondary colors +# Secondary - complementary accent SECONDARY={{colors.secondary.default.hex}} ON_SECONDARY={{colors.on_secondary.default.hex}} -SECONDARY_CONTAINER={{colors.secondary_container.default.hex}} -ON_SECONDARY_CONTAINER={{colors.on_secondary_container.default.hex}} -# Tertiary colors +# Tertiary - contrasting accent TERTIARY={{colors.tertiary.default.hex}} ON_TERTIARY={{colors.on_tertiary.default.hex}} -TERTIARY_CONTAINER={{colors.tertiary_container.default.hex}} -ON_TERTIARY_CONTAINER={{colors.on_tertiary_container.default.hex}} -# Surface colors +# Surface - backgrounds at different elevations SURFACE={{colors.surface.default.hex}} -SURFACE_DIM={{colors.surface_dim.default.hex}} -SURFACE_BRIGHT={{colors.surface_bright.default.hex}} SURFACE_CONTAINER={{colors.surface_container.default.hex}} -SURFACE_CONTAINER_LOW={{colors.surface_container_low.default.hex}} -SURFACE_CONTAINER_HIGH={{colors.surface_container_high.default.hex}} SURFACE_VARIANT={{colors.surface_variant.default.hex}} +INVERSE_SURFACE={{colors.inverse_surface.default.hex}} -# Text colors +# On colors - text/icons on surfaces ON_SURFACE={{colors.on_surface.default.hex}} ON_SURFACE_VARIANT={{colors.on_surface_variant.default.hex}} +INVERSE_ON_SURFACE={{colors.inverse_on_surface.default.hex}} -# Utility colors +# Outlines - borders and dividers OUTLINE={{colors.outline.default.hex}} OUTLINE_VARIANT={{colors.outline_variant.default.hex}} + +# Error - destructive actions ERROR={{colors.error.default.hex}} ON_ERROR={{colors.on_error.default.hex}} -ERROR_CONTAINER={{colors.error_container.default.hex}} -ON_ERROR_CONTAINER={{colors.on_error_container.default.hex}} -INVERSE_SURFACE={{colors.inverse_surface.default.hex}} -INVERSE_ON_SURFACE={{colors.inverse_on_surface.default.hex}} -INVERSE_PRIMARY={{colors.inverse_primary.default.hex}} -SCRIM={{colors.scrim.default.hex}} -SHADOW={{colors.shadow.default.hex}} # ============================================= -# Tmux Styling using theme colors +# Tmux Styling with Semantic Colors # ============================================= -# Status bar styling -set -g status-style "bg={{colors.surface.default.hex}},fg={{colors.on_surface.default.hex}}" -set -g status-left "#[fg={{colors.on_primary.default.hex}},bg={{colors.primary.default.hex}},bold] #S #[default] " +# Status bar - surface container for elevation +set -g status-style "bg={{colors.surface_container.default.hex}},fg={{colors.on_surface.default.hex}}" -# Status bar right side - date and time +# Left side - primary with on-primary text (max contrast) +set -g status-left "#[fg={{colors.on_primary.default.hex}},bg={{colors.primary.default.hex}},bold] #S #[bg={{colors.surface_container.default.hex}}] " + +# Right side - muted text set -g status-right "#[fg={{colors.on_surface_variant.default.hex}}]%Y-%m-%d #[fg={{colors.on_surface.default.hex}}]%H:%M #[default]" -# Window status format +# Window tabs - variant for inactive, primary for active set -g window-status-format "#[fg={{colors.on_surface_variant.default.hex}}] #I:#W " -set -g window-status-current-format "#[fg={{colors.on_primary_container.default.hex}},bg={{colors.primary_container.default.hex}},bold] #I:#W #[default]" +set -g window-status-current-format "#[fg={{colors.on_primary.default.hex}},bg={{colors.primary.default.hex}},bold] #I:#W #[default]" set -g window-status-separator "" set -g status-justify left -# Pane borders +# Pane borders - outline for inactive, primary for active set -g pane-border-style "fg={{colors.outline_variant.default.hex}}" set -g pane-active-border-style "fg={{colors.primary.default.hex}}" -# Message styling (for confirm dialogs like kill-pane) - use high contrast -set -g message-style "fg={{colors.on_surface.default.hex}},bg={{colors.primary.default.hex}},bold" -set -g message-command-style "fg={{colors.on_surface.default.hex}},bg={{colors.secondary.default.hex}}" +# Messages - surface variant bg with on-surface text +set -g message-style "bg={{colors.surface_variant.default.hex}},fg={{colors.on_surface.default.hex}},bold" +set -g message-command-style "bg={{colors.surface_container.default.hex}},fg={{colors.on_surface.default.hex}}" -# Mode styling (copy mode, etc.) -set -g mode-style "fg={{colors.on_tertiary.default.hex}},bg={{colors.tertiary_container.default.hex}}" +# Copy mode - tertiary accent +set -g mode-style "bg={{colors.tertiary.default.hex}},fg={{colors.on_tertiary.default.hex}}" -# Clock mode +# Clock set -g clock-mode-color "{{colors.primary.default.hex}}" # Selection highlighting -set -g copy-mode-match-style "fg={{colors.on_tertiary.default.hex}},bg={{colors.tertiary_container.default.hex}}" -set -g copy-mode-current-match-style "fg={{colors.on_primary.default.hex}},bg={{colors.primary_container.default.hex}},bold" +set -g copy-mode-match-style "bg={{colors.tertiary_container.default.hex}},fg={{colors.on_tertiary_container.default.hex}}" +set -g copy-mode-current-match-style "bg={{colors.primary.default.hex}},fg={{colors.on_primary.default.hex}},bold" -# Popup styling +# Popups and menus set -g popup-style "bg={{colors.surface_container.default.hex}},fg={{colors.on_surface.default.hex}}" set -g popup-border-style "fg={{colors.outline.default.hex}}" - -# Menu styling set -g menu-style "bg={{colors.surface_container.default.hex}},fg={{colors.on_surface.default.hex}}" -set -g menu-selected-style "bg={{colors.primary_container.default.hex}},fg={{colors.on_primary_container.default.hex}}" +set -g menu-selected-style "bg={{colors.primary.default.hex}},fg={{colors.on_primary.default.hex}}" set -g menu-border-style "fg={{colors.outline.default.hex}}" diff --git a/tmux/files/tmux.conf b/tmux/files/tmux.conf index 9ca0a43..c267f80 100644 --- a/tmux/files/tmux.conf +++ b/tmux/files/tmux.conf @@ -92,8 +92,8 @@ bind -n M-Down select-pane -D bind -n M-Up select-pane -U bind -n M-Right select-pane -R -# Resize panes - Ctrl+R then arrows (no prefix needed) -bind -n C-r switch-client -T resize-pane +# Resize panes - Ctrl+S then r, then arrows +bind r switch-client -T resize-pane bind -T resize-pane Left resize-pane -L 5 \; switch-client -T resize-pane bind -T resize-pane Right resize-pane -R 5 \; switch-client -T resize-pane bind -T resize-pane Up resize-pane -U 5 \; switch-client -T resize-pane @@ -115,8 +115,8 @@ bind j command-prompt -p "join pane from window #:" "join-pane -s '%%'" bind > swap-pane -D bind < swap-pane -U -# Move panes around - Ctrl+E then arrows (no prefix needed, stays in mode) -bind -n C-e switch-client -T move-pane +# Move panes around - Ctrl+s m then arrows +bind m switch-client -T move-pane bind -T move-pane Left swap-pane -s '{left-of}' \; switch-client -T move-pane bind -T move-pane Right swap-pane -s '{right-of}' \; switch-client -T move-pane bind -T move-pane Up swap-pane -s '{up-of}' \; switch-client -T move-pane @@ -125,8 +125,8 @@ bind -T move-pane Escape switch-client -T root bind -T move-pane Enter switch-client -T root # Mark pane + swap with marked pane (advanced) -bind m select-pane -m # Mark current pane -bind M swap-pane # Swap with marked pane +bind M select-pane -m # Mark current pane (capital M) +bind * swap-pane # Swap with marked pane # Move pane to another window by number bind @ command-prompt -p "send pane to window #:" "join-pane -t ':%%'" @@ -227,8 +227,8 @@ set -g status-right-length 150 # Other Useful Bindings # ----------------------------------------- -# Prefix + r to reload config -bind r source-file ~/.config/tmux/tmux.conf \; display "Config reloaded!" +# Prefix + . to reload config +bind . source-file ~/.config/tmux/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 @@ -242,6 +242,27 @@ bind S set synchronize-panes # Zoom current pane (toggle full-screen for pane) bind z resize-pane -Z +# ----------------------------------------- +# Plugins (local dotfiles) +# ----------------------------------------- + +# Set plugin path to dotfiles location +set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.config/tmux/plugins/' + +# Resurrect settings +set -g @resurrect-save 'S' +set -g @resurrect-restore 'L' +set -g @resurrect-capture-pane-contents 'on' +set -g @resurrect-strategy-nvim 'session' + +# Continuum settings - auto-save every 15 minutes +set -g @continuum-save-interval '15' +set -g @continuum-restore 'on' + +# Load plugins directly (bypass TPM) +run '~/.config/tmux/plugins/tmux-resurrect/resurrect.tmux' +run '~/.config/tmux/plugins/tmux-continuum/continuum.tmux' + # ----------------------------------------- # Notification Settings # -----------------------------------------