Dharun Ashokkumar India

VMManager

C · GTK4 · systems

A native GTK4 desktop app for managing QEMU/KVM virtual machines and Incus/LXD containers from one window.

View source on GitHub

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

LanguageC
GUIGTK 4
Version2.0.0
LicenceGPL-3.0