Asciinema: Suporte para Windows?

Criado em 3 mar. 2016  ·  31Comentários  ·  Fonte: asciinema/asciinema

Um console do Windows é um terminal ANSI (peculiar), vinculado à API do Console do Windows. Supondo que um gravador possa ser criado, o formato de arquivo asciicast existente deve ser capaz de representar quase tudo que um aplicativo do Windows Console pode fazer. A gravação resultante deve ser tão reproduzível quanto qualquer outra.

O truque difícil é a gravação. Alguém já pensou ou se esforçou para construir um gravador desse tipo para um console do Windows?

Seria possível um porte de asciinema para Windows?

feature request packaging

Comentários muito úteis

Para quem estiver interessado em gravar no Windows, @mattn tem um ramo experimental aqui: https://github.com/mattn/asciinema/tree/windows

Todos 31 comentários

o asciinema registra a saída stdout bruta de um processo filho (shell por padrão). Ele não "captura" o conteúdo da tela de forma alguma. Ele captura o que é impresso (incluindo todas as sequências de escape/controle) e faz isso usando pseudo-terminal (pty).

Até agora, não encontrei nenhum terminal Windows que suporte pty, mas recentemente me deparei com http://babun.github.io . A página diz: Mintty is the console used in babun.

Mintty page (https://mintty.github.io) diz: Similarly to other Cygwin/MSYS terminals based on pseudo terminal ("pty") devices (...) , no entanto, há um longo tópico de discussão sobre o problema relacionado: https://github.com/mintty/mintty/issues/56

Se alguém encontrar uma maneira de usar pty no Windows (ou algo fingindo pty, mas nos dando um fluxo stdout bruto), poderíamos abordar asciinema-on-windows.

Você está interessado no suporte nativo ao cmd?

https://asciinema.org/a/0nsiofsbhypumh6vy5jx6wuog

Mas atualmente experimental.

@mattn uau! Claro, estou curioso para saber como isso foi alcançado.

Para quem estiver interessado em gravar no Windows, @mattn tem um ramo experimental aqui: https://github.com/mattn/asciinema/tree/windows

Oi! Talvez este projeto seja útil? https://github.com/adoxa/ansicon

Pessoal, posso usar essa ferramenta no git bash para Windows?
Ou seja, em MinGW . Ou em Babun...

Acabei de instalar o fork de https://github.com/mattn/asciinema/tree/windows , mas ele roda cmd.exe .

@andkirby Ouvi dizer que funcionou no bash no Windows, mas não tentei.

Rumores... :) Obrigado.)

@sickill Isso foi fechado porque foi mesclado ou porque você não planeja oferecer suporte?

@masaeedu Obrigado pelo seu interesse.

Não pretendo oferecer suporte ao Windows porque:

  • a maioria das soluções do tipo pty para Windows são hacks
  • Eu não uso Windows e como desenvolvedor principal do asciinema não quero mantê-lo

No momento acredito que não vale a pena.

asciinema instala e funciona perfeitamente no Win10 (WSL): https://asciinema.org/a/123255

Terminais de gravação do Windows realmente precisam de hacks, AFAIK eles ainda suportam gravar no buffer do console diretamente com instruções MOV. @miniksa

No momento acredito que não vale a pena.

Eu acho, vale a pena. Eu realmente adoraria tê-lo no bolso para fazer algum vídeo no Git Bash para Windows.

Eu só tenho um monte de coisas para mostrar. :)

Estou acompanhando com interesse o tópico sobre este assunto. Espero que no futuro surja uma solução para suportar o uso do Asciinema no CMD do Windows, PowerShell e Git Bash (sem WSL).

Enquanto isso, estou deixando alguns links para recursos que encontrei que podem ajudar nessa direção:

winpty

winpty é um pacote de software do Windows que fornece uma interface semelhante a um pty-master Unix para comunicação com programas de console do Windows. O pacote consiste em uma biblioteca (libwinpty) e uma ferramenta para Cygwin e MSYS para executar programas de console do Windows em um pty Cygwin/MSYS.

