Ratty: emulador de terminal com suporte a gráficos 3D inline
(ratty-term.org)- Ratty é um emulador de terminal com renderização por GPU que oferece suporte a gráficos 3D inline
- Inclui um cursor de rato giratório
- No site, é possível ler o post do blog
- No site, é possível acessar Baixar Ratty
- No site, é possível acessar Ver código-fonte
2 comentários
Comentários no Hacker News
Vi algumas pessoas aqui falando de uso de VR, e eu já brinquei um pouco com uma UI 3D rasa para desenvolvimento de software
Era uma profundidade rasa de poucos cm para dentro da tela do notebook, para reduzir a fadiga visual por VAC mesmo usando o dia todo, e parecia mais desenhar com cor e camadas em 3D do que ficar balançando os braços pela sala
O 3D pode ser feito com wobble 3D, perspectiva criada por rastreamento de cabeça/olhos via webcam, estéreo com óculos de obturador, XR HMD etc. O método wobble é o mais fácil, mas é bonitinho e distrativo; a perspectiva é mais sutil e menos incômoda
O par estéreo de um app pode funcionar como “fornecer duas janelas para o olho esquerdo/direito” ou “alternar a exibição das visões esquerda/direita com rotulagem/sincronização/polling”, e boa parte disso exige suporte do sistema/gerenciador de janelas/desktop. Consegui bastante alavancagem empilhando Electron com X
Empurrar texto para o 3D é mais divertido do que colorização, e, se você aceitar uma aparência carregada, também dá para incluir camadas auxiliares de informação separadas por profundidade. Se o Emacs ganhasse profundidade por caractere, teria algo que nem a LispM teve
Mas, ao explorar possibilidades para algo que não é intrinsecamente 3D, como texto de código, é muito mais fácil prototipar a UX com cores de primeiro plano/fundo, fontes, Unicode e animação; no navegador, bastam
divs sobrepostas e canvas 2D/3D transparentesTodo caractere é um quad posicionado em 3D e renderizado por instância, então dá para lidar com dezenas de milhões ou mais. Cada caractere pode ser endereçado e alterado individualmente como se fosse um polígono qualquer
Estou usando isso para renderizar um repositório inteiro do GitHub de uma vez, e existem duas versões: uma nativa para Apple e outra para a web. A versão web inclui os elementos básicos de uma configuração de IDE, e eu adoraria ouvir ideias ou impressões
https://ivanlugo.dev/ide
O UNIX ainda parece estar tentando alcançar as workstations da Xerox ou uma Lisp machine típica em termos de experiência REPL
Já havia gráficos inline em 1981
https://youtu.be/o4-YnLpLgtk?t=376
Para quem ainda não viu: https://www.youtube.com/watch?v=yJDv-zdhzMY
Gostei disso. Não há motivo para o terminal só suportar texto
Notebooks de ciência de dados mostram uma direção possível para a evolução do terminal, e tem acontecido muita coisa interessante nessa área. O Kitty provavelmente é o inovador mais agressivo aqui [1]
Só não sei se existe uma visão geral por trás disso
[1]: https://sw.kovidgoyal.net/kitty/protocol-extensions/
[1] https://github.com/joouha/euporie
pyvistaconseguiu usar os gráficos do Kitty para renderizar formas 3D arbitrárias diretamente no terminalÉ um hack gigantesco, e não houve jeito de obter desempenho sem usar shm
https://git.theresno.cloud/panki/kglobe
Talvez até supere o “mashup de haiku+macOS” que eu imaginava como futuro ideal da computação
Em vez de clicar e usar um gerenciador de arquivos, normalmente prefiro explorar o sistema de arquivos pelo terminal, e seria muito útil ter um
lsem grade que mostrasse modelos 3D (STL/STEP, impressão 3D) de um diretório com renderização baseada em terminalPontos extras se desse para pré-visualizar e girar o modelo
Não sei bem para que eu usaria isso, mas o efeito visual foi divertido, e também gostei do design brutalista do site. Me trouxe boas lembranças dos velhos tempos
Isso parece bem legal, não?
Tenho uma pergunta. Pela capacidade de renderização, parece que 2D também poderia ser muito bem tratado; será que entendi errado? As soluções existentes para obter imagens 2D de alta qualidade ou rasterização no terminal em geral não são muito boas. Fico curioso se isso poderia ser melhor do que outras soluções, ou se esbarra em alguma limitação fundamental em algum ponto
Também fico curioso sobre como isso funcionaria por ssh, já que há aceleração por GPU
O terminal está lentamente virando um navegador web completo
Sinceramente ainda não sei, mas pretendo descobrir por conta própria em breve :D
https://github.com/fathyb/carbonyl
https://hyper.is/
Descanse em paz, Terry. Que ele nunca seja esquecido
Dito isso, olhando para este projeto, parece que o espírito dele continua vivo :D
Isso me lembra da época em que o compiz saiu e todo mundo dizia coisas como “minhas janelas estão em um cubo” ou “eu preciso de janelas gelatinosas”
Então, sendo esse tipo de pessoa, fui instalar imediatamente de qualquer jeito
Alternar entre Windows e Ubuntu com todos aqueles efeitos de animação do compiz parecia mágica
No post do blog linkado, descobri o protocolo de glifos [1] recém-proposto e achei muito interessante
Cerca de 6 meses atrás eu já lamentava a falta de algo exatamente assim [2]
[1] https://rapha.land/introducing-glyph-protocol-for-terminals/
[2] https://news.ycombinator.com/item?id=45805072
https://github.com/tikimcfee/glyph3d-js
Em certa medida isso já é possível com o protocolo gráfico do Kitty. Fiz uma demo de renderização de gráficos 3D no Kitty [1]
Na prática, a parte importante que falta é vsync, e parece que o ratty também não tem isso
Se a renderização não estiver sincronizada, o emulador de terminal pode ler o framebuffer enquanto a aplicação escreve nele, gerando artefatos visuais
[1] https://x.com/zack_overflow/status/2035921425341763756?s=20
Opiniões no Lobste.rs
A landing page tinha um cheiro de LLM, então fui conferir o post do blog e, como esperado, era isso mesmo
Se a ideia é colocar tag no uso em si, então teria que colocar em 90% dos projetos, e a conversa acaba saindo do resultado em si. Não quero ver a thread sobre uma pessoa hackeando um emulador de terminal que mostra um rato 3D descambar para um debate ético
Coloquei um pouco de 3D pelo efeito uau rápido, mas acho que o objetivo deveria ser repensar os fundamentos com cuidado. Mesmo que meu experimento fracasse, tenho orgulho de ter criado um produto para humanos, com uma perspectiva humana
Claro, se eles estão fazendo isso puramente por diversão, então não há problema nisso por si só
Mesmo lendo várias vezes, continuo extremamente confuso
De um lado, assim como quando vejo sixel ou kitty, continuo pensando “por quê?”. Colocar gráficos em uma interface fundamentalmente orientada a texto é interessante, mas não parece prático. Claro, a mesma objeção poderia ser feita a curses ou slang
Por outro lado, fico me perguntando se daria para enfiar algum tipo de protocolo/display de renderização 3D dentro do Emacs. Não faço ideia do que eu faria com isso, mas parece muito legal, como neste projeto
Antigamente as pessoas faziam programas porque era divertido. Não lembra?
Passei uma tarde/noite fazendo meu framework de CAD em Haskell imprimir objetos de um jeito que o Ratty consegue ler
Pelo tempo investido, pareceu bem promissor, mas eu gostaria que o comando de “posicionamento de objeto” tivesse um pouco mais de configurabilidade. Esperava que ele mesmo cuidasse de criar espaço dentro da saída do REPL e também do redimensionamento do objeto
Além disso, é meio ruim que o Ratty não consiga carregar arquivos fora da pasta assets. A rolagem também pareceu meio quebrada; muitas vezes vi os objetos desaparecerem antes da hora. Mas talvez eu tenha feito algo errado