VMManager
A native GTK4 desktop app for managing QEMU/KVM virtual machines and Incus/LXD containers from one window.
Stack: C, GTK4, libvirt, QEMU, KVM, Incus, LXD, virtualization, Linux, GPL-3.0
What it is
Think Proxmox — but as a compiled C binary on your desktop. No browser, no web server, no runtime dependencies. One binary that manages both QEMU/KVM virtual machines and Incus/LXD containers from a single GTK4 interface.
I wrote it in C on purpose. I wanted to talk to libvirt directly as a C library, drive the Incus REST API over its Unix socket with libcurl, and feel where the real complexity in virtualization management lives — instead of letting a high-level framework hide it from me.
What it does
- Dashboard — real-time CPU, RAM, and disk monitoring plus VM and container counts, refreshing every few seconds
- Virtual machines — create, start, shut down, pause, resume, reboot, force-stop, and delete KVM VMs via libvirt
- Containers — full lifecycle for Incus/LXD containers via the REST API
- Snapshots — create, revert, and delete VM snapshots
- Console access — launch a VM viewer or a container shell straight from the app
- Everyday things — activity log, search and filter, keyboard shortcuts, persistent settings
Architecture
The GUI is two GTK4 panels — one for VMs, one for containers. Underneath, the VM panel speaks to libvirt as a C library, and the container panel speaks the Incus REST API through libcurl over a Unix socket. Those two adapters fan out to QEMU/KVM and Incus/LXD respectively. That's the whole shape: a thin, honest layer over the tools that already do the heavy lifting.
At a glance
| Language | C |
|---|---|
| GUI | GTK 4 |
| Version | 2.0.0 |
| Licence | GPL-3.0 |