NOTA : winpty é usado pela biblioteca node-pty abaixo.

nó-pty

forkpty(3) ligações para node.js. Isso permite bifurcar processos com descritores de arquivos pseudoterminais. Ele retorna um objeto terminal que permite leituras e gravações.

Isso é útil para:

  • Escrevendo um emulador de terminal (por exemplo, via xterm.js).
  • Fazer com que certos programas pensem que você é um terminal, como quando você precisa de um programa para enviar sequências de controle.

node-pty suporta Linux, macOS e Windows. O suporte ao Windows é possível utilizando a biblioteca winpty .

@tajmone obrigado pelo resumo das opções possíveis. Eu não acho que seremos capazes de usar node-pty, já que o asciinema é escrito em Python.

Não estou muito familiarizado com o WSL - isso faz parte do Win10 ou precisa ser instalado separadamente?

Não estou muito familiarizado com o WSL - isso faz parte do Win10 ou precisa ser instalado separadamente?

Nem eu ... mas pelo que li, o WSL pode ser instalado opcionalmente no Win 10 e, em seguida, instalará partes de uma distribuição real do Ubuntu. Como já tenho o Git Bash para Windows, que me oferece tudo o que preciso agora, prefiro não instalá-lo até saber um pouco mais sobre ele - o WSL certamente oferece mais ferramentas do que apenas o Git Bash e tem um escopo mais amplo; mas acho que também ocupa mais espaço.

@tajmone @andkirby Um pouco atrasado, mas você pode definir shells diferentes com o garfo de Matt usando COMSPEC=cmd , COMSPEC=bash ou COMSPEC=powershell . IMHO, COMSPEC seria a variável certa do Windows a ser definida para esse tipo de função. Saídas de exemplo abaixo:

Comando:
https://asciinema.org/a/r0UNULw8K5r0HV35kTLOatAbX

WSL Bash (iniciado a partir do terminal padrão):
https://asciinema.org/a/XtLu8rh65uFekim1VbWamNcmh

Powershell:
https://asciinema.org/a/HttJNKCwM9Tb1NlVP5PFy6Ftx

Pessoalmente acho que funciona muito bem...

Muito obrigado @fquinner ! Eu li aqui e ali sobre o garfo de Matt, mas não sabia que ele havia alcançado um status tão operacional. Os links que você forneceu esclareceram a situação.

Eu definitivamente vou olhar para ele!

Então asciinema, não rodava no Windows cmd, certo?

Uma outra opção é abrir o problema em https://github.com/Microsoft/console para adicionar a API compatível com pty ao cmd. A equipe de engenharia do Microsoft Windows Console, como @bitcrazed , está no Github para ouvi-lo.

O que @joelhandwell disse :) Obrigado por sugerir isso Joe, e estamos ansiosos para ouvir de vocês no repositório acima ;)

giphy

@bitcrazed Eu fui em frente e tentei fazer um problema, mas o @be5invis já enviou https://github.com/Microsoft/console/issues/57 ! Espera-se que as pessoas nesta edição dêem muito 👍 ao problema e chamem mais a atenção da Microsoft.

Se você não quiser soluções alternativas ou hacks, go-winpty pode ser usado para isso.

https://github.com/iamacarpet/go-winpty

https://asciinema.org/a/r0UNULw8K5r0HV35kTLOatAbX

https://asciinema.org/a/HttJNKCwM9Tb1NlVP5PFy6Ftx

@fquinner , me desculpe, você poderia escrever em detalhes, como você grava esses vídeos?

Eu tento instalar e executar @mattn fork no Windows, mas não entendo, como posso corrigir No module named 'termios' error .

Obrigado.

Tente construir como abaixo:

mkdir \path\to\your\gopath\src\github.com\mattn
cd \path\to\your\gopath\src\github.com\mattn
git clone https://github.com/mattn/asciinema
cd asciinema
git checkout windows
go build

@mattn ,

D:\>go version
go version go1.10 windows/amd64

