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__
27 typedef struct EggDesktopFile EggDesktopFile
;
30 EGG_DESKTOP_FILE_TYPE_UNRECOGNIZED
,
32 EGG_DESKTOP_FILE_TYPE_APPLICATION
,
33 EGG_DESKTOP_FILE_TYPE_LINK
,
34 EGG_DESKTOP_FILE_TYPE_DIRECTORY
37 EggDesktopFile
*egg_desktop_file_new (const char *desktop_file_path
,
40 EggDesktopFile
*egg_desktop_file_new_from_data_dirs (const char *desktop_file_path
,
42 EggDesktopFile
*egg_desktop_file_new_from_dirs (const char *desktop_file_path
,
43 const char **search_dirs
,
45 EggDesktopFile
*egg_desktop_file_new_from_key_file (GKeyFile
*key_file
,
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
,
69 gboolean
egg_desktop_file_launch (EggDesktopFile
*desktop_file
,
72 ...) G_GNUC_NULL_TERMINATED
;
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
;
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"
114 gboolean
egg_desktop_file_has_key (EggDesktopFile
*desktop_file
,
117 char *egg_desktop_file_get_string (EggDesktopFile
*desktop_file
,
119 GError
**error
) G_GNUC_MALLOC
;
120 char *egg_desktop_file_get_locale_string (EggDesktopFile
*desktop_file
,
123 GError
**error
) G_GNUC_MALLOC
;
124 gboolean
egg_desktop_file_get_boolean (EggDesktopFile
*desktop_file
,
127 double egg_desktop_file_get_numeric (EggDesktopFile
*desktop_file
,
130 char **egg_desktop_file_get_string_list (EggDesktopFile
*desktop_file
,
133 GError
**error
) G_GNUC_MALLOC
;
134 char **egg_desktop_file_get_locale_string_list (EggDesktopFile
*desktop_file
,
138 GError
**error
) G_GNUC_MALLOC
;
142 #define EGG_DESKTOP_FILE_ERROR egg_desktop_file_error_quark()
144 GQuark
egg_desktop_file_error_quark (void);
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);
159 #endif /* __EGG_DESKTOP_FILE_H__ */