2 #include <gio/gdesktopappinfo.h>
6 print (const gchar *str)
8 g_print ("%s\n", str ? str : "nil");
12 print_app_list (GList *list)
16 GAppInfo *info = list->data;
17 print (g_app_info_get_id (info));
18 list = g_list_delete_link (list, list);
19 g_object_unref (info);
24 main (int argc, char **argv)
26 setlocale (LC_ALL, "");
30 else if (g_str_equal (argv[1], "list"))
34 all = g_app_info_get_all ();
35 for (i = all; i; i = i->next)
36 g_print ("%s%s", g_app_info_get_id (i->data), i->next ? " " : "\n");
37 g_list_free_full (all, g_object_unref);
39 else if (g_str_equal (argv[1], "search"))
44 results = g_desktop_app_info_search (argv[2]);
45 for (i = 0; results[i]; i++)
47 for (j = 0; results[i][j]; j++)
48 g_print ("%s%s", j ? " " : "", results[i][j]);
50 g_strfreev (results[i]);
54 else if (g_str_equal (argv[1], "show-info"))
58 info = (GAppInfo *) g_desktop_app_info_new (argv[2]);
61 print (g_app_info_get_id (info));
62 print (g_app_info_get_name (info));
63 print (g_app_info_get_display_name (info));
64 print (g_app_info_get_description (info));
65 g_object_unref (info);
68 else if (g_str_equal (argv[1], "default-for-type"))
72 info = g_app_info_get_default_for_type (argv[2], FALSE);
76 print (g_app_info_get_id (info));
77 g_object_unref (info);
80 else if (g_str_equal (argv[1], "recommended-for-type"))
84 list = g_app_info_get_recommended_for_type (argv[2]);
85 print_app_list (list);
87 else if (g_str_equal (argv[1], "all-for-type"))
91 list = g_app_info_get_all_for_type (argv[2]);
92 print_app_list (list);
95 else if (g_str_equal (argv[1], "fallback-for-type"))
99 list = g_app_info_get_fallback_for_type (argv[2]);
100 print_app_list (list);