static void load_apps_thread (GTask *task, gpointer panel, gpointer task_data, GCancellable *cancellable) { GList *iter, *apps; apps = g_app_info_get_all (); for (iter = apps; iter && !g_cancellable_is_cancelled (cancellable); iter = iter->next) { GDesktopAppInfo *app; app = iter->data; if (g_desktop_app_info_get_boolean (app, "X-GNOME-UsesNotifications")) { process_app_info (panel, task, G_APP_INFO (app)); g_debug ("Processing app '%s'", g_app_info_get_id (G_APP_INFO (app))); } else { g_debug ("Skipped app '%s', doesn't use notifications", g_app_info_get_id (G_APP_INFO (app))); } } g_list_free_full (apps, g_object_unref); }
static int app_list (gchar **args) { GList *apps; if (g_strv_length (args)) return app_no_args ("list"); apps = g_app_info_get_all (); while (apps) { GDesktopAppInfo *info = apps->data; if (G_IS_DESKTOP_APP_INFO (info)) if (g_desktop_app_info_get_boolean (info, "DBusActivatable")) { const gchar *filename; filename = g_app_info_get_id (G_APP_INFO (info)); if (g_str_has_suffix (filename, ".desktop")) { gchar *id; id = g_strndup (filename, strlen (filename) - 8); g_print ("%s\n", id); g_free (id); } } apps = g_list_delete_link (apps, apps); g_object_unref (info); } return 0; }
static GList * xde_entry(MenuContext *ctx, GMenuTreeEntry *ent) { GDesktopAppInfo *info; GList *text = NULL; const char *name; char *esc1, *esc2, *cmd, *p; char *icon = NULL, *wrap, *s; GIcon *gicon = NULL; gboolean notify; char *wmclass, *appid; if (!(info = gmenu_tree_entry_get_app_info(ent)) || g_desktop_app_info_get_is_hidden(info) || g_desktop_app_info_get_nodisplay(info) || !g_desktop_app_info_get_show_in(info, NULL) || !g_app_info_should_show(G_APP_INFO(info))) return (text); name = g_app_info_get_name(G_APP_INFO(info)); esc1 = g_markup_escape_text(name, -1); if (ctx->stack) gicon = gmenu_tree_directory_get_icon(ctx->stack->data); icon = xde_get_app_icon(ctx, info, gicon, "exec", "unknown", GET_ENTRY_ICON_FLAG_XPM | GET_ENTRY_ICON_FLAG_PNG | GET_ENTRY_ICON_FLAG_JPG | GET_ENTRY_ICON_FLAG_SVG); wrap = ctx->wmm.wrap(ctx, strdup(icon)); notify = g_desktop_app_info_get_boolean(info, G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY); wmclass = g_desktop_app_info_get_string(info, G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS); if ((appid = strdup(gmenu_tree_entry_get_desktop_file_id(ent))) && (p = strstr(appid, ".desktop"))) *p = '\0'; if (options.launch) { cmd = g_strdup_printf("xdg-launch --pointer %s", appid); } else { cmd = xde_get_command(info, appid, icon); } esc2 = g_markup_escape_text(cmd, -1); s = g_strdup_printf("%s<item label=\"%s\"%s>\n", ctx->indent, esc1, wrap); text = g_list_append(text, s); s = g_strdup_printf("%s <action name=\"Execute\">\n", ctx->indent); text = g_list_append(text, s); s = g_strdup_printf("%s <command>%s</command>\n", ctx->indent, esc2); text = g_list_append(text, s); if (!options.launch && (notify || wmclass)) { /* don't put launch specifics if we are launching with xdg-launch */ s = g_strdup_printf("%s <startupnotify>\n", ctx->indent); text = g_list_append(text, s); if (notify) { s = g_strdup_printf("%s <enabled>yes</enabled>\n", ctx->indent); text = g_list_append(text, s); } if (wmclass) { s = g_strdup_printf("%s <wmclass>%s</wmclass>\n", ctx->indent, wmclass); text = g_list_append(text, s); } s = g_strdup_printf("%s <name>%s</name>\n", ctx->indent, esc1); text = g_list_append(text, s); if (icon) { s = g_strdup_printf("%s <icon>%s</icon>\n", ctx->indent, icon); text = g_list_append(text, s); } s = g_strdup_printf("%s </startupnotify>\n", ctx->indent); text = g_list_append(text, s); } s = g_strdup_printf("%s </action>\n", ctx->indent); text = g_list_append(text, s); s = g_strdup_printf("%s</item>\n", ctx->indent); text = g_list_append(text, s); free(wrap); free(icon); g_free(wmclass); free(appid); g_free(esc1); g_free(esc2); free(cmd); return (text); }