Usar o Mosh sem abrir mão do scrollback / histórico local?

64

Existe uma maneira de usar moshsem abrir mão do scrollback local?

Basicamente, em algumas circunstâncias, o roaming de IP é realmente útil e necessário, mas a emulação de terminal extra e a previsão de chaves parecem estar apenas se livrando das linhas de buffer de rolagem local e do histórico da sessão.

cnst
fonte

Respostas:

44

Filippo Valsorda tem uma solução para o OS X que incorpora o iTerm 2, tmux e mosh .

Sua solução usa uma única janela / guia para conectar-se a um shell remoto. O shell sobrevive a desconexões (por exemplo, falha de conexão, alterações de IP, reinicializações de laptops) e suporta a rolagem com touchpad, copiar e colar e cores.

As advertências são de que você deve criar o mosh a partir da fonte, a rolagem é menos fluida que a nativa e o clique e o arrasto são retransmitidos; portanto, você deve pressionar Option para selecionar.

  • iTerm

    Nas configurações do perfil do terminal, ative o relatório do mouse xterm e defina o tipo de terminal de relatório como xterm-256color .

  • tmux

    Defina ~/.tmux.confno servidor para o seguinte. Com essas configurações, se você tentar anexar e não houver sessões, uma nova será criada. As configurações também permitem interações do mouse (e, portanto, rolagem do touchpad).

    new-session
    set-window-option -g mode-mouse on
    set -g history-limit 30000
    

    Nota: No tmux mais recente (ou seja,> 2.1), conforme relatado por tmux -V, as várias opções do mouse (painel de redimensionamento do mouse, modo do mouse etc.) foram reescritas em uma única opção mouse, portanto, é necessário alterar a segunda linha acima ao set-window-option -gmouseon .

    Essa rolagem do mouse também funcionará quando você estiver no modo de rolagem do teclado (por exemplo Ctrl- bentão [), descrito no artigo Como rolar no tmux .

  • mosh

    A construção estável do mosh é antiga e não suporta relatórios de mouse (e rolagem do touchpad). Para instalar a versão mais recente, faça o seguinte:

    OS X (seu cliente)

    brew install --HEAD mobile-shell
    

    Linux / UNIX (o servidor)

    git clone https://github.com/keithw/mosh.git
    cd mosh/
    sudo apt-get build-dep mosh
    ./autogen.sh && ./configure && make
    sudo make install
    

Agora, para conectar, basta digitar o seguinte:

mosh HOST -- tmux a
rbrewer
fonte
5
É uma boa forma colar as informações importantes do link in-line.
HalosGhost
2
embora essa resposta tenha sido reduzida por razões técnicas, provavelmente é a melhor (apenas?) maneira de obter um retorno decente no cliente local usando o mosh.
Jayhendren #
@ jayhendren: ou você pode simplesmente usar o Terminal Eterno .
Dan Dascalescu 21/07
Não há necessidade de ser condescendente. Meu comentário foi de 2014. O primeiro lançamento do Eternal Terminal foi em 2017.
jayhendren
2019 e a solução ainda funciona
user913 30/10
15

A emulação de terminal é muito profunda no design do mosh , então não. O Mosh trabalha, mantendo o cliente e o servidor, cada um mantendo sua idéia local de como a tela atualmente "se parece" e isso exige que o servidor faça emulação de terminal. É assim que o cliente é capaz de atualizar o conteúdo da tela depois de algum tempo ausente e perdendo alguns dados.

Eu acho que um aplicativo com o recurso de roaming IP do mosh, mas sem emulação de terminal, acabaria sendo um aplicativo bastante diferente (mas mais simples). Para esse aplicativo, a perda de dados (inclusive quando o cliente fica fora da rede por algum tempo) resultaria em perda ou corrupção do conteúdo da tela. Essa é uma limitação aceitável se o usuário estiver usando um aplicativo em que isso não importa muito (por exemplo, shell) ou um aplicativo que tenha um recurso de repintar (por exemplo, viusando Control-L).

Os implementadores do Mosh estão planejando o suporte à rolagem no aplicativo , para compensar o fato de que o terminal local não pode mais fazê-lo. Eu acho que isso teria que funcionar um pouco como screeno buffer de rolagem do scrollback: controlado por pressionamentos de tecla, não barra de rolagem e mouse.

Celada
fonte
4

O Eternal Terminal ( https://mistertea.github.io/EternalTerminal/ ) é uma alternativa ao Mosh que suporta rolagem nativa e ainda permite roaming IP. O ET não faz a previsão de digitação, portanto pode não ser adequado se você tiver uma conexão de alta latência (se estiver usando um drone ou um telefone celular), mas pessoalmente o ET faz tudo o que eu quero e suporta a rolagem.

DigitalGhost
fonte
que foi incrível
Soorena
O ET é incrível e precisa de muito mais advocacia .
Dan Dascalescu 21/07
1

Desmarcar "Scroll screen alternate" em Terminal-> Preferences-> Profiles-> Keyboard corrigiu isso para mim.

pikachu
fonte
11
esta resposta não faz sentido, de onde você tira esse menu?
cnst 24/08/15
3
Essa configuração de prefs existe, mas desmarcá-la fez com que a rolagem funcionasse apenas na minha janela local, ou seja, a rolagem para baixo trouxe à vista as linhas que estavam lá antes de eu usar o comando mosh. não me mostrou nada que rolou da parte superior da sessão remota.
mARK
2
Tentei isso, mas ele não permite que você navegue na sessão mosh
magodiez