gboolean desktop_launch(GdkScreen *screen, const char *desktop_name, GError **error) { GnomeDesktopItem *item; int result; gnome_vfs_init(); /* gnome desktop item uses it internally */ item = find_desktop_item(desktop_name); if (item == NULL) { g_set_error(error, G_FILE_ERROR, G_FILE_ERROR_FAILED, "Could not find the file %s.desktop needed to start this application", desktop_name); return FALSE; } result = gnome_desktop_item_launch_on_screen(item, NULL, 0, screen, -1, error); gnome_desktop_item_unref(item); if (result < 0) { return FALSE; } else { return TRUE; } }
static int panel_ditem_launch (GnomeDesktopItem *item, GList *file_list, GdkScreen *screen, GError **error) { int workspace; workspace = xstuff_get_current_workspace (screen); gnome_desktop_item_set_launch_time (item, gtk_get_current_event_time ()); return gnome_desktop_item_launch_on_screen (item, file_list, 0, screen, workspace, error); }