“hello dbus” in vala

On the long flight back from UDS-Lucid I read the Vala tutorial on my ebook, and did some of the exercises. I was curious about Vala because it combines the speed and memory efficiency of C in a sane C#-like language with proper memory management, exceptions, and without the silly “close to the metal” faff that is usually required in C.

And indeed I wasn’t disappointed. It’s not as convenient as Python, but really not far from it, and it’s faaaast!

Today I finally got back to this and wrote my first D-Bus example in vala which does a call to DeviceKit-disks:

using DBus;

int main(string[] args) { Connection con = Bus.get(BusType.SYSTEM);

dynamic DBus.Object dk = con.get_object(
        "org.freedesktop.DeviceKit.Disks",
    "/org/freedesktop/DeviceKit/Disks", 
    "org.freedesktop.DeviceKit.Disks");

ObjectPath[] devs = dk.EnumerateDevices();
foreach (ObjectPath o in devs)
stdout.printf("%s\n", o);

return 0;

}

Compile and run it with

valac --pkg dbus-glib-1 dbus-dk.vala && ./dbus-dk

and voila!