web-dev-qa-db-fra.com

tmux vs. GNU

En parcourant les questions J'ai trouvé sur tmux (j'utilisais normalement GNU Screen). Ma question est quels sont les avantages et les inconvénients de chacun d'eux. Surtout je n'ai pas pu trouver beaucoup sur tmux.

196
Maciej Piechotka

De leur site Web :

  • En quoi tmux est-il différent de l'écran GNU? Que propose-t-il d'autre?

tmux offre plusieurs avantages par rapport à l'écran:

  • un modèle client-serveur clairement défini: les fenêtres sont des entités indépendantes qui peuvent être attachées simultanément à plusieurs sessions et visualisées à partir de plusieurs clients (terminaux), ainsi que déplacées librement entre les sessions au sein du même serveur tmux;
  • une interface de commande cohérente et bien documentée, avec la même syntaxe, qu'elle soit utilisée de manière interactive, en tant que liaison de clé ou à partir du shell;
  • facilement scriptable depuis le Shell;
  • plusieurs tampons de pâte;
  • choix des dispositions clés de vi ou emacs;
  • une option pour limiter la taille de la fenêtre;
  • une syntaxe de ligne d'état plus utilisable, avec la possibilité d'afficher la première ligne de sortie d'une commande spécifique;
  • une base de code plus propre, moderne, facilement extensible, sous licence BSD.

Il y a encore quelques fonctionnalités à l'écran que tmux omet:

  • prise en charge série et telnet intégrée; il s'agit d'un ballonnement et il est peu probable qu'il soit ajouté à tmux;
  • un support de plate-forme plus large, par exemple IRIX et HP-UX, et pour les terminaux impairs.
124
nisc

Une différence réside dans la façon dont les deux agissent lorsque plusieurs terminaux sont connectés à une seule session.

Avec l'écran, la vue de chaque terminal connecté est indépendante des autres. Avec tmux, tous les terminaux connectés voient la même chose.

Supposons que deux terminaux soient connectés à une seule session tmux. Si vous tapez ^B 1 dans un terminal, l'autre terminal passe également à la fenêtre 1.

Lorsque vous avez deux terminaux connectés à une seule session d'écran et que vous tapez ^A 1 en un, il n'a aucun effet sur l'autre terminal.

Ceci est basé sur mon expérience avec tmux 1.2; Je vois que 1.3 est sorti mais je n'ai rien remarqué dans le changelog sur ce changement de comportement.

Si vous aimez le comportement de l'écran et le souhaitez dans tmux:

Si votre session tmux d'origine s'appelle 0 (par défaut), vous pouvez alors faire tmux new-session -t 0) pour démarrer une nouvelle session indépendante connectée au même ensemble de fenêtres, qui peut alors avoir sa propre vue.

45
drench

tmux est relativement nouveau par rapport à l'écran GNU. Avantages/inconvénients est une question difficile, car les deux programmes résolvent approximativement le même problème. tmux est sous licence BSD alors que l'écran est GNU GPL. Cela compte pour certaines personnes.

l'écran est plus représenté (sous Linux) pour le moment, c'est-à-dire que vous êtes plus susceptible de le trouver sur une boîte Linux donnée que tmux. tmux est cependant plus représenté sur OpenBSD car il est inclus dans le cadre de l'installation de base.

Les deux programmes vous permettent de faire à peu près la même chose, bien que l'état des choses soit un peu plus complexe que cela. Le basculement entre les deux n'est pas trop compliqué, car la plupart des fonctionnalités des écrans ont également trouvé leur place dans tmux, bien que si vous êtes un utilisateur avancé de l'un ou de l'autre, vous trouverez probablement des frustrations lors du passage à l'autre.

Comme pour tout programme, cela dépend vraiment de vos besoins et avec lesquels vous êtes plus à l'aise. Essayez-les tous les deux et voyez avec quoi vous jouez bien.

Pour plus d'informations sur tmux, voir https://tmux.github.io/

25
gabe.

Je pensais simplement mentionner le wrapper byobu qui est disponible pour l'écran, ce qui le rend beaucoup mieux dès la sortie de la boîte. Je ne sais pas si quelque chose comme ça est disponible pour tmux, mais byobu a fait mon .screenrc seulement une poignée de lignes. Découvrez ceci article rapide sur byobu et captures d'écran. La page du projet pour byob décrit le nom provenant d'un terme japonais pour les écrans décoratifs à panneaux multiples qui servent de séparateurs de pièce pliants. En outre, son exécution ne nuit pas aux paramètres de votre écran, vous pouvez donc l'essayer en toute sécurité. Une fois que vous avez démarré la session avec byobu, vous pouvez vous y reconnecter librement à l'aide de screen et ne pas perdre les personnalisations effectuées par byobu (utilisez-la uniquement pour l'appel initial). Ses deux principaux avantages sont:

  • Démarre l'écran avec quelques barres d'état contenant des informations utiles
  • Fournit de nombreuses combinaisons de touches pour accéder plus facilement aux fonctionnalités de l'écran

Je n'utilise pas la partie des raccourcis clavier, mais je trouve certainement les barres d'état utiles.

Vous pouvez également trouver Screen Vs tmux lien utile. Je pense que la majeure partie est déjà mentionnée dans les réponses existantes.

18
haridsv

La plus grande différence dans mon utilisation est que dans Gnu Screen, vous ne pouvez diviser les images que horizontalement, tandis que dans Tmux, vous pouvez diviser à la fois horizontalement et verticalement. C'est une sorte de cible mobile, mais comme je le dis ici, la division verticale fait son chemin dans l'écran .

A part ça, les choses sont à peu près plates.

17
Eli Frey

Un gros inconvénient pour screen est qu'il n'est pas activement développé. Les pages de bogues ont près de 200 éléments non affectés remontant à plus de 5 ans.

tmux a également quelques problèmes ouverts, mais beaucoup moins, et est plus activement pris en charge.

12
Harold

Drench soulève un point intéressant - le comportement par défaut de se connecter deux fois à la même session est différent dans tmux. Cependant, si vous voulez attacher deux fois et avoir une vue indépendante des fenêtres de cette session - lancez tmux avec

tmux new-session -t <session name>

Cela va créer une nouvelle session pour vous et attacher les fenêtres de la session déjà existante. Si vous n'avez pas nommé votre première session, vous pouvez en ajouter une avec 'rename-session'.

12
Rikard Anglerud

tmux est plus récent et plusieurs autres fonctionnalités.

J'ai trouvé qu'une bonne utilisation dépend d'une bonne configuration.

J'utilise vi (vim) pour l'édition (Ruby on Rails) et il y a quelques choses à configurer pour que cela fonctionne bien.

Voici mon fichier ~/.tmux.conf avec beaucoup de paramètres utiles:

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"
8
Michael Durrant

Je me permettrai d'ajouter une différence:

tmux est basé sur ncurses alors que screen ne dessine pas d'éléments supplémentaires. Si quelqu'un utilise un émulateur de terminal qui prend en charge le défilement, il obtiendra le défilement avec l'écran mais pas avec tmux (au moins dans la configuration par défaut). La même chose s'applique à la recherche et aux fonctionnalités similaires.

8
Maciej Piechotka

J'ai eu des problèmes pour que l'écran prenne en charge les couleurs utf-8 et 256, mais tmux a fonctionné hors de la boîte.

6
zvolkov