HyperDesk - une application de bureau qui intègre des sessions Hyper-V/RDP dans une seule fenêtre
(github.com/qetqet910)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.
- 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.
- 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.
- 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. - 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.