1 pontos por GN⁺ 2025-03-09 | 1 comentários | Compartilhar no WhatsApp
  • Vtm é um multiplexador de terminal virtual distribuído como um único executável, que envolve apps de CLI para criar um desktop baseado em texto e faz a ponte entre TUI e GUI
  • Roda da mesma forma em janelas nativas e no console padrão, e oferece aninhamento infinito, permitindo sobrepor vários ambientes de terminal
  • vtm roda no modo desktop, e vtm --run term [<your_shell>] funciona como um emulador de terminal independente
  • Em SSH, é possível conectar no formato vtm ssh user@host vtm usando o protocolo DirectVT, com a indicação de desempenho superior ao da conexão clássica
  • Suporta Windows 8.1 ou superior e plataformas Unix-like como Linux, macOS, FreeBSD, NetBSD e OpenBSD, mas a renderização de janelas GUI nativas no momento só é possível no Windows

O que o Vtm faz

  • Vtm é um multiplexador de terminal virtual, distribuído na forma de um único executável
  • Roda da mesma forma em janelas nativas ou no console padrão
  • Pode envolver e executar qualquer app de CLI
  • Suporta aninhamento infinito para montar um ambiente de desktop baseado em texto
  • O objetivo é oferecer um desktop baseado em texto que faça a ponte sobre a lacuna entre TUI e GUI

Modos de execução

  • Modo desktop

    • Ao executar vtm, o ambiente de desktop é iniciado
  • Modo terminal

    • Ao executar vtm --run term [<your_shell>], é possível usar o Vtm como um emulador de terminal totalmente independente
  • Conexão binária via SSH

    • O exemplo de conexão SSH usando o protocolo DirectVT é o seguinte
    • vtm ssh user@host vtm
    • É informado que esse método tem desempenho superior ao da conexão clássica

Demos e exemplos

  • Há uma demo no YouTube
  • As demos AnyPlex e VT2D power atualmente só podem ser executadas no Windows
    • vtm --run test
  • Exemplos de apps HybridTUI, ou seja, HTUI, são fornecidos em formato conceitual
    • vtm --run calc
    • vtm --run text
    • vtm --run gems

Plataformas suportadas e limitações

  • Windows

    • Suporte a Windows 8.1 ou superior
    • Inclui Windows Server Core e Windows PE
  • Unix-like

    • Linux
    • macOS
    • FreeBSD
    • NetBSD
    • OpenBSD
    • Família de sistemas operacionais voltados a POSIX
    • A lista Tested Terminals é fornecida separadamente
    • Atualmente, a renderização de janelas GUI nativas só é possível na plataforma Windows
    • Em plataformas Unix-like, é necessário um emulador de terminal

Distribuição e documentação

Tecnologias usadas

1 comentários

 
GN⁺ 2025-03-09
Opiniões no Hacker News
  • Houve uma thread grande 5 anos atrás: https://news.ycombinator.com/item?id=24243521

    • O link principal daquela thread parece ter caído nas mãos de um agente mal-intencionado
  • Parece que estou deixando passar algo óbvio, mas fico me perguntando se isto é um multiplexador de terminal (como o tmux) ou um emulador de terminal com tiling (como o iTerm)

    • Não é nenhum dos dois; é mais algo próprio. É mais parecido com o tmux, mas a forma de interação lembra mais lidar com um gerenciador de janelas gráfico
    • O título do vídeo do YouTube incorporado no GitHub é “Tiling Window Manager with Drag&Drop”, e, vendo o vídeo, parece exatamente esse tipo de ferramenta
      Não sei por que limitaram artificialmente para só poder abrir terminais
    • Me lembra muito uma estação de trabalho Apollo
    • Eu diria que é mais do lado do tiling
  • É como dar a volta completa. Criamos GUIs para substituir TUIs e depois implementamos uma GUI dentro de uma TUI. Viva o terminal

    • Na verdade, fizemos isso duas vezes. Como muitos terminais rodam sobre Electron ou interfaces de navegador parecidas, também implementamos uma TUI dentro de uma GUI
    • Parece a vingança do DESQview
    • No vídeo de demonstração, dá para sentir bastante o clima do Turbo Vision da Borland
    • Para fazer direito, ainda precisa passar pelo aalib
    • Sim. Isso está pendendo tanto para ter tantos recursos quanto uma GUI que não sei se não acaba perdendo algo que se ganha justamente ao começar pelo terminal
  • O motivo de usar terminal, para começo de conversa, é não precisar de mouse. Uso muitas ferramentas TUI, mas acho que esta não vai virar uma delas

    • Seria ótimo se tivesse comportamento de tiling e key bindings no estilo i3/sway
  • Sempre me perguntei se um gerenciador de janelas em estilo TUI dentro do terminal seria possível, e este é um projeto realmente muito legal. Quem fez mandou muito bem

    • Meu ambiente desktop TUI se chama Emacs, com direito até a gerenciador de janelas com tiling %) O Vim provavelmente também consegue oferecer uma experiência parecida
    • A demonstração parece boa, mas, depois de já ter me queimado algumas vezes, fico cauteloso
      Não basta ser bonito
    • Algo como o dvtm?
      https://www.brain-dump.org/projects/dvtm/
  • Parece muito fluido
    Mas, do meu ponto de vista, a necessidade de arrastar, soltar e redimensionar janelas é mais um hábito de ambientes Windows. Então talvez esta seja uma ferramenta que faz pelo mouse o que tmux e Neovim fazem pelo teclado
    No tmux, os layouts de janela de que preciso são alguns conjuntos fixos de painéis 2x2, e métodos de redimensionamento predefinidos mais alternância para tela cheia já bastam. Com ferramentas eficientes como telescope e nvim, a troca é tão rápida que deixa de haver necessidade de organizar todas as janelas visivelmente; você passa a usar mais um modelo mental do que existe do que uma representação visual. Por exemplo, não preciso da árvore de arquivos comum no lado esquerdo da maioria das IDEs

    • Eu também pensava assim antes. Hoje, por algum motivo, valorizo mais bons padrões iniciais e redução de carga cognitiva, então prefiro algo em que eu manipule menos e pense mais. Acho que hoje até conseguiria usar o Eclipse numa boa :P
  • Alguns anos atrás havia algo parecido, e acho que funcionava sobre conexões ssh e tinha uma espécie de UI com zoom. Não consigo achar o link; alguém lembra de algo assim?

    • Não entendi totalmente o que “zoom” quer dizer exatamente, mas o kitty faz algo desse tipo: você abre uma conexão ssh com kitten ssh user@host e, ao pressionar uma tecla, outro painel ssh é aberto na mesma aba; se bem me lembro, dá para “ampliar” uma aba para ocupar a janela inteira
      https://sw.kovidgoyal.net/kitty/
    • Era exatamente esta ferramenta. Antigamente dava para acessar via ssh assim
      ssh vtm@netxs.online
      Agora esse domínio está fora do ar
  • Seria bom se alguns web apps adotassem essa linguagem de design puramente textual

  • Estou tentando entender: usando o tmux como comparação, se eu trocasse por isso, o que ganharia seria gerenciamento de janelas/painéis baseado em mouse?

  • Seria bom se algumas dessas ideias entrassem no Zellij