vmmanager
a native gtk4 desktop app for managing qemu/kvm virtual machines and incus/lxd containers — from one window.
what it is
think proxmox — but as a compiled c binary on your desktop. a native desktop interface using gtk4, libvirt, and libcurl. 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.
where it stands
documented implementation: a gtk4 app with vm and container lifecycle controls, snapshots, monitoring, and console access. the source and setup requirements are available in the repository.
scope: a desktop management client for an existing virtualization setup. it depends on the relevant host services and libraries.
what it does
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.
engineering field notes
- the hard part
- memory ownership around gtk widgets, parsing api responses, and handling a socket that stops responding.
- the tradeoff
- c and direct library calls take more care than a higher-level wrapper. they also make the boundaries of the system visible.
- what i'd improve next
- make connection loss, recovery, and failed operations easier to understand from the interface.
built by dharun ashokkumar