🚀 TMUX Pro & God-Tier: Guía, Optimización y Portapapeles en Linux Mint
Configuración Definitiva de TMUX, Portapapeles Sin Fricción y Navegación Ergonómica
Esta guía documenta la auditoría, corrección crítica del portapapeles y optimización ergonómica de la configuración de TMUX (
~/.tmux.conf) en Linux Mint (Cinnamon / GNOME Terminal).Resuelve definitivamente el problema de copia cruzada entre paneles paralelos (cuando al seleccionar texto en una división horizontal o vertical se copiaba el contenido del panel contiguo), implementa navegación instantánea sin prefijo con teclas
AltyShift, eleva la barra de estado al estilo pestañas modernas (top) con paleta Catppuccin Mocha, y unifica el portapapeles del sistema operativo mediantexclip.
- 🐧 MOC de Sistema: MOC Linux Mint & Dispositivos · Grabación de Terminal en OBS
🛑 El Problema: Copia Cruzada en Paneles Paralelos
Al trabajar con herramientas multitarea como antigravity-cli (AGY) o Neovim en paneles paralelos (splits verticales u horizontales), al seleccionar y copiar texto con el ratón se copiaba también el texto del panel vecino.
🔍 Causa Raíz
graph TD subgraph "Escenario 1: Terminal Nativa (Error)" T1["Arrastre con Shift o Ratón Nativo"] --> T2["GNOME Terminal lee toda la fila (170 cols)"] T2 --> T3["Cruza el borde divisorio vertical"] T3 --> T4["❌ Copia texto mezclado: Panel 1 + Panel 2"] end subgraph "Escenario 2: TMUX Gestionado (Solución)" M1["Arrastre normal con Mouse en TMUX"] --> M2["TMUX Copy-Mode encapsula el panel"] M2 --> M3["Selección limitada estrictamente a columnas [0 - 84]"] M3 --> M4["✅ Copia pura: Solo texto del panel activo"] end
- La Terminal vs TMUX: Para GNOME Terminal, la pantalla es una sola matriz continua de caracteres. Si se utiliza la selección nativa de la terminal (por ejemplo, manteniendo presionada la tecla
Shift), la terminal desconoce la división de paneles y copia de borde a borde horizontalmente. - Conflicto de
tmux-yank: El plugintmux-yankse cargaba al final del archivo y sobrescribía los eventos de ratón con:# Comportamiento por defecto de tmux-yank (problemático): copy-pipe-and-cancel "xclip -selection primary"- Guardaba el texto en el búfer
primary(el del clic de la rueda central de Linux) en lugar delclipboarddel sistema (el deCtrl + V). - Cerraba la selección inmediatamente (
cancel), por lo que no había retroalimentación visual. - Esto obligaba inconscientemente al usuario a recurrir a
Shift + Arrastrar, activando la copia cruzada horizontal de la terminal.
- Guardaba el texto en el búfer
🛠️ Solución Implementada
En ~/.tmux.conf se aplicó una corrección en tres capas:
- Configuración nativa de
tmux-yank: Se forzó a que el plugin use el portapapeles real del sistema y no cancele la selección al soltar el ratón:set -g @yank_selection 'clipboard' set -g @yank_selection_mouse 'clipboard' set -g @yank_action 'copy-pipe-no-clear' - Overrides post-TPM garantizados:
Al final del archivo (después de inicializar TPM) se definieron reglas directas con
xclip:- Soltar arrastre: Copia al portapapeles del sistema (
xclip -in -selection clipboard) manteniendo el resaltado. - Doble clic: Selecciona y copia la palabra exacta al portapapeles sin salirse del panel.
- Triple clic: Selecciona y copia la línea completa exacta de ese panel al portapapeles sin tocar el panel vecino.
- Soltar arrastre: Copia al portapapeles del sistema (
- Modo Bloque / Rectangular (
Ctrl + v): Dentro del modo copia de vi (Prefix + [),C-vactiva la selección rectangular para recortar columnas específicas sin saltos de línea.
EL TRUCO MAESTRO: ZOOM DE PANEL (
Prefix + z)Cuando se trabaja en paralelo y se desea leer o copiar un bloque extenso de texto sin ninguna distracción visual:
- Presionar
Ctrl+ay luegoz(Prefix + z). El panel activo se maximiza al 100% de la pantalla.- Copiar con total comodidad.
- Volver a presionar
Ctrl+ay luegozpara restaurar la cuadrícula de paneles intacta.
⚡ Mapa de Atajos y Nuevas Capacidades
| Categoría | Acción | Atajo de Teclado |
|---|---|---|
| Prefijo (Prefix) | Tecla maestra de control | Ctrl + a (Cambiado de Ctrl+b) |
| Navegación Paneles | Saltar entre paneles (directo) | Alt + ← ↓ ↑ → |
| Navegación Paneles | Alternativa Vim (directo) | Alt + h j k l |
| Pestañas (Ventanas) | Cambiar entre ventanas (directo) | Shift + ← / → |
| División de Pantalla | Dividir verticalmente (en paralelo) | Prefix + | (mantiene directorio) |
| División de Pantalla | Dividir horizontalmente (arriba/abajo) | Prefix + - (mantiene directorio) |
| Gestión de Ventanas | Crear nueva ventana | Prefix + c (mantiene directorio) |
| Zoom de Panel | Maximizar / Restaurar panel | Prefix + z |
| Redimensionar | Ajustar tamaño de paneles (+/- 5 celdas) | Prefix + H / J / K / L |
| Portapapeles Ratón | Copiar selección al portapapeles | Arrastrar con ratón (sin Shift) |
| Portapapeles Ratón | Copiar palabra del panel | Doble clic |
| Portapapeles Ratón | Copiar línea entera del panel | Triple clic |
| Modo Copia Vim | Entrar al historial de scroll | Prefix + [ |
| Modo Copia Vim | Iniciar selección / Modo Rectángulo / Copiar | v / Ctrl+v / y |
| Sessionizer (FZF) | Salto difuso entre proyectos | Prefix + f |
| Recarga en Vivo | Recargar configuración sin reiniciar | Prefix + r |
🎨 Estilo Visual: Catppuccin Mocha
La interfaz gráfica de TMUX fue adaptada para maximizar la visibilidad y ergonomía:
- Posición Superior (
top): La barra de estado se ubica en la parte alta de la terminal, actuando como una barra de pestañas moderna (similar a Google Chrome o VS Code) y liberando el área inferior para el prompt de la shell. - Identificación de Panel Activo: Borde resaltado en azul brillante (
#89b4fa, bold), mientras los paneles inactivos quedan en tono discreto (#313244). - Pestaña Activa: Resaltada en fondo verde menta suave (
#a6e3a1) con texto en contraste oscuro. - Bloque Derecho: Muestra la fecha (
%d/%m/%Y), la hora (%H:%M) y el hostname del equipo en acento pastel (#f38ba8).
🔌 Ecosistema de Plugins (TPM) y Persistencia
El gestor de plugins TPM (~/.tmux/plugins/tpm) mantiene sincronizado el siguiente stack:
tmux-sensible: Opciones base estándar y seguras reconocidas por la comunidad.vim-tmux-navigator: Integración bidireccional perfecta con Neovim (Ctrl + h/j/k/lcruza transparentemente entre splits de Neovim y paneles de TMUX).tmux-resurrect: Permite guardar y restaurar manualmente el estado completo de sesiones, paneles y programas.tmux-continuum: Automatiza el guardado de sesiones cada 15 minutos (@continuum-save-interval '15') y restaura todo automáticamente al arrancar TMUX (@continuum-restore 'on').tmux-yank: Sincronización del portapapeles adaptada al entorno X11 de Linux Mint.
Comandos de Mantenimiento de Plugins:
- Prefix + I (Shift + i): Descarga e instala nuevos plugins agregados a la lista
@plugin. - Prefix + U: Actualiza todos los plugins instalados.
- Prefix + Alt + u: Elimina plugins desinstalados de la lista.
- Prefix + Ctrl + s: Guardar sesión manualmente (Resurrect).
- Prefix + Ctrl + r: Restaurar sesión manualmente (Resurrect).
📜 Archivo de Configuración Completo (~/.tmux.conf)
Ubicación en el sistema: file:///home/alexwce/.tmux.conf
# ==============================================================================
# 🚀 TMUX PRO & GOD-TIER CONFIGURATION — alexwce
# ==============================================================================
# ------------------------------------------------------------------------------
# 1. Comportamiento y Usabilidad Básica
# ------------------------------------------------------------------------------
# Habilitar soporte completo de ratón (clic, arrastrar bordes, scroll con rueda)
set -g mouse on
# Iniciar conteo de ventanas y paneles en 1 (en vez de 0) para alinearse con el teclado
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
# Eliminar retraso al presionar ESC (vital para Vim / Neovim)
set -s escape-time 0
# Historial amplio para no perder logs de servidores o tests largos (50k líneas)
set -g history-limit 50000
# ------------------------------------------------------------------------------
# 2. Colores y Terminal (True Color RGB)
# ------------------------------------------------------------------------------
set -g default-terminal "tmux-256color"
set -as terminal-features ",xterm-256color:RGB"
# ------------------------------------------------------------------------------
# 3. Tecla Prefix y Atajos de Teclado Intuitivos
# ------------------------------------------------------------------------------
# Cambiar Prefix de Ctrl+b a Ctrl+a (más rápido y ergonómico con la mano izquierda)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Navegación directa entre paneles SIN presionar Prefix (Alt + Flechas)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Alternativa con teclas Vim (Alt + h, j, k, l)
bind -n M-h select-pane -L
bind -n M-j select-pane -D
bind -n M-k select-pane -U
bind -n M-l select-pane -R
# Cambiar entre ventanas (pestañas) SIN presionar Prefix (Shift + Flechas)
bind -n S-Left previous-window
bind -n S-Right next-window
# Dividir paneles vertical y horizontalmente manteniendo el directorio actual
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# Crear nueva ventana manteniendo el directorio actual
bind c new-window -c "#{pane_current_path}"
# Redimensionar paneles con Prefix + H, J, K, L (de 5 en 5 caracteres)
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
# Recargar configuración al instante con Prefix + r
bind r source-file ~/.tmux.conf \; display-message "⚡ ¡Configuración de tmux recargada con éxito!"
# Sessionizer con fzf: Prefix + f abre el buscador difuso de proyectos
bind-key -r f run-shell "tmux neww ~/.local/bin/tmux-sessionizer"
# ------------------------------------------------------------------------------
# 4. Modo Copia Estilo Vim, Portapapeles y Ratón
# ------------------------------------------------------------------------------
set -s set-clipboard on
setw -g mode-keys vi
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi C-v send -X rectangle-toggle
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "xclip -in -selection clipboard"
# Configuración de comportamiento para el plugin tmux-yank:
# Envía al portapapeles real (Ctrl+V) en vez de al búfer de clic central (primary)
set -g @yank_selection 'clipboard'
set -g @yank_selection_mouse 'clipboard'
set -g @yank_action 'copy-pipe-no-clear'
# ------------------------------------------------------------------------------
# 5. Estilo Visual: Bordes y Barra Catppuccin
# ------------------------------------------------------------------------------
# Resaltar claramente cuál es el panel activo con un borde verde/azul brillante
set -g pane-border-style "fg=#313244"
set -g pane-active-border-style "fg=#89b4fa,bold"
# Barra de estado arriba estilo pestañas de navegador/IDE moderno
set -g status-position top
set -g status-interval 2
set -g status-style "bg=#181825,fg=#cdd6f4"
# Izquierda: Nombre de la sesión activa
set -g status-left-length 40
set -g status-left "#[bg=#89b4fa,fg=#11111b,bold] ❐ #S #[bg=default,fg=default] "
# Centro: Ventanas
set -g window-status-separator " "
set -g window-status-format "#[bg=#313244,fg=#a6adc8] #I:#W "
set -g window-status-current-format "#[bg=#a6e3a1,fg=#11111b,bold] #I:#W* #[bg=default,fg=default]"
# Derecha: Fecha, hora y hostname
set -g status-right-length 100
set -g status-right "#[fg=#a6adc8]%d/%m/%Y │ %H:%M #[bg=#f38ba8,fg=#11111b,bold] #h "
# ------------------------------------------------------------------------------
# 6. Ecosistema de Plugins (TPM)
# ------------------------------------------------------------------------------
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'christoomey/vim-tmux-navigator'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'tmux-plugins/tmux-yank'
# Configuración de Persistencia Automática
set -g @resurrect-capture-pane-contents 'on'
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'
# Inicializar TMUX Plugin Manager (siempre al final de las declaraciones de plugins)
run '~/.tmux/plugins/tpm/tpm'
# ------------------------------------------------------------------------------
# 7. Overrides de Selección y Portapapeles (después de cargar TPM/tmux-yank)
# ------------------------------------------------------------------------------
# 1. Al arrastrar y soltar con el ratón: copiar directo a clipboard del sistema (Ctrl+V)
# y mantener la selección visual sin cerrarla abruptamente:
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-no-clear "xclip -in -selection clipboard"
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-no-clear "xclip -in -selection clipboard"
# 2. Doble clic: copia la palabra bajo el cursor al portapapeles sin cruzar paneles:
bind-key -T copy-mode-vi DoubleClick1Pane select-pane \; send-keys -X select-word \; send-keys -X copy-pipe-no-clear "xclip -in -selection clipboard"
bind-key -n DoubleClick1Pane select-pane -t = \; copy-mode -M \; send-keys -X select-word \; send-keys -X copy-pipe-no-clear "xclip -in -selection clipboard"
# 3. Triple clic: copia la línea completa exacta del panel activo al portapapeles:
bind-key -T copy-mode-vi TripleClick1Pane select-pane \; send-keys -X select-line \; send-keys -X copy-pipe-no-clear "xclip -in -selection clipboard"
bind-key -n TripleClick1Pane select-pane -t = \; copy-mode -M \; send-keys -X select-line \; send-keys -X copy-pipe-no-clear "xclip -in -selection clipboard"🔗 Referencias y Conexiones
- MOC Central del Sistema: 🐧 MOC Linux Mint & Recursos Web
- Hub Principal de Conocimiento: ⚡ Ryukami Labs
- Script Sessionizer:
~/.local/bin/tmux-sessionizer - Archivo Dotfile:
~/.tmux.conf