Modify version string to post-release version 0.18.101
[gmpc.git] / src / smclient / eggdesktopfile.h
blobf8a3d3e035668e9448db0d88aba178bbefd8136a
1 /* eggdesktopfile.h - Freedesktop.Org Desktop Files
2 * Copyright (C) 2007 Novell, Inc.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public License
6 * as published by the Free Software Foundation; either version 2 of
7 * the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; see the file COPYING.LIB. If not,
16 * write to the Free Software Foundation, Inc., 59 Temple Place -
17 * Suite 330, Boston, MA 02111-1307, USA.
20 #ifndef __EGG_DESKTOP_FILE_H__
21 #define __EGG_DESKTOP_FILE_H__
23 #include <glib.h>
25 G_BEGIN_DECLS
27 typedef struct EggDesktopFile EggDesktopFile;
29 typedef enum {
30 EGG_DESKTOP_FILE_TYPE_UNRECOGNIZED,
32 EGG_DESKTOP_FILE_TYPE_APPLICATION,
33 EGG_DESKTOP_FILE_TYPE_LINK,
34 EGG_DESKTOP_FILE_TYPE_DIRECTORY
35 } EggDesktopFileType;
37 EggDesktopFile *egg_desktop_file_new (const char *desktop_file_path,
38 GError **error);
40 EggDesktopFile *egg_desktop_file_new_from_data_dirs (const char *desktop_file_path,
41 GError **error);
42 EggDesktopFile *egg_desktop_file_new_from_dirs (const char *desktop_file_path,
43 const char **search_dirs,
44 GError **error);
45 EggDesktopFile *egg_desktop_file_new_from_key_file (GKeyFile *key_file,
46 const char *source,
47 GError **error);
49 void egg_desktop_file_free (EggDesktopFile *desktop_file);
51 const char *egg_desktop_file_get_source (EggDesktopFile *desktop_file);
53 EggDesktopFileType egg_desktop_file_get_desktop_file_type (EggDesktopFile *desktop_file);
55 const char *egg_desktop_file_get_name (EggDesktopFile *desktop_file);
56 const char *egg_desktop_file_get_icon (EggDesktopFile *desktop_file);
58 gboolean egg_desktop_file_can_launch (EggDesktopFile *desktop_file,
59 const char *desktop_environment);
61 gboolean egg_desktop_file_accepts_documents (EggDesktopFile *desktop_file);
62 gboolean egg_desktop_file_accepts_multiple (EggDesktopFile *desktop_file);
63 gboolean egg_desktop_file_accepts_uris (EggDesktopFile *desktop_file);
65 char *egg_desktop_file_parse_exec (EggDesktopFile *desktop_file,
66 GSList *documents,
67 GError **error);
69 gboolean egg_desktop_file_launch (EggDesktopFile *desktop_file,
70 GSList *documents,
71 GError **error,
72 ...) G_GNUC_NULL_TERMINATED;
74 typedef enum {
75 EGG_DESKTOP_FILE_LAUNCH_CLEARENV = 1,
76 EGG_DESKTOP_FILE_LAUNCH_PUTENV,
77 EGG_DESKTOP_FILE_LAUNCH_SCREEN,
78 EGG_DESKTOP_FILE_LAUNCH_WORKSPACE,
79 EGG_DESKTOP_FILE_LAUNCH_DIRECTORY,
80 EGG_DESKTOP_FILE_LAUNCH_TIME,
81 EGG_DESKTOP_FILE_LAUNCH_FLAGS,
82 EGG_DESKTOP_FILE_LAUNCH_SETUP_FUNC,
83 EGG_DESKTOP_FILE_LAUNCH_RETURN_PID,
84 EGG_DESKTOP_FILE_LAUNCH_RETURN_STDIN_PIPE,
85 EGG_DESKTOP_FILE_LAUNCH_RETURN_STDOUT_PIPE,
86 EGG_DESKTOP_FILE_LAUNCH_RETURN_STDERR_PIPE,
87 EGG_DESKTOP_FILE_LAUNCH_RETURN_STARTUP_ID
88 } EggDesktopFileLaunchOption;
90 /* Standard Keys */
91 #define EGG_DESKTOP_FILE_GROUP "Desktop Entry"
93 #define EGG_DESKTOP_FILE_KEY_TYPE "Type"
94 #define EGG_DESKTOP_FILE_KEY_VERSION "Version"
95 #define EGG_DESKTOP_FILE_KEY_NAME "Name"
96 #define EGG_DESKTOP_FILE_KEY_GENERIC_NAME "GenericName"
97 #define EGG_DESKTOP_FILE_KEY_NO_DISPLAY "NoDisplay"
98 #define EGG_DESKTOP_FILE_KEY_COMMENT "Comment"
99 #define EGG_DESKTOP_FILE_KEY_ICON "Icon"
100 #define EGG_DESKTOP_FILE_KEY_HIDDEN "Hidden"
101 #define EGG_DESKTOP_FILE_KEY_ONLY_SHOW_IN "OnlyShowIn"
102 #define EGG_DESKTOP_FILE_KEY_NOT_SHOW_IN "NotShowIn"
103 #define EGG_DESKTOP_FILE_KEY_TRY_EXEC "TryExec"
104 #define EGG_DESKTOP_FILE_KEY_EXEC "Exec"
105 #define EGG_DESKTOP_FILE_KEY_PATH "Path"
106 #define EGG_DESKTOP_FILE_KEY_TERMINAL "Terminal"
107 #define EGG_DESKTOP_FILE_KEY_MIME_TYPE "MimeType"
108 #define EGG_DESKTOP_FILE_KEY_CATEGORIES "Categories"
109 #define EGG_DESKTOP_FILE_KEY_STARTUP_NOTIFY "StartupNotify"
110 #define EGG_DESKTOP_FILE_KEY_STARTUP_WM_CLASS "StartupWMClass"
111 #define EGG_DESKTOP_FILE_KEY_URL "URL"
113 /* Accessors */
114 gboolean egg_desktop_file_has_key (EggDesktopFile *desktop_file,
115 const char *key,
116 GError **error);
117 char *egg_desktop_file_get_string (EggDesktopFile *desktop_file,
118 const char *key,
119 GError **error) G_GNUC_MALLOC;
120 char *egg_desktop_file_get_locale_string (EggDesktopFile *desktop_file,
121 const char *key,
122 const char *locale,
123 GError **error) G_GNUC_MALLOC;
124 gboolean egg_desktop_file_get_boolean (EggDesktopFile *desktop_file,
125 const char *key,
126 GError **error);
127 double egg_desktop_file_get_numeric (EggDesktopFile *desktop_file,
128 const char *key,
129 GError **error);
130 char **egg_desktop_file_get_string_list (EggDesktopFile *desktop_file,
131 const char *key,
132 gsize *length,
133 GError **error) G_GNUC_MALLOC;
134 char **egg_desktop_file_get_locale_string_list (EggDesktopFile *desktop_file,
135 const char *key,
136 const char *locale,
137 gsize *length,
138 GError **error) G_GNUC_MALLOC;
141 /* Errors */
142 #define EGG_DESKTOP_FILE_ERROR egg_desktop_file_error_quark()
144 GQuark egg_desktop_file_error_quark (void);
146 typedef enum {
147 EGG_DESKTOP_FILE_ERROR_INVALID,
148 EGG_DESKTOP_FILE_ERROR_NOT_LAUNCHABLE,
149 EGG_DESKTOP_FILE_ERROR_UNRECOGNIZED_OPTION
150 } EggDesktopFileError;
152 /* Global application desktop file */
153 void egg_set_desktop_file (const char *desktop_file_path);
154 EggDesktopFile *egg_get_desktop_file (void);
157 G_END_DECLS
159 #endif /* __EGG_DESKTOP_FILE_H__ */