#include /* gcc -o session-ex -Wall session-ex.c `pkg-config --cflags --libs gio-2.0` * */ int main (int argc, char *argv[]) { const gchar *packages[] = {"rpmdeplint", NULL}; GDBusProxy *proxy = NULL; GError *error = NULL; GVariant *retval = NULL; /* get a session bus proxy */ proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, "org.freedesktop.PackageKit", "/org/freedesktop/PackageKit", "org.freedesktop.PackageKit.Modify2", NULL, &error); if (proxy == NULL) { g_warning ("failed: %s", error->message); g_error_free (error); goto out; } /* issue the sync request */ retval = g_dbus_proxy_call_sync (proxy, "InstallPackageNames", g_variant_new ("(asssa{sv})", packages, "show-progress", "session-ex" "{}"), G_DBUS_CALL_FLAGS_NONE, -1, /* timeout */ NULL, /* cancellable */ &error); if (retval == NULL) { g_warning ("failed: %s", error->message); g_error_free (error); goto out; } out: if (proxy != NULL) g_object_unref (proxy); return 0; }