HyperDesk - Aplikasi desktop untuk menyematkan sesi Hyper-V/RDP ke dalam satu jendela
(github.com/qetqet910)Saya lelah harus membuka banyak VM dan terus-menerus berpindah jendela, jadi saya membuat ini.
Saat sedang menyesuaikan diri dengan pekerjaan di kantor, tiba-tiba saya terpikir hal seperti ini.
Begitu ada satu pekerjaan maintenance masuk, ada remote desktop server pelanggan terkait (MST),
lingkungan pengembangan yang sesuai dengan versi klien (Hyper-V), pelanggan yang membutuhkan lingkungan khusus (VDI/Omnissa), dan lain-lain.
Layar jadi terlalu berantakan... adakah cara yang lebih baik?
Jadi saya mencoba membuatnya sendiri dengan harapan bisa sedikit membantu tim.
- Cara kerja
HyperDesk menyematkan sesi Hyper-V (VMConnect) dan RDP ke dalam aplikasi dengan Win32 Window Swallowing.
Ini bukan pratinjau atau tab, melainkan menyerap jendela sesi yang sebenarnya dengan SetParent.
- Tampilan aktif tunggal + perpindahan instan: menampilkan satu sesi aktif dalam layar penuh, lalu beralih instan hingga 4 sesi dengan Alt+1~4 (atau tab header). Sesi lainnya tetap hidup di latar belakang sehingga tidak terputus saat berpindah.
- Routing keyboard: jika fokus berada pada sesi aktif, shortcut sistem seperti tombol Win dan Alt+Tab akan diteruskan ke dalam VM.
- Pencegahan UI macet: agar UI utama tidak macet meskipun modal autentikasi dari klien eksternal muncul, saya membangun message queue independen alih-alih
AttachThreadInputuntuk menghindari deadlock. - Pelacakan window: saat tata letak berubah, misalnya jendela aplikasi di-resize, posisi jendela eksternal yang disematkan akan ikut bergerak dengan
requestAnimationFrame+ delta filtering di backend.
Selain itu, saya juga menambahkan fitur kenyamanan seperti snapshot, alias/memo per aset remote, command palette, RDP, dan On/Off Hyper-V.
- Stack / lingkungan
Tauri v2 + Rust + React 19
Khusus Windows
Landing page : https://landinghyperdesk.netlify.app/ (Y2K)
- Yang masih belum berfungsi
VMware/Omnissa Horizon sudah punya sebagian kode untuk menjalankan klien, tetapi belum divalidasi untuk penggunaan nyata. Khusus Omnissa, karena bentuknya dashboard, bukan VM itu sendiri, jendelanya sulit ditangkap sehingga embedding masih dinonaktifkan.
Karena ini dibuat sebagai side project, masih banyak kekurangannya. Saya terutama penasaran dengan pendapat tentang keterbatasan pendekatan Window Swallowing itu sendiri, atau apakah pendekatan seperti ini bisa digunakan secara stabil di lingkungan kerja nyata. Jika ada yang pernah memikirkan masalah serupa, saya akan sangat terbuka menerima feedback!
Belum ada komentar.