tmux rolagem baseada em GUI

0

Emuladores de terminal GUI, como o xfce4-terminal, têm várias maneiras de percorrer o buffer do terminal. Principalmente:

  1. shift- (pgup / pgdown, home / end, para cima / para baixo)
  2. roda do mouse
  3. clicando e arrastando o botão na barra de rolagem

Eu quero uma maneira para todos os três trabalharem dentro do tmux.

Eu sei que 3 não funcionará em telas divididas. Eu estou bem com isso. Eu não usarei telas divididas.

Eu sei que há set -g mouse on . Isso só faz o número 2 na lista acima. Eu realmente quero todos os três nessa lista.

A tela do GNU tem essa capacidade. Você usa a linha

termcapinfo xterm* ti@:te@

em .screenrc. Eu gostaria desse tipo de comportamento. Eu não estou usando a tela GNU porque ela lida com o redimensionamento de terminal extremamente mal.

    
por enigmaticPhysicist 15.07.2017 / 20:32

1 resposta

0

Não acredito que seja possível que isso funcione - da mesma maneira que essa abordagem para rolagem não funcionará em aplicativos como vim / nano .

É possível que os cliques do mouse sejam passados para os aplicativos em execução em um terminal, mas essa é uma extensão do terminal que você está usando ... como você afirmou, também é possível para alguns emuladores de terminal para transmitir eventos de roda do mouse, mas o aplicativo também deve suportar tais eventos.

Não é imediatamente possível porque os aplicativos estão movendo o cursor para coordenadas absolutas no terminal e desenhando sua saída. Esta é uma extensão - terminais antigos só podem imprimir novas informações na parte inferior da tela (ou papel ... xterm e amigos são descendentes diretos de teletipos ). Como a tecnologia progrediu, foram introduzidos recursos como mover o cursor pela tela. Agora usamos " Emuladores de Terminal " (é o que é o xterm ) em vez de " Terminais físicos".

Quando você usa Shift + PgUp / PgDn ou arraste a barra de rolagem, você está rolando de volta através do do emulador de terminal buffer de rolagem "- conte-se com sorte, existe tal coisa!

À medida que novas linhas são produzidas na parte inferior, as linhas antigas são empurradas para fora da parte superior da tela e, em seguida, são disponibilizadas pela revisão do buffer de rolagem do terminal. Isso é estático e não muda ( imutável ).

Não faz sentido tentar rever o buffer de rolagem e observar corretamente os aplicativos se redesenharem novamente.

Não esqueça que o buffer do terminal e o aplicativo são duas coisas muito diferentes!

Em tmux você pode usar Ctrl + B e então PgUp / PgDn para revisar a rolagem de um painel buffer (lembre-se, tmux é efetivamente um emulador de terminal rodando dentro de um emulador de terminal). Neste ponto, tmux irá " congelar " esse painel, e você poderá rolar para cima / para baixo e pesquisar para trás / para frente usando ? e / (o mesmo que vim e less ).

Pressione Retornar ou Ctrl + C para retornar à parte inferior e interagir novamente com o aplicativo / shell.

    
por 15.07.2017 / 21:32