Pantalla tmux vs. GNU [cerrado]

194

Navegando por las preguntas que encontré sobre tmux (normalmente usaba GNU Screen). Mi pregunta es cuáles son los pros y los contras de cada uno de ellos. Especialmente no pude encontrar mucho sobre tmux.

Maciej Piechotka
fuente
99
También discutido en superuser.com/questions/236158/tmux-vs-screen
Lloyd Dewolf
55
Como se puede ver en las buenas respuestas a continuación, son no basada en opiniones.
reinierpost
@reinierpost: parece que muchas personas aquí son demasiado rápidas para cerrar preguntas como "principalmente basadas en opiniones". Sin embargo, podemos votar para reabrir.
MountainX
Aunque esta pregunta es una pregunta de comparación, creo que los argumentos a favor y en contra son lo suficientemente objetivos y, por lo tanto, la razón de opinión no está bien aquí. Puede verificar la pregunta de SU vinculada, las respuestas están bastante bien.
Peter

Respuestas:

122

Desde su sitio web :

  • ¿En qué se diferencia tmux de la pantalla GNU? ¿Qué más ofrece?

tmux ofrece varias ventajas sobre la pantalla:

  • un modelo cliente-servidor claramente definido: las ventanas son entidades independientes que pueden conectarse simultáneamente a múltiples sesiones y verse desde múltiples clientes (terminales), así como moverse libremente entre sesiones dentro del mismo servidor tmux;
  • una interfaz de comandos coherente y bien documentada, con la misma sintaxis, ya sea que se use de forma interactiva, como enlace de teclas o desde el shell;
  • fácilmente programable desde el shell;
  • múltiples tampones de pasta;
  • elección de diseños de teclas vi o emacs;
  • una opción para limitar el tamaño de la ventana;
  • una sintaxis de línea de estado más utilizable, con la capacidad de mostrar la primera línea de salida de un comando específico;
  • un código base más limpio, moderno, fácilmente extendido y con licencia BSD.

Todavía hay algunas características que la pantalla incluye que tmux omite:

  • soporte incorporado de serie y telnet; esto es hinchado y es poco probable que se agregue a tmux;
  • Soporte de plataforma más amplio, por ejemplo IRIX y HP-UX, y para terminales impares.
nisc
fuente
44
maldición ... ahora quiero probar tmux ... solo porque la pantalla no me funcionó debido a la falta de teclas vi.
xenoterracide
1
¿Las combinaciones de teclas vi o emacs solo significan que tmux viene con dos convenientes conjuntos de valores predeterminados? Es posible reconfigurar completamente las combinaciones de teclas de la pantalla con su archivo rc.
jw013
Puede definir asociaciones de teclas arbitrarias. Ver: openbsd.org/cgi-bin/…
nisc
Cuando hablan acerca de la implementación, deben finalmente resolver el error estúpido <C-Left>en vimen tmux.
yo'
45

Una diferencia está en cómo actúan los dos cuando se conectan múltiples terminales a una sola sesión.

Con pantalla, la vista de cada terminal conectado es independiente de las demás. Con tmux, todos los terminales conectados ven lo mismo.

Digamos que tiene dos terminales conectadas a una sola sesión tmux. Si escribe ^B1 en un terminal, el otro terminal también cambia a la ventana 1.

Cuando tiene dos terminales conectados a una sola sesión de pantalla y escribe ^A1 en uno, no tiene efecto en el otro terminal.

Esto se basa en mi experiencia con tmux 1.2; Veo que 1.3 está fuera, pero no noté nada en el registro de cambios sobre este cambio de comportamiento.

Si te gusta el comportamiento de la pantalla y lo quieres en tmux:

Si se llama a su sesión tmux original 0(la predeterminada), puede hacerlo tmux new-session -t 0) para iniciar una nueva sesión independiente conectada al mismo conjunto de ventanas, que luego puede tener su propia vista.

