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.
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
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.