GDesktopAppInfo

GDesktopAppInfo — Application information from desktop files

Synopsis

#include <gio/gdesktopappinfo.h>

                    GDesktopAppInfo;
GDesktopAppInfo *   g_desktop_app_info_new_from_filename
                                                        (const char *filename);
GDesktopAppInfo *   g_desktop_app_info_new_from_keyfile (GKeyFile *key_file);
GDesktopAppInfo *   g_desktop_app_info_new              (const char *desktop_id);
const char *        g_desktop_app_info_get_filename     (GDesktopAppInfo *info);
gboolean            g_desktop_app_info_get_is_hidden    (GDesktopAppInfo *info);
gboolean            g_desktop_app_info_get_nodisplay    (GDesktopAppInfo *info);
gboolean            g_desktop_app_info_get_show_in      (GDesktopAppInfo *info,
                                                         const gchar *desktop_env);
const char *        g_desktop_app_info_get_generic_name (GDesktopAppInfo *info);
const char *        g_desktop_app_info_get_categories   (GDesktopAppInfo *info);
const char * const * g_desktop_app_info_get_keywords    (GDesktopAppInfo *info);
const char *        g_desktop_app_info_get_startup_wm_class
                                                        (GDesktopAppInfo *info);
void                g_desktop_app_info_set_desktop_env  (const char *desktop_env);
void                (*GDesktopAppLaunchCallback)        (GDesktopAppInfo *appinfo,
                                                         GPid pid,
                                                         gpointer user_data);
gboolean            g_desktop_app_info_launch_uris_as_manager
                                                        (GDesktopAppInfo *appinfo,
                                                         GList *uris,
                                                         GAppLaunchContext *launch_context,
                                                         GSpawnFlags spawn_flags,
                                                         GSpawnChildSetupFunc user_setup,
                                                         gpointer user_setup_data,
                                                         GDesktopAppLaunchCallback pid_callback,
                                                         gpointer pid_callback_data,
                                                         GError **error);

Object Hierarchy

  GObject
   +----GDesktopAppInfo

Implemented Interfaces

GDesktopAppInfo implements GAppInfo.

Properties

  "filename"                 gchar*                : Read / Write / Construct Only

Description

GDesktopAppInfo is an implementation of GAppInfo based on desktop files.

Note that <gio/gdesktopappinfo.h> belongs to the UNIX-specific GIO interfaces, thus you have to use the gio-unix-2.0.pc pkg-config file when using it.

Details

GDesktopAppInfo

typedef struct _GDesktopAppInfo GDesktopAppInfo;

Information about an installed application from a desktop file.


g_desktop_app_info_new_from_filename ()

GDesktopAppInfo *   g_desktop_app_info_new_from_filename
                                                        (const char *filename);

Creates a new GDesktopAppInfo.

filename :

the path of a desktop file, in the GLib filename encoding

Returns :

a new GDesktopAppInfo or NULL on error.

g_desktop_app_info_new_from_keyfile ()

GDesktopAppInfo *   g_desktop_app_info_new_from_keyfile (GKeyFile *key_file);

Creates a new GDesktopAppInfo.

key_file :

an opened GKeyFile

Returns :

a new GDesktopAppInfo or NULL on error.

Since 2.18


g_desktop_app_info_new ()

GDesktopAppInfo *   g_desktop_app_info_new              (const char *desktop_id);

Creates a new GDesktopAppInfo based on a desktop file id.

A desktop file id is the basename of the desktop file, including the .desktop extension. GIO is looking for a desktop file with this name in the applications subdirectories of the XDG data directories (i.e. the directories specified in the XDG_DATA_HOME and XDG_DATA_DIRS environment variables). GIO also supports the prefix-to-subdirectory mapping that is described in the Menu Spec (i.e. a desktop id of kde-foo.desktop will match /usr/share/applications/kde/foo.desktop).

desktop_id :

the desktop file id

Returns :

a new GDesktopAppInfo, or NULL if no desktop file with that id

g_desktop_app_info_get_filename ()

const char *        g_desktop_app_info_get_filename     (GDesktopAppInfo *info);

When info was created from a known filename, return it. In some situations such as the GDesktopAppInfo returned from g_desktop_app_info_new_from_keyfile(), this function will return NULL.

info :

a GDesktopAppInfo

Returns :

The full path to the file for info, or NULL if not known.

Since 2.24


g_desktop_app_info_get_is_hidden ()

gboolean            g_desktop_app_info_get_is_hidden    (GDesktopAppInfo *info);

A desktop file is hidden if the Hidden key in it is set to True.

info :

a GDesktopAppInfo.

Returns :

TRUE if hidden, FALSE otherwise.

g_desktop_app_info_get_nodisplay ()

gboolean            g_desktop_app_info_get_nodisplay    (GDesktopAppInfo *info);

Gets the value of the NoDisplay key, which helps determine if the application info should be shown in menus. See G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY and g_app_info_should_show().

info :

a GDesktopAppInfo

Returns :

The value of the NoDisplay key

Since 2.30


g_desktop_app_info_get_show_in ()

gboolean            g_desktop_app_info_get_show_in      (GDesktopAppInfo *info,
                                                         const gchar *desktop_env);

Checks if the application info should be shown in menus that list available applications for a specific name of the desktop, based on the OnlyShowIn and NotShowIn keys.

If desktop_env is NULL, then the name of the desktop set with g_desktop_app_info_set_desktop_env() is used.

Note that g_app_info_should_show() for info will include this check (with NULL for desktop_env) as well as additional checks.

info :

a GDesktopAppInfo

desktop_env :

a string specifying a desktop name

Returns :

TRUE if the info should be shown in desktop_env according to the OnlyShowIn and NotShowIn keys, FALSE otherwise.

Since 2.30


g_desktop_app_info_get_generic_name ()

const char *        g_desktop_app_info_get_generic_name (GDesktopAppInfo *info);

Gets the generic name from the destkop file.

info :

a GDesktopAppInfo

Returns :

The value of the GenericName key

g_desktop_app_info_get_categories ()

const char *        g_desktop_app_info_get_categories   (GDesktopAppInfo *info);

Gets the categories from the desktop file.

info :

a GDesktopAppInfo

Returns :

The unparsed Categories key from the desktop file; i.e. no attempt is made to split it by ';' or validate it.

g_desktop_app_info_get_keywords ()

const char * const * g_desktop_app_info_get_keywords    (GDesktopAppInfo *info);

Gets the keywords from the desktop file.

info :

a GDesktopAppInfo

Returns :

The value of the Keywords key. [transfer none]

Since 2.32


g_desktop_app_info_get_startup_wm_class ()

const char *        g_desktop_app_info_get_startup_wm_class
                                                        (GDesktopAppInfo *info);

Retrieves the StartupWMClass field from app_info. This represents the WM_CLASS property of the main window of the application, if launched through app_info.

app_info :

a GDesktopAppInfo that supports startup notify

Returns :

the startup WM class, or NULL if none is set in the desktop file. [transfer none]

Since 2.34


g_desktop_app_info_set_desktop_env ()

void                g_desktop_app_info_set_desktop_env  (const char *desktop_env);

Sets the name of the desktop that the application is running in. This is used by g_app_info_should_show() and g_desktop_app_info_get_show_in() to evaluate the OnlyShowIn and NotShowIn desktop entry fields.

The Desktop Menu specification recognizes the following:

GNOME
KDE
ROX
XFCE
LXDE
Unity
Old

Should be called only once; subsequent calls are ignored.

desktop_env :

a string specifying what desktop this is

GDesktopAppLaunchCallback ()

void                (*GDesktopAppLaunchCallback)        (GDesktopAppInfo *appinfo,
                                                         GPid pid,
                                                         gpointer user_data);

During invocation, g_desktop_app_info_launch_uris_as_manager() may create one or more child processes. This callback is invoked once for each, providing the process ID.

appinfo :

a GDesktopAppInfo

pid :

Process identifier

user_data :

User data

g_desktop_app_info_launch_uris_as_manager ()

gboolean            g_desktop_app_info_launch_uris_as_manager
                                                        (GDesktopAppInfo *appinfo,
                                                         GList *uris,
                                                         GAppLaunchContext *launch_context,
                                                         GSpawnFlags spawn_flags,
                                                         GSpawnChildSetupFunc user_setup,
                                                         gpointer user_setup_data,
                                                         GDesktopAppLaunchCallback pid_callback,
                                                         gpointer pid_callback_data,
                                                         GError **error);

This function performs the equivalent of g_app_info_launch_uris(), but is intended primarily for operating system components that launch applications. Ordinary applications should use g_app_info_launch_uris().

In contrast to g_app_info_launch_uris(), all processes created will always be run directly as children as if by the UNIX fork()/exec() calls.

This guarantee allows additional control over the exact environment of the child processes, which is provided via a setup function user_setup, as well as the process identifier of each child process via pid_callback. See g_spawn_async() for more information about the semantics of the user_setup function.

appinfo :

a GDesktopAppInfo

uris :

List of URIs. [element-type utf8]

launch_context :

a GAppLaunchContext

spawn_flags :

GSpawnFlags, used for each process

user_setup :

a GSpawnChildSetupFunc, used once for each process. [scope call]

user_setup_data :

User data for user_setup. [closure user_setup]

pid_callback :

Callback for child processes. [scope call]

pid_callback_data :

User data for callback. [closure pid_callback]

error :

return location for a GError, or NULL

Returns :

TRUE on successful launch, FALSE otherwise.

Property Details

The "filename" property

  "filename"                 gchar*                : Read / Write / Construct Only

The origin filename of this GDesktopAppInfo

Default value: NULL