D:\>go get -d github.com/mattn/asciinema
package github.com/asciinema/asciinema/Godeps/_workspace/src/github.com/docopt/docopt-go: cannot find package "github.com/asciinema/asciinema/Godeps/_workspace/src/github.com/docopt/docopt-go" in any of:
        C:\tools\go\src\github.com\asciinema\asciinema\Godeps\_workspace\src\github.com\docopt\docopt-go (from $GOROOT)
        C:\Users\SashaChernykh\go\src\github.com\asciinema\asciinema\Godeps\_workspace\src\github.com\docopt\docopt-go (from $GOPATH)
package github.com/asciinema/asciinema/api: cannot find package "github.com/asciinema/asciinema/api" in any of:
        C:\tools\go\src\github.com\asciinema\asciinema\api (from $GOROOT)
        C:\Users\SashaChernykh\go\src\github.com\asciinema\asciinema\api (from $GOPATH)
package github.com/asciinema/asciinema/commands: cannot find package "github.com/asciinema/asciinema/commands" in any of:
        C:\tools\go\src\github.com\asciinema\asciinema\commands (from $GOROOT)
        C:\Users\SashaChernykh\go\src\github.com\asciinema\asciinema\commands (from $GOPATH)
package github.com/asciinema/asciinema/util: cannot find package "github.com/asciinema/asciinema/util" in any of:
        C:\tools\go\src\github.com\asciinema\asciinema\util (from $GOROOT)
        C:\Users\SashaChernykh\go\src\github.com\asciinema\asciinema\util (from $GOPATH)

Obrigado.

Desculpe, foi meu erro. Por favor, tente novamente como acima.

@mattn ,

  1. Você pode tornar a instalação da sua versão mais simples? Por exemplo, pip install asciinemawindows .
  2. Ainda não consigo instalar sua versão do asciinema (sim, configurei gopath ):
D:\go\src\github.com\mattn\asciinema>go build
main.go:11:2: cannot find package "github.com/asciinema/asciinema/Godeps/_workspace/src/github.com/docopt/docopt-go" in any of:
        C:\tools\go\src\github.com\asciinema\asciinema\Godeps\_workspace\src\github.com\docopt\docopt-go (from $GOROOT)
        D:\go\src\github.com\asciinema\asciinema\Godeps\_workspace\src\github.com\docopt\docopt-go (from $GOPATH)
main.go:12:2: cannot find package "github.com/asciinema/asciinema/api" in any of:
        C:\tools\go\src\github.com\asciinema\asciinema\api (from $GOROOT)
        D:\go\src\github.com\asciinema\asciinema\api (from $GOPATH)
main.go:13:2: cannot find package "github.com/asciinema/asciinema/commands" in any of:
        C:\tools\go\src\github.com\asciinema\asciinema\commands (from $GOROOT)
        D:\go\src\github.com\asciinema\asciinema\commands (from $GOPATH)
main.go:14:2: cannot find package "github.com/asciinema/asciinema/util" in any of:
        C:\tools\go\src\github.com\asciinema\asciinema\util (from $GOROOT)
        D:\go\src\github.com\asciinema\asciinema\util (from $GOPATH)
main.go:15:2: cannot find package "github.com/mattn/go-colorable" in any of:
        C:\tools\go\src\github.com\mattn\go-colorable (from $GOROOT)
        D:\go\src\github.com\mattn\go-colorable (from $GOPATH)

Obrigado.

Por favor, mova a discussão sobre os problemas de instalação do fork do mattn para o repositório do mattn. Obrigado! ;)

Se você quiser discutir o suporte do Windows em geral, use o fórum de discussão do asciinema: https://discourse.asciinema.org/

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

Questões relacionadas

Bux42 picture Bux42  ·  9Comentários

deeplook picture deeplook  ·  10Comentários

yuvalif picture yuvalif  ·  10Comentários

redaxmedia picture redaxmedia  ·  3Comentários

abaykan picture abaykan  ·  10Comentários