1 /* GIO - GLib Input, Output and Streaming Library 2 * 3 * Copyright (C) 2006-2007 Red Hat, Inc. 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General 16 * Public License along with this library; if not, see <http://www.gnu.org/licenses/>. 17 * 18 * Author: Alexander Larsson <alexl@redhat.com> 19 */ 20 21 #ifndef __G_DESKTOP_APP_INFO_H__ 22 #define __G_DESKTOP_APP_INFO_H__ 23 24 #include <gio/gio.h> 25 26 G_BEGIN_DECLS 27 28 #define G_TYPE_DESKTOP_APP_INFO (g_desktop_app_info_get_type ()) 29 #define G_DESKTOP_APP_INFO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DESKTOP_APP_INFO, GDesktopAppInfo)) 30 #define G_DESKTOP_APP_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_DESKTOP_APP_INFO, GDesktopAppInfoClass)) 31 #define G_IS_DESKTOP_APP_INFO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DESKTOP_APP_INFO)) 32 #define G_IS_DESKTOP_APP_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_DESKTOP_APP_INFO)) 33 #define G_DESKTOP_APP_INFO_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DESKTOP_APP_INFO, GDesktopAppInfoClass)) 34 35 typedef struct _GDesktopAppInfo GDesktopAppInfo; 36 typedef struct _GDesktopAppInfoClass GDesktopAppInfoClass; 37 38 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDesktopAppInfo, g_object_unref) 39 40 struct _GDesktopAppInfoClass 41 { 42 GObjectClass parent_class; 43 }; 44 45 46 GLIB_AVAILABLE_IN_ALL 47 GType g_desktop_app_info_get_type (void) G_GNUC_CONST; 48 49 GLIB_AVAILABLE_IN_ALL 50 GDesktopAppInfo *g_desktop_app_info_new_from_filename (const char *filename); 51 GLIB_AVAILABLE_IN_ALL 52 GDesktopAppInfo *g_desktop_app_info_new_from_keyfile (GKeyFile *key_file); 53 54 GLIB_AVAILABLE_IN_ALL 55 const char * g_desktop_app_info_get_filename (GDesktopAppInfo *info); 56 57 GLIB_AVAILABLE_IN_2_30 58 const char * g_desktop_app_info_get_generic_name (GDesktopAppInfo *info); 59 GLIB_AVAILABLE_IN_2_30 60 const char * g_desktop_app_info_get_categories (GDesktopAppInfo *info); 61 GLIB_AVAILABLE_IN_2_30 62 const char * const *g_desktop_app_info_get_keywords (GDesktopAppInfo *info); 63 GLIB_AVAILABLE_IN_2_30 64 gboolean g_desktop_app_info_get_nodisplay (GDesktopAppInfo *info); 65 GLIB_AVAILABLE_IN_2_30 66 gboolean g_desktop_app_info_get_show_in (GDesktopAppInfo *info, 67 const gchar *desktop_env); 68 GLIB_AVAILABLE_IN_2_34 69 const char * g_desktop_app_info_get_startup_wm_class (GDesktopAppInfo *info); 70 71 GLIB_AVAILABLE_IN_ALL 72 GDesktopAppInfo *g_desktop_app_info_new (const char *desktop_id); 73 GLIB_AVAILABLE_IN_ALL 74 gboolean g_desktop_app_info_get_is_hidden (GDesktopAppInfo *info); 75 76 GLIB_DEPRECATED_IN_2_42 77 void g_desktop_app_info_set_desktop_env (const char *desktop_env); 78 79 GLIB_AVAILABLE_IN_2_36 80 gboolean g_desktop_app_info_has_key (GDesktopAppInfo *info, 81 const char *key); 82 GLIB_AVAILABLE_IN_2_36 83 char * g_desktop_app_info_get_string (GDesktopAppInfo *info, 84 const char *key); 85 GLIB_AVAILABLE_IN_2_56 86 char * g_desktop_app_info_get_locale_string (GDesktopAppInfo *info, 87 const char *key); 88 GLIB_AVAILABLE_IN_2_36 89 gboolean g_desktop_app_info_get_boolean (GDesktopAppInfo *info, 90 const char *key); 91 92 GLIB_AVAILABLE_IN_2_60 93 gchar ** g_desktop_app_info_get_string_list (GDesktopAppInfo *info, 94 const char *key, 95 gsize *length); 96 97 GLIB_AVAILABLE_IN_2_38 98 const gchar * const * g_desktop_app_info_list_actions (GDesktopAppInfo *info); 99 100 GLIB_AVAILABLE_IN_2_38 101 void g_desktop_app_info_launch_action (GDesktopAppInfo *info, 102 const gchar *action_name, 103 GAppLaunchContext *launch_context); 104 105 GLIB_AVAILABLE_IN_2_38 106 gchar * g_desktop_app_info_get_action_name (GDesktopAppInfo *info, 107 const gchar *action_name); 108 109 #define G_TYPE_DESKTOP_APP_INFO_LOOKUP (g_desktop_app_info_lookup_get_type ()) GLIB_DEPRECATED_MACRO_IN_2_28 110 #define G_DESKTOP_APP_INFO_LOOKUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_DESKTOP_APP_INFO_LOOKUP, GDesktopAppInfoLookup)) GLIB_DEPRECATED_MACRO_IN_2_28 111 #define G_IS_DESKTOP_APP_INFO_LOOKUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_DESKTOP_APP_INFO_LOOKUP)) GLIB_DEPRECATED_MACRO_IN_2_28 112 #define G_DESKTOP_APP_INFO_LOOKUP_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), G_TYPE_DESKTOP_APP_INFO_LOOKUP, GDesktopAppInfoLookupIface)) GLIB_DEPRECATED_MACRO_IN_2_28 113 114 /** 115 * G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME: 116 * 117 * Extension point for default handler to URI association. See 118 * [Extending GIO][extending-gio]. 119 * 120 * Deprecated: 2.28: The #GDesktopAppInfoLookup interface is deprecated and 121 * unused by GIO. 122 */ 123 #define G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME "gio-desktop-app-info-lookup" GLIB_DEPRECATED_MACRO_IN_2_28 124 125 /** 126 * GDesktopAppInfoLookupIface: 127 * @get_default_for_uri_scheme: Virtual method for 128 * g_desktop_app_info_lookup_get_default_for_uri_scheme(). 129 * 130 * Interface that is used by backends to associate default 131 * handlers with URI schemes. 132 */ 133 typedef struct _GDesktopAppInfoLookup GDesktopAppInfoLookup; 134 typedef struct _GDesktopAppInfoLookupIface GDesktopAppInfoLookupIface; 135 136 struct _GDesktopAppInfoLookupIface 137 { 138 GTypeInterface g_iface; 139 140 GAppInfo * (* get_default_for_uri_scheme) (GDesktopAppInfoLookup *lookup, 141 const char *uri_scheme); 142 }; 143 144 GLIB_DEPRECATED 145 GType g_desktop_app_info_lookup_get_type (void) G_GNUC_CONST; 146 147 GLIB_DEPRECATED 148 GAppInfo *g_desktop_app_info_lookup_get_default_for_uri_scheme (GDesktopAppInfoLookup *lookup, 149 const char *uri_scheme); 150 151 /** 152 * GDesktopAppLaunchCallback: 153 * @appinfo: a #GDesktopAppInfo 154 * @pid: Process identifier 155 * @user_data: User data 156 * 157 * During invocation, g_desktop_app_info_launch_uris_as_manager() may 158 * create one or more child processes. This callback is invoked once 159 * for each, providing the process ID. 160 */ 161 typedef void (*GDesktopAppLaunchCallback) (GDesktopAppInfo *appinfo, 162 GPid pid, 163 gpointer user_data); 164 165 GLIB_AVAILABLE_IN_2_28 166 gboolean g_desktop_app_info_launch_uris_as_manager (GDesktopAppInfo *appinfo, 167 GList *uris, 168 GAppLaunchContext *launch_context, 169 GSpawnFlags spawn_flags, 170 GSpawnChildSetupFunc user_setup, 171 gpointer user_setup_data, 172 GDesktopAppLaunchCallback pid_callback, 173 gpointer pid_callback_data, 174 GError **error); 175 176 GLIB_AVAILABLE_IN_2_58 177 gboolean g_desktop_app_info_launch_uris_as_manager_with_fds (GDesktopAppInfo *appinfo, 178 GList *uris, 179 GAppLaunchContext *launch_context, 180 GSpawnFlags spawn_flags, 181 GSpawnChildSetupFunc user_setup, 182 gpointer user_setup_data, 183 GDesktopAppLaunchCallback pid_callback, 184 gpointer pid_callback_data, 185 gint stdin_fd, 186 gint stdout_fd, 187 gint stderr_fd, 188 GError **error); 189 190 GLIB_AVAILABLE_IN_2_40 191 gchar *** g_desktop_app_info_search (const gchar *search_string); 192 193 GLIB_AVAILABLE_IN_2_42 194 GList *g_desktop_app_info_get_implementations (const gchar *interface); 195 196 G_END_DECLS 197 198 #endif /* __G_DESKTOP_APP_INFO_H__ */ 199