## Desktop file based GAppInfo

Desktop file based GAppInfo — 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);
    void                g_desktop_app_info_set_desktop_env  (const char *desktop_env);
                        GDesktopAppInfoLookup;
    #define             G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME
    GAppInfo *          g_desktop_app_info_lookup_get_default_for_uri_scheme
                                                            (GDesktopAppInfoLookup *lookup,
                                                             const char *uri_scheme);

## Object Hierarchy

      GObject
       +----GDesktopAppInfo

      GInterface
       +----GDesktopAppInfoLookup

## Prerequisites

GDesktopAppInfoLookup requires GObject.

## Implemented Interfaces

GDesktopAppInfo implements GAppInfo.

## 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_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()` to evaluate the `OnlyShowIn` and `NotShowIn` desktop entry fields.

The Desktop Menu specification recognizes the following:

GNOME
KDE
ROX
XFCE
Old

Should be called only once; subsequent calls are ignored.

`desktop_env` : | a string specifying what desktop this is

### GDesktopAppInfoLookup

    typedef struct _GDesktopAppInfoLookup GDesktopAppInfoLookup;

Interface that is used by backends to associate default handlers with URI schemes.

### G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME

    #define G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME "gio-desktop-app-info-lookup"

Extension point for default handler to URI association. See Extending GIO.

### g_desktop_app_info_lookup_get_default_for_uri_scheme ()

    GAppInfo *          g_desktop_app_info_lookup_get_default_for_uri_scheme
                                                            (GDesktopAppInfoLookup *lookup,
                                                             const char *uri_scheme);

Gets the default application for launching applications using this URI scheme for a particular GDesktopAppInfoLookup implementation.

The GDesktopAppInfoLookup interface and this function is used to implement `g_app_info_get_default_for_uri_scheme()` backends in a GIO module. There is no reason for applications to use it directly. Applications should use `g_app_info_get_default_for_uri_scheme()`.

`lookup` : | a GDesktopAppInfoLookup
`uri_scheme` : | a string containing a URI scheme.
Returns : | GAppInfo for given `uri_scheme` or `NULL` on error.