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?
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:
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. :)
@andkirby https://github.com/asciinema/asciinema/issues/150#issuecomment -305995768
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 é 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.
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:
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 ;)
@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.
@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 ,
pip install asciinemawindows
.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/
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