1 points par qetqet910 5 시간 전 | Aucun commentaire pour le moment. | Partager sur WhatsApp

J’en ai eu assez de jongler entre plusieurs VM ouvertes, alors je l’ai créé.

En m’adaptant à mon travail en entreprise, cette idée m’est venue soudainement.

Quand une demande de maintenance arrive, il faut ouvrir le bureau à distance du serveur du client (MST),
l’environnement de développement adapté à la version du client (Hyper-V),
ou encore des clients qui exigent un environnement particulier (VDI/Omnissa), etc.
L’écran devient beaucoup trop chaotique… il n’y aurait pas une meilleure solution ?

Je me suis donc dit que cela pourrait aider un peu l’équipe, et je l’ai développé moi-même.

  • Fonctionnement

HyperDesk intègre Hyper-V (VMConnect) et les sessions RDP dans l’application via le Win32 Window Swallowing.
Ce n’est ni un aperçu ni des onglets : il absorbe la véritable fenêtre de session avec SetParent.

  1. Vue active unique + bascule immédiate : une seule session active est affichée en plein écran, et jusqu’à 4 sessions peuvent être basculées instantanément avec Alt+1~4 (ou les onglets d’en-tête). Les autres sessions restent vivantes en arrière-plan, donc le changement ne coupe pas la connexion.
  2. Routage clavier : si la session active a le focus, les raccourcis système comme la touche Win ou Alt+Tab sont transmis à l’intérieur de la VM.
  3. Prévention du gel de l’UI : même si une modale d’authentification du client externe s’ouvre, l’UI principale ne se bloque pas ; pour éviter les deadlocks, une file de messages indépendante a été mise en place au lieu d’AttachThreadInput.
  4. Suivi des fenêtres : lors d’un redimensionnement de la fenêtre de l’application ou d’autres changements de layout, la position de la fenêtre externe intégrée est suivie via requestAnimationFrame + filtrage delta côté backend.

En plus de cela, j’ai ajouté des fonctions pratiques comme les snapshots, les alias/mémos par ressource distante, une palette de commandes, ainsi que l’activation/désactivation de RDP et Hyper-V.

  • Stack / environnement

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

  • Ce qui ne fonctionne pas encore

Pour VMware/Omnissa Horizon, une partie du code de lancement du client existe, mais cela n’a pas été validé en conditions réelles. En particulier, Omnissa n’est pas une VM en elle-même mais plutôt un tableau de bord, ce qui rend la capture de la fenêtre délicate ; l’intégration est donc désactivée.

Comme c’est un side project, il y a encore beaucoup de lacunes. Je suis particulièrement curieux d’avoir des avis sur les limites du Window Swallowing en lui-même, ou sur la question de savoir si cette approche peut être utilisée de manière fiable en contexte professionnel. Si certains se sont posé des questions similaires, je recevrai volontiers vos retours !

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.