कई VM खोलकर विंडो बदलते-बदलते थक गया, इसलिए इसे बनाया।

कंपनी के काम में ढलते हुए अचानक मेरे मन में यह विचार आया।

जैसे ही कोई maintenance का काम आता है, संबंधित ग्राहक कंपनी के सर्वर का remote desktop (MST),
क्लाइंट version के अनुसार development environment (Hyper-V), विशेष environment मांगने वाले ग्राहक (VDI/Omnissa) वगैरह
स्क्रीन बहुत बिखरी-बिखरी लगती है.. क्या इसका कोई अच्छा तरीका नहीं हो सकता?

इसलिए सोचा कि शायद टीम की थोड़ी भी मदद हो सके, तो इसे खुद बनाकर देखा।

  • काम करने का तरीका

HyperDesk, Hyper-V(VMConnect) और RDP sessions को Win32 Window Swallowing के जरिए ऐप के अंदर embed करता है.
यह preview या tab नहीं है, बल्कि असली session window को SetParent से absorb करने का तरीका है.

  1. single active view + instant switching: एक active session को full screen में दिखाता है, और Alt+1~4 (या header tabs) से अधिकतम 4 sessions के बीच तुरंत switch किया जा सकता है. बाकी sessions background में वैसे ही जीवित रहते हैं, इसलिए switch करने पर disconnect नहीं होते.
  2. keyboard routing: अगर focus active session पर हो, तो Win key, Alt+Tab जैसे system shortcuts VM के अंदर भेजे जाते हैं.
  3. UI freeze रोकथाम: external client का authentication modal खुलने पर भी main UI freeze न हो, इसके लिए AttachThreadInput की जगह independent message queue बनाई गई, ताकि deadlock से बचा जा सके.
  4. window tracking: ऐप विंडो resize जैसी layout change होने पर embedded external window की position को requestAnimationFrame + backend delta filtering से sync कराया जाता है.

इसके अलावा snapshot, remote assets के लिए nickname/memo, command palette, RDP, Hyper-V On/Off जैसी convenience features भी जोड़ी गई हैं.

  • स्टैक / environment

Tauri v2 + Rust + React 19
सिर्फ Windows के लिए
landing page : https://landinghyperdesk.netlify.app/ (Y2K)

  • जो अभी काम नहीं करता

VMware/Omnissa Horizon के लिए client execution code का कुछ हिस्सा है, लेकिन real-world usage verification नहीं हुआ है. खासकर Omnissa में VM खुद नहीं बल्कि dashboard का रूप होता है, इसलिए window को पकड़कर embed करना मुश्किल है और embedding फिलहाल disabled है.

यह side project के रूप में बनाया गया है, इसलिए इसमें कई कमियाँ हैं. खासकर Window Swallowing तरीके की अपनी सीमाओं या ऐसे approach को real work में स्थिर रूप से इस्तेमाल किया जा सकता है या नहीं, इस पर राय जानना चाहता हूँ. अगर किसी ने ऐसी ही समस्या पर सोचा हो, तो आपका feedback खुले दिल से स्वीकार करूंगा!

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.