empapar
fuente
1
Esta es una distinción interesante. Estoy seguro de que cada uno de estos tiene ventajas, para diferentes casos de uso. (ventaja de tmux: dos personas conectadas a la misma sesión de tmux, por ejemplo, para la programación remota de pares, siempre verían lo mismo; ventaja de la pantalla: una persona conectada a la misma pantalla desde dos lugares para dos propósitos diferentes puede tener dos vistas diferentes, incluso simultáneamente (con , digamos, ventanas lado a lado (OS / windowmanager-level).)
lindes
10
si su sesión original de tmux se llama "0" (el valor predeterminado), puede hacer "tmux new-session -t 0") para iniciar una nueva sesión independiente conectada al mismo conjunto de ventanas, que luego puede tener su propio ver. Estoy bastante seguro de que esto funcionó en 1.2 / 1.3, pero no puedo recordarlo de improviso.
Porque el
@cos este es exactamente el consejo que estaba buscando. Muchas gracias. Desearía poder votar dos veces :) Comenzaré a volver a conectar con 'tmux new-session -t 0' cada vez.
jrwren
@Cos Esto se agregó "DE 1.0 A 1.1, 05 de noviembre de 2009". @jrwren El comando se puede acortar tmux new -t 0.
user285259
24

tmux es bastante nuevo en comparación con la pantalla GNU. Ventajas / desventajas es una pregunta difícil, ya que ambos programas resuelven aproximadamente el mismo problema. tmux tiene licencia BSD mientras que la pantalla es GNU GPL. Esto es importante para algunas personas.

la pantalla está más representada (en Linux) en este momento, es decir, es más probable que la encuentre en un cuadro de Linux dado que tmux. Sin embargo, tmux está más representado en OpenBSD ya que se incluye como parte de la instalación base.

Ambos programas le permiten hacer casi lo mismo, aunque el estado de las cosas es un poco más complejo que eso. Cambiar entre los dos no es demasiado complicado, ya que gran parte de la funcionalidad de las pantallas también se ha introducido en tmux, aunque si eres un usuario avanzado de cualquiera de los dos, es probable que encuentres algunas frustraciones al cambiar al otro.

Al igual que con cualquier programa, realmente depende de sus necesidades y con las que se sienta más cómodo. Pruébelos a ambos y vea con qué juega muy bien.

Para obtener más información sobre tmux, consulte https://tmux.github.io/

gabe
fuente
17

La mayor diferencia en mi uso ha sido que en Gnu Screen solo puedes dividir marcos horizontalmente, mientras que en Tmux puedes dividir tanto horizontal como verticalmente. Este es un tipo de objetivo en movimiento, aunque como digo aquí, la división vertical está llegando a la pantalla .

Aparte de eso, las cosas son sobre plano.

Eli Frey
fuente
10
puedes dividirlo verticalmente en la pantalla también. mmm ... al menos no funciona en la instalación de pantalla predeterminada de Ubuntu 10.10.
Stann
44
@andre ha habido un parche de larga data para la división vertical en la pantalla ... que nunca se incorporó en la parte superior ... pero estoy seguro de que muchas distribuciones lo aplicaron.
xenoterracide
17

Pensé que solo mencionaría sobre el byobucontenedor que está disponible para la pantalla que lo hace mucho mejor desde el primer momento. No sé si algo así está disponible para tmux, pero byobuhice mi .screenrc solo un puñado de líneas. Mira este artículo rápido sobre byobu y capturas de pantalla. La página del proyecto para byobu describe el nombre que se origina de un término japonés para pantallas decorativas de paneles múltiples que sirven como divisores de habitaciones plegables. Además, solo ejecutarlo no daña la configuración de la pantalla, por lo que puede probarlo de manera segura. Una vez que comience la sesión byobu, puede reconectarse libremente con ella utilizando screeny sin perder ninguna personalización realizada por byobu(así que úsela solo para la invocación inicial). Las dos principales ventajas son:

  • Inicia la pantalla con un par de barras de estado con información útil
  • Proporciona muchas combinaciones de teclas para acceder más fácilmente a la funcionalidad de la pantalla.

No estoy usando la parte de combinación de teclas, pero definitivamente encuentro útiles las barras de estado.

También puede encontrar útil el enlace Screen Vs tmux . Creo que la mayor parte ya se menciona en las respuestas existentes.

haridsv
fuente
Su respuesta sería más útil si resumiera las características de byobu, como esta respuestas con su lista de características.
Gilles
OK, agregué más información sobre byobu, pero es tan simple como ejecutar el comando y encontrarlo por ti mismo (está controlado por el menú), ya que no estropea la configuración de pantalla existente. E hice mi respuesta un wiki de la comunidad, así que siéntete libre de editarlo.
haridsv
1
byobu parece admitir también tmux, al menos en versiones más recientes.
Darael
12

Drench plantea un punto interesante: el comportamiento predeterminado de conectarse dos veces a la misma sesión es diferente en tmux. Sin embargo, si desea adjuntar dos veces y tener una vista independiente de las ventanas en esa sesión, inicie tmux con

tmux new-session -t <session name>

Eso creará una nueva sesión para usted y adjuntará las ventanas de la sesión ya existente. Si no nombró su primera sesión, puede agregar una con 'rename-session'.

Rikard Anglerud
fuente
12

Una gran desventaja screenes que no se desarrolla activamente. Las páginas de errores tienen cerca de 200 elementos no asignados que se remontan a más de 5 años.

tmux también tiene algunos problemas abiertos, pero mucho menos, y recibe un soporte más activo.

Harold
fuente
8

tmux es más nuevo y varias características más.

He descubierto que un buen uso depende de una buena configuración.

Uso vi (vim) para editar (ruby on rails) y hay algunas cosas de configuración para que funcione bien.

Aquí está mi archivo ~ / .tmux.conf con mucha configuración útil:

bind r source-file ~/.tmux.conf \; display "Reloaded!"  # Reload with ctrl-r
set -g prefix C-a         # prefix from ctrl-b to ctrl-a
unbind C-b                # allow ctrl-b for other things
set -sg escape-time 1     # quicker responses
bind C-a send-prefix      # Pass on ctrl-a for other apps
set -g base-index 1        # Numbering of windows
setw -g pane-base-index 1  # Numbering of Panes
bind \ split-window -h    # Split panes horizontal
bind - split-window -v    # Split panes vertically
bind h select-pane -L     # Switch to Pane Left
bind j select-pane -D     # Switch to Pane Down
bind k select-pane -U     # Switch to Pane Up
bind l select-pane -R     # Switch to Pane Right
bind -r C-h select-window -t :-  # Quick Pane Selection
bind -r C-l select-window -t :+  # Quick Pane Selection
bind -r H resize-pane -L 5       # Switch to Pane Left
bind -r J resize-pane -D 5       # Switch to Pane Down
bind -r K resize-pane -U 5       # Switch to Pane Up
bind -r L resize-pane -R 5       # Switch to Pane Right
setw -g mode-mouse off           # Mouse Off
set -g mouse-select-pane off     # Mouse Off  
set -g mouse-resize-pane off     # Mouse Off
set -g mouse-select-window off   # Mouse Off
setw -g monitor-activity on      # Activity Alerts
set -g visual-activity on
set -g status-fg white           # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan    # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white     # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green      # Pane colors
set -g pane-border-bg black 
set -g pane-active-border-fg white 
set -g pane-active-border-bg yellow
set -g message-fg white          # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40     # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on            # Status Line, right side
set -g status-right "-------"
set -g status-interval 60        # frequency of status line updates
set -g status-justify centre     # center window list
setw -g mode-keys vi             # vi keys to move 
unbind v                         # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up                        # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
Michael Durrant
fuente
Tmux es más nuevo, pero 'varias características más' implica que también tiene al menos paridad de características con la pantalla, lo que no es el caso: además de lo que se menciona en otra parte, el soporte multiusuario de tmux es muy escaso. Sin acls ni status, y solo en general muestra la novedad de tmux en que lo que puedes hacer no está muy pulido.
semi
Es bueno saberlo. Lo he estado usando durante un año y no noté ninguna necesidad de esmalte, aunque un poco de húngaro podría ayudar. Notación que es. ok mal juego de palabras;) No había usado la pantalla antes, así que no noté los problemas mencionados. Sería más difícil cambiar a la pantalla y perder las nuevas funciones ahora.
Michael Durrant
8

Me tomaré la libertad de agregar una diferencia:

tmux se basa en ncurses mientras que la pantalla no dibuja elementos adicionales. Si alguien usa el emulador de terminal que admite desplazamiento (s), se desplazará con la pantalla pero no con tmux (al menos en la configuración predeterminada). Lo mismo se aplica a la búsqueda y características similares.

Maciej Piechotka
fuente
2
No me he desplazado con la pantalla como ... ¿alguna vez? : /
unperson325680
Sí, mi TE admite el desplazamiento y la pantalla lo rompe ... Tengo que desplazarme con la pantalla. -1 no parece ser exacto.
xenoterracide
@xenoterracide: Hmm. Tienes razón en parte. La pantalla en algunas distribuciones / sistemas (Gentoo anterior) no lo rompe, mientras que en algunos (nuevo Ubuntu) sí lo hace. No tengo ni idea de porqué.
Maciej Piechotka
posiblemente un parche ... los nuestros son todos sistemas de 5,5 centavos
xenoterracide
6

Tuve problemas para que la pantalla admitiera utf-8 y 256 colores, pero tmux funcionó de fábrica.

zvolkov
fuente