1 pontos por qetqet910 5 시간 전 | Ainda não há comentários. | Compartilhar no WhatsApp

Eu me cansei de ficar alternando entre várias VMs abertas, então criei isso.

Enquanto me adaptava ao trabalho na empresa, pensei de repente no seguinte.

Quando chega uma demanda de manutenção, tem o desktop remoto do servidor do cliente (MST),
o ambiente de desenvolvimento compatível com a versão do cliente (Hyper-V), clientes que exigem ambientes especiais (VDI/Omnissa) e por aí vai.
A tela fica bagunçada demais... não existe um jeito melhor?

Então pensei em fazer eu mesmo algo que pudesse ajudar o time, nem que fosse um pouco.

  • Como funciona

O HyperDesk incorpora sessões Hyper-V (VMConnect) e RDP dentro do app usando Win32 Window Swallowing.
Não é pré-visualização nem aba: ele absorve a janela real da sessão com SetParent.

  1. Visualização única ativa + troca imediata: mostra uma sessão ativa em tela cheia e permite alternar instantaneamente entre até 4 sessões com Alt+1~4 (ou pelas abas no cabeçalho). As demais sessões continuam vivas em segundo plano, então a troca não interrompe nada.
  2. Roteamento de teclado: quando a sessão ativa está em foco, atalhos de sistema como tecla Win e Alt+Tab são enviados para dentro da VM.
  3. Prevenção de travamento da UI: mesmo quando um modal de autenticação do cliente externo aparece, a UI principal não trava; em vez de AttachThreadInput, foi usada uma fila de mensagens independente para evitar deadlocks.
  4. Rastreamento de janela: quando há mudanças de layout, como redimensionamento da janela do app, a posição da janela externa incorporada acompanha isso com requestAnimationFrame + filtragem delta no backend.

Além disso, inclui funções de conveniência como snapshots, apelidos/anotações por recurso remoto, command palette, RDP e ativação/desativação do Hyper-V.

  • Stack / ambiente

Tauri v2 + Rust + React 19
Somente para Windows
Landing page: https://landinghyperdesk.netlify.app/ (Y2K)

  • O que ainda não funciona

VMware/Omnissa Horizon já tem parte do código de execução do cliente, mas ainda não foi validado em uso real. No caso do Omnissa em especial, como ele é um dashboard e não a própria VM, é complicado capturar a janela, então a incorporação está desativada.

Como foi feito como side project, ainda há muitas limitações. Principalmente, tenho curiosidade sobre opiniões a respeito dos limites da própria abordagem de Window Swallowing e se esse tipo de abordagem pode ser usado com estabilidade em ambiente de trabalho real. Se alguém já passou por uma dor parecida, aceito feedback de forma bem aberta!

Ainda não há comentários.

Ainda não há comentários.