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__
24
#include <glib-object.h>
28
typedef struct EggDesktopFile EggDesktopFile;
30
GType egg_desktop_file_get_type (void) G_GNUC_CONST;
31
#define EGG_TYPE_DESKTOP_FILE (egg_desktop_file_get_type())
32
#define EGG_DESKTOP_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_DESKTOP_FILE, EggDesktopFile))
35
EGG_DESKTOP_FILE_TYPE_UNRECOGNIZED,
37
EGG_DESKTOP_FILE_TYPE_APPLICATION,
38
EGG_DESKTOP_FILE_TYPE_LINK,
39
EGG_DESKTOP_FILE_TYPE_DIRECTORY,
42
EggDesktopFile *egg_desktop_file_new (const char *desktop_file_path,
45
EggDesktopFile *egg_desktop_file_new_from_data_dirs (const char *desktop_file_path,
47
EggDesktopFile *egg_desktop_file_new_from_key_file (GKeyFile *desktop,
50
EggDesktopFile *egg_desktop_file_copy (const EggDesktopFile *desktop_file);
52
void egg_desktop_file_free (EggDesktopFile *desktop_file);
54
GKeyFile *egg_desktop_file_get_key_file (EggDesktopFile *desktop_file);
56
const char *egg_desktop_file_get_source (EggDesktopFile *desktop_file);
58
EggDesktopFileType egg_desktop_file_get_desktop_file_type (EggDesktopFile *desktop_file);
60
const char *egg_desktop_file_get_name (EggDesktopFile *desktop_file);
61
const char *egg_desktop_file_get_icon (EggDesktopFile *desktop_file);
63
gboolean egg_desktop_file_can_launch (EggDesktopFile *desktop_file,
64
const char *desktop_environment);
66
gboolean egg_desktop_file_accepts_documents (EggDesktopFile *desktop_file);
67
gboolean egg_desktop_file_accepts_multiple (EggDesktopFile *desktop_file);
68
gboolean egg_desktop_file_accepts_uris (EggDesktopFile *desktop_file);
70
char *egg_desktop_file_parse_exec (EggDesktopFile *desktop_file,
74
gboolean egg_desktop_file_launch (EggDesktopFile *desktop_file,
77
...) G_GNUC_NULL_TERMINATED;
80
EGG_DESKTOP_FILE_LAUNCH_CLEARENV = 1,
81
EGG_DESKTOP_FILE_LAUNCH_PUTENV,
82
EGG_DESKTOP_FILE_LAUNCH_SCREEN,
83
EGG_DESKTOP_FILE_LAUNCH_WORKSPACE,
84
EGG_DESKTOP_FILE_LAUNCH_DIRECTORY,
85
EGG_DESKTOP_FILE_LAUNCH_TIME,
86
EGG_DESKTOP_FILE_LAUNCH_FLAGS,
87
EGG_DESKTOP_FILE_LAUNCH_SETUP_FUNC,
88
EGG_DESKTOP_FILE_LAUNCH_RETURN_PID,
89
EGG_DESKTOP_FILE_LAUNCH_RETURN_STDIN_PIPE,
90
EGG_DESKTOP_FILE_LAUNCH_RETURN_STDOUT_PIPE,
91
EGG_DESKTOP_FILE_LAUNCH_RETURN_STDERR_PIPE,
92
EGG_DESKTOP_FILE_LAUNCH_RETURN_STARTUP_ID
93
} EggDesktopFileLaunchOption;
96
#define EGG_DESKTOP_FILE_GROUP "Desktop Entry"
98
#define EGG_DESKTOP_FILE_KEY_TYPE "Type"
99
#define EGG_DESKTOP_FILE_KEY_VERSION "Version"
100
#define EGG_DESKTOP_FILE_KEY_NAME "Name"
101
#define EGG_DESKTOP_FILE_KEY_GENERIC_NAME "GenericName"
102
#define EGG_DESKTOP_FILE_KEY_NO_DISPLAY "NoDisplay"
103
#define EGG_DESKTOP_FILE_KEY_COMMENT "Comment"
104
#define EGG_DESKTOP_FILE_KEY_ICON "Icon"
105
#define EGG_DESKTOP_FILE_KEY_HIDDEN "Hidden"
106
#define EGG_DESKTOP_FILE_KEY_ONLY_SHOW_IN "OnlyShowIn"
107
#define EGG_DESKTOP_FILE_KEY_NOT_SHOW_IN "NotShowIn"
108
#define EGG_DESKTOP_FILE_KEY_TRY_EXEC "TryExec"
109
#define EGG_DESKTOP_FILE_KEY_EXEC "Exec"
110
#define EGG_DESKTOP_FILE_KEY_PATH "Path"
111
#define EGG_DESKTOP_FILE_KEY_TERMINAL "Terminal"
112
#define EGG_DESKTOP_FILE_KEY_MIME_TYPE "MimeType"
113
#define EGG_DESKTOP_FILE_KEY_CATEGORIES "Categories"
114
#define EGG_DESKTOP_FILE_KEY_STARTUP_NOTIFY "StartupNotify"
115
#define EGG_DESKTOP_FILE_KEY_STARTUP_WM_CLASS "StartupWMClass"
116
#define EGG_DESKTOP_FILE_KEY_URL "URL"
119
#define EGG_DESKTOP_FILE_ERROR egg_desktop_file_error_quark()
121
GQuark egg_desktop_file_error_quark (void);
124
EGG_DESKTOP_FILE_ERROR_INVALID,
125
EGG_DESKTOP_FILE_ERROR_NOT_LAUNCHABLE,
126
EGG_DESKTOP_FILE_ERROR_UNRECOGNIZED_OPTION,
127
} EggDesktopFileError;
129
/* Global application desktop file */
130
void egg_set_desktop_file (const char *desktop_file_path);
131
EggDesktopFile *egg_get_desktop_file (void);
136
#endif /* __EGG_DESKTOP_FILE_H__ */