Tela tmux vs. GNU [fechado]

194

Navegando pelas perguntas que encontrei sobre o tmux (eu normalmente usava o GNU Screen). Minha pergunta é o que são prós e contras de cada um deles. Especialmente, não consegui encontrar muito sobre o tmux.

Maciej Piechotka
fonte
9
Também discutido em superuser.com/questions/236158/tmux-vs-screen
Lloyd Dewolf
5
Como você pode ver pelas boas respostas abaixo, elas não são baseadas em opiniões.
Reinierpost
@reinierpost - parece que muitas pessoas aqui são muito rápidas para fechar perguntas como "principalmente baseadas em opiniões". No entanto, podemos votar para reabrir.
MountainX
Embora essa questão seja uma questão de comparação, acho que os argumentos a favor e contra são objetivos o suficiente e, portanto, a razão próxima da opinião não está bem aqui. Você pode verificar a pergunta SU vinculada, as respostas são bastante boas.
Peterh 01/10/19

Respostas:

122

No site deles :

  • Qual a diferença do tmux da tela do GNU? O que mais isso oferece?

O tmux oferece várias vantagens sobre a tela:

  • um modelo cliente-servidor claramente definido: janelas são entidades independentes que podem ser conectadas simultaneamente a várias sessões e visualizadas em vários clientes (terminais), além de serem movidas livremente entre sessões no mesmo servidor tmux;
  • uma interface de comando consistente e bem documentada, com a mesma sintaxe usada interativamente, como uma ligação de chave ou a partir do shell;
  • facilmente programável a partir do shell;
  • vários buffers de pasta;
  • escolha de layouts de teclas vi ou emacs;
  • uma opção para limitar o tamanho da janela;
  • uma sintaxe da linha de status mais utilizável, com a capacidade de exibir a primeira linha de saída de um comando específico;
  • uma base de código licenciada por BSD, mais limpa, moderna e de fácil extensão.

Ainda existem alguns recursos que a tela omite:

  • suporte serial e telnet integrado; isso é inchaço e é improvável que seja adicionado ao tmux;
  • suporte mais amplo à plataforma, por exemplo, IRIX e HP-UX e para terminais ímpares.
nisc
fonte
4
caramba ... agora eu quero experimentar o tmux ... só porque a tela não funcionou para mim devido à falta de vi keybindings.
Xenoterracide
1
As combinações de teclas vi ou emacs significam apenas que o tmux vem com dois conjuntos convenientes de padrões? É possível reconfigurar completamente as combinações de teclas da tela com seu arquivo rc.
Jk013
Você pode definir ligações de chave arbitrárias. Veja: openbsd.org/cgi-bin/…
nisc 27/12/11
Quando falam sobre a implementação, devem finalmente resolver o bug estúpido com <C-Left>no vimno tmux.
yo '
45

Uma diferença está em como os dois agem quando vários terminais são conectados a uma única sessão.

Com a tela, a visão de cada terminal conectado é independente dos outros. Com o tmux, todos os terminais conectados veem a mesma coisa.

Digamos que você tenha dois terminais conectados a uma única sessão do tmux. Se você digitar ^B1 em um terminal, o outro terminal também mudará para a janela 1.

Quando você tem dois terminais conectados a uma sessão de tela única e digita ^A1 em um, isso não afeta o outro terminal.

Isso é baseado na minha experiência com o tmux 1.2; Vejo que 1.3 está fora, mas não notei nada no changelog sobre essa mudança de comportamento.

Se você gosta do comportamento da tela e deseja no tmux:

Se sua sessão original do tmux for chamada 0(o padrão), você poderá fazer tmux new-session -t 0) para iniciar uma nova sessão independente conectada ao mesmo conjunto de janelas, que poderá ter sua própria visualização.

encharcar
fonte
1
Esta é uma distinção interessante. Tenho certeza de que cada um deles tem vantagens para diferentes casos de uso. (vantagem do tmux: duas pessoas conectadas à mesma sessão do tmux, por exemplo, para programação de pares remotos sempre veriam a mesma coisa; vantagem da tela: uma pessoa conectada à mesma tela de dois lugares para dois propósitos diferentes pode ter duas visualizações diferentes, mesmo simultaneamente (com , digamos, janelas lado a lado (nível de
gerenciador de
10
se sua sessão original do tmux for chamada "0" (o padrão), você poderá executar "tmux new-session -t 0") para iniciar uma nova sessão independente conectada ao mesmo conjunto de janelas, que poderá ter seu próprio Visão. Tenho certeza de que isso funcionou em 1.2 / 1.3, mas não me lembro de imediato.
Cos
@cos esta é exatamente a dica para a qual eu estava procurando. Muito obrigado. Eu gostaria de poder votar em você duas vezes :) Vou começar a anexar novamente o 'tmux new-session -t 0' agora.
Jrwren #
@Cos Foi adicionado "DE 1.0 A 1.1, 05 de novembro de 2009". @jrwren O comando pode estar em curto tmux new -t 0.
user285259
24

O tmux é relativamente novo comparado com a tela GNU. Vantagens / Desvantagens é uma pergunta difícil, pois os dois programas resolvem aproximadamente o mesmo problema. O tmux é licenciado para BSD enquanto a tela é GNU GPL. Isso é importante para algumas pessoas.

A tela está mais representada (no Linux) no momento, ou seja, é mais provável que você a encontre em uma determinada caixa Linux do que no tmux. No entanto, o tmux está mais representado no OpenBSD, pois está incluído como parte da instalação base.

Ambos os programas permitem que você faça a mesma coisa, embora o estado das coisas seja um pouco mais complexo que isso. Alternar entre os dois não é muito complicado, pois muitas das funcionalidades das telas também chegaram ao tmux, embora se você for um usuário avançado de um deles, provavelmente encontrará algumas frustrações ao mudar para o outro.

Como em qualquer programa, isso realmente depende das suas necessidades e com as quais você se sente mais confortável. Experimente os dois e veja com quem você joga bem.

Para mais informações sobre o tmux, consulte https://tmux.github.io/

Gabe.
fonte
17

A maior diferença em meu uso foi que, no Gnu Screen, você só pode dividir quadros horizontalmente, enquanto no Tmux, você pode dividir horizontal e verticalmente. Esse é um tipo de alvo em movimento, embora, como aqui digo, a divisão vertical esteja entrando na tela .

Fora isso, as coisas são simples.

Eli Frey
fonte
10
você pode dividir verticalmente na tela também. mmm ... para que não funcione na instalação padrão da tela Ubuntu 10.10.
Stann
4
@andre Tem havido um patch de longa data para a divisão vertical na tela ... que nunca foi incorporada ao upstream ... mas tenho certeza de que muitas distros o aplicaram.
Xenoterracide 27/03
17

Eu pensei em mencionar apenas sobre o byobuinvólucro que está disponível para a tela que o torna muito melhor assim que sai da caixa. Não sei se algo assim está disponível para o tmux, mas byobufiz do meu .screenrc apenas algumas linhas. Confira este artigo rápido sobre byobu e capturas de tela. A página do projeto do byobu descreve o nome originário de um termo japonês para telas decorativas de vários painéis que servem como divisórias de ambientes dobráveis. Além disso, apenas executá-lo não prejudica as configurações da tela, para que você possa testá-lo com segurança. Depois de iniciar a sessão, byobuvocê pode se reconectar livremente usando screene ainda não perder as personalizações feitas por byobu(use-a apenas para a chamada inicial). As duas principais vantagens são:

  • Inicia a tela com algumas barras de status com informações úteis
  • Fornece muitas combinações de teclas para acessar a funcionalidade da tela com mais facilidade

Não estou usando a parte de combinações de teclas, mas definitivamente considero as barras de status úteis.

Além disso, você pode achar útil o link Screen Vs tmux . Eu acho que a maioria já é mencionada pelas respostas existentes.

haridsv
fonte
Sua resposta seria mais útil se você resumisse os recursos de byobu, como este responde com sua lista de recursos.
Gilles
OK, adicionei mais informações byobu, mas é tão simples quanto executar o comando e encontrá-lo por si mesmo (é orientado por menus), pois não altera as configurações de tela existentes. E fiz da minha resposta um wiki da comunidade, então fique à vontade para editá-lo.
haridsv
1
O byobu parece também suportar o tmux, pelo menos nas versões mais recentes.
Darael
12

Drench levanta um ponto interessante - o comportamento padrão de conectar duas vezes à mesma sessão é diferente no tmux. No entanto, se você deseja anexar duas vezes e ter uma visão independente das janelas nessa sessão - inicie o tmux com

tmux new-session -t <session name>

Isso criará uma nova sessão para você e anexará as janelas da sessão já existente. Se você não nomeou sua primeira sessão, você pode adicionar uma com 'rename-session'.

Rikard Anglerud
fonte
12

Uma grande vantagem screené que ele não é desenvolvido ativamente. As páginas de erros têm cerca de 200 itens não atribuídos, que remontam a 5 anos.

tmux também possui alguns problemas em aberto, mas muito menos, e é suportado mais ativamente.

Harold
fonte
8

O tmux é mais novo e vários outros recursos.

Eu descobri que o bom uso depende de uma boa configuração.

Eu uso o vi (vim) para editar (ruby on rails) e há algumas coisas de configuração para fazer isso funcionar bem.

Aqui está o meu arquivo ~ / .tmux.conf com muitas configurações úteis:

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
fonte
O Tmux é mais novo, mas 'vários outros recursos' implica que ele também possui pelo menos paridade de recursos com a tela, o que não é o caso - Além do que foi mencionado em outros lugares, o suporte a múltiplos usuários do tmux está em falta. Sem acls ou status, e apenas em geral mostra a novidade do tmux, pois o que você pode fazer não é muito polido.
semi
É bom saber disso. Eu já o uso há um ano e não percebi a necessidade de polir, embora um pouco de húngaro possa ajudar. Notação que é. ok bad trocadilho;) Não tinha usado a tela antes, então não percebendo os problemas mencionados. Acharia mais difícil mudar para a tela e perder os novos recursos agora.
precisa
8

Terei a liberdade de acrescentar uma diferença:

O tmux é baseado em ncurses enquanto a tela não desenha elementos adicionais. Se alguém usar um emulador de terminal que suporte rolagem, ele rolará com a tela, mas não com o tmux (pelo menos na configuração padrão). O mesmo se aplica à pesquisa e recursos similares.

Maciej Piechotka
fonte
2
Eu não tive rolagem com a tela como ... sempre? : /
unperson325680
sim, meu TE suporta rolagem e a tela quebra ... Eu tenho que rolar com a tela. -1 não parece ser preciso.
Xenoterracide
@xenoterracide: Hmm. Você está parcialmente certo. A tela em algumas distros / sistemas (antigo Gentoo) não a quebra, enquanto em algumas (novo Ubuntu) o faz. Eu não tenho ideia do porquê.
Maciej Piechotka 28/03
possivelmente um remendo ... nossos são todos os sistemas de 5,5 centavos
xenoterracide
6

Tive problemas ao obter a tela para suportar utf-8 e 256 cores, mas o tmux funcionou imediatamente.

zvolkov
fonte