Asciinema: Não sobreviverá ao redimensionamento da janela

Criado em 27 jan. 2016  ·  9Comentários  ·  Fonte: asciinema/asciinema

Quando você inicia o asciinema em uma grande janela de terminal e redimensiona a janela (durante a gravação) para um tamanho menor, o vídeo sai errado.

Curiosamente, ele sobrevive bem da maneira oposta.

Neste exemplo, eu executo sl - meu programa favorito - em uma grande janela de terminal, em seguida, redimensiono a janela para uma janela pequena (essa é a "pausa estranha" - redimensionando a janela) e executo sl novamente. A segunda execução parece OK, mas a primeira está mutilada.

https://asciinema.org/a/5wvarzb4545pohhfqnj8g9fta

Para ilustração, este é o exemplo oposto. Começando pequeno e depois redimensionando para grande. Ambos funcionam bem.

http://asciinema.org/a/d9u278gcavlymvywrleh0kbup

bug

Comentários muito úteis

Esse problema proibiria o uso casual de asciinema para registrar todo o trabalho diário, criando uma limitação irritante para nunca encolher as janelas do terminal.

Todos 9 comentários

asciinema não grava a tela, mas o fluxo stdout. Ele também salva as dimensões atuais do terminal no final da sessão de gravação. Alguns aplicativos de terminal (como sl ) dependem do tamanho real do terminal. Eles produzem sequências de escape que são adequadas para a largura / altura do terminal atual em qualquer momento. Porque asciinema player realmente interpreta / executa stdout gravado, essas sequências de escape são executadas contra o tamanho do terminal asciinema atual.

Em outras palavras, para resolver este problema asciinema precisaria salvar os eventos de redimensionamento do terminal (isso pode ser feito) e então usá-los para redimensionar seu próprio "terminal" durante a reprodução. No entanto, isso causaria o redimensionamento do próprio player, o que pareceria engraçado (quando reproduzido em asciinema.org) e impraticável (quando incorporado em um site).

Eu entendo os desafios e entendo que se você não quiser consertar, só queria que você soubesse.

Isso poderia ser resolvido fazendo com que o jogador tivesse a largura máxima de todas as larguras e a altura máxima de todas as alturas e o texto poderia ficar no canto superior esquerdo - seria o mesmo caso como se você começasse com um terminal pequeno e terminasse com um terminal grande . Não sei se vale a pena consertar :)

Não é que eu não queira consertar, mas há mais sutilezas nisso (sua solução proposta ainda daria resultados ruins em alguns casos). De qualquer forma, esse é um caso extremo e não tenho certeza se vale a pena consertá-lo.

Estou deixando isso em aberto.

Esse problema proibiria o uso casual de asciinema para registrar todo o trabalho diário, criando uma limitação irritante para nunca encolher as janelas do terminal.

Acho que deve haver uma flexibilidade para dimens. Eu tinha gravado um vídeo ( aqui ) e saiu em uma dimensão estranha, ou seja, o vídeo embutido pegou mais do que a altura da página. Agora, não tenho escolha a não ser gravar novamente.
Eu até tentei mudar a largura e a altura do .json , o que obviamente não funcionou bem, pois estava tendo sobreposição ( isto )

PS: Mesmo que este esteja fora do tópico da discussão acima, este foi o problema mais próximo que pude encontrar sobre isso.

@xloem @mukkachaitanya Estou projetando um novo formato de gravação (https://github.com/asciinema/asciinema/pull/196). Talvez pudéssemos torná-lo compatível com o evento de "redimensionamento de terminal" ...

Preciso de alguns utilitários para "fazer backup" da atividade do meu terminal. E, é claro, este utilitário deve "simplesmente funcionar" mesmo se eu redimensionar o terminal. Talvez existam outros programas por aí que suportem o recurso?

você poderia lançar alguma luz sobre como capturar o evento de redimensionamento do terminal? Seria muito útil em um branch em que estou trabalhando para ascictas em tempo real (e o caso de redimensionamento durante a gravação, tenho certeza)

@jiangts aqui é o lugar onde o gravador lida com o redimensionamento do terminal (sinal SIGWINCH): https://github.com/asciinema/asciinema/blob/develop/asciinema/pty_recorder.py#L108

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

maphew picture maphew  ·  12Comentários

nictuku picture nictuku  ·  10Comentários

TyrfingMjolnir picture TyrfingMjolnir  ·  7Comentários

bashfulrobot picture bashfulrobot  ·  11Comentários

SR-Lut3t1um picture SR-Lut3t1um  ·  3Comentários