Top |
GAppInfo and GAppLaunchContext are used for describing and launching applications installed on the system.
As of GLib 2.20, URIs will always be converted to POSIX paths
(using g_file_get_path()
) when using g_app_info_launch()
even if
the application requested an URI and not a POSIX path. For example
for an desktop-file based application with Exec key totem
%U
and a single URI, sftp://foo/file.avi
, then
/home/user/.gvfs/sftp on foo/file.avi
will be passed. This will
only work if a set of suitable GIO extensions (such as gvfs 2.26
compiled with FUSE support), is available and operational; if this
is not the case, the URI will be passed unmodified to the application.
Some URIs, such as mailto:
, of course cannot be mapped to a POSIX
path (in gvfs there's no FUSE mount for it); such URIs will be
passed unmodified to the application.
Specifically for gvfs 2.26 and later, the POSIX URI will be mapped
back to the GIO URI in the GFile constructors (since gvfs
implements the GVfs extension point). As such, if the application
needs to examine the URI, it needs to use g_file_get_uri()
or
similar on GFile. In other words, an application cannot assume
that the URI passed to e.g. g_file_new_for_commandline_arg()
is
equal to the result of g_file_get_uri()
. The following snippet
illustrates this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
GFile *f; char *uri; file = g_file_new_for_commandline_arg (uri_from_commandline); uri = g_file_get_uri (file); strcmp (uri, uri_from_commandline) == 0; g_free (uri); if (g_file_has_uri_scheme (file, "cdda")) { // do something special with uri } g_object_unref (file); |
This code will work when both cdda://sr0/Track 1.wav
and
/home/user/.gvfs/cdda on sr0/Track 1.wav
is passed to the
application. It should be noted that it's generally not safe
for applications to rely on the format of a particular URIs.
Different launcher applications (e.g. file managers) may have
different ideas of what a given URI means.
GAppInfo * g_app_info_create_from_commandline (const char *commandline
,const char *application_name
,GAppInfoCreateFlags flags
,GError **error
);
Creates a new GAppInfo from the given information.
Note that for commandline
, the quoting rules of the Exec key of the
freedesktop.org Desktop Entry Specification
are applied. For example, if the commandline
contains
percent-encoded URIs, the percent-character must be doubled in order to prevent it from
being swallowed by Exec key unquoting. See the specification for exact quoting rules.
gboolean g_app_info_equal (GAppInfo *appinfo1
,GAppInfo *appinfo2
);
Checks if two GAppInfos are equal.
const char *
g_app_info_get_id (GAppInfo *appinfo
);
Gets the ID of an application. An id is a string that identifies the application. The exact format of the id is platform dependent. For instance, on Unix this is the desktop file id from the xdg menu specification.
Note that the returned ID may be NULL
, depending on how
the appinfo
has been constructed.
const char *
g_app_info_get_name (GAppInfo *appinfo
);
Gets the installed name of the application.
const char *
g_app_info_get_display_name (GAppInfo *appinfo
);
Gets the display name of the application. The display name is often more descriptive to the user than the name itself.
the display name of the application for appinfo
, or the name if
no display name is available.
Since: 2.24
const char *
g_app_info_get_description (GAppInfo *appinfo
);
Gets a human-readable description of an installed application.
const char *
g_app_info_get_executable (GAppInfo *appinfo
);
Gets the executable's name for the installed application.
const char *
g_app_info_get_commandline (GAppInfo *appinfo
);
Gets the commandline with which the application will be started.
a string containing the appinfo
's commandline,
or NULL
if this information is not available
Since: 2.20
GIcon *
g_app_info_get_icon (GAppInfo *appinfo
);
Gets the icon for the application.
gboolean g_app_info_launch (GAppInfo *appinfo
,GList *files
,GAppLaunchContext *launch_context
,GError **error
);
Launches the application. Passes files
to the launched application
as arguments, using the optional launch_context
to get information
about the details of the launcher (like what screen it is on).
On error, error
will be set accordingly.
To launch the application without arguments pass a NULL
files
list.
Note that even if the launch is successful the application launched can fail to start if it runs into problems during startup. There is no way to detect this.
Some URIs can be changed when passed through a GFile (for instance
unsupported URIs with strange formats like mailto:), so if you have
a textual URI you want to pass in as argument, consider using
g_app_info_launch_uris()
instead.
The launched application inherits the environment of the launching
process, but it can be modified with g_app_launch_context_setenv()
and g_app_launch_context_unsetenv()
.
On UNIX, this function sets the GIO_LAUNCHED_DESKTOP_FILE
environment variable with the path of the launched desktop file and
GIO_LAUNCHED_DESKTOP_FILE_PID
to the process id of the launched
process. This can be used to ignore GIO_LAUNCHED_DESKTOP_FILE
,
should it be inherited by further processes. The DISPLAY
and
DESKTOP_STARTUP_ID
environment variables are also set, based
on information provided in launch_context
.
gboolean
g_app_info_supports_files (GAppInfo *appinfo
);
Checks if the application accepts files as arguments.
gboolean
g_app_info_supports_uris (GAppInfo *appinfo
);
Checks if the application supports reading files and directories from URIs.
gboolean g_app_info_launch_uris (GAppInfo *appinfo
,GList *uris
,GAppLaunchContext *launch_context
,GError **error
);
Launches the application. This passes the uris
to the launched application
as arguments, using the optional launch_context
to get information
about the details of the launcher (like what screen it is on).
On error, error
will be set accordingly.
To launch the application without arguments pass a NULL
uris
list.
Note that even if the launch is successful the application launched can fail to start if it runs into problems during startup. There is no way to detect this.
appinfo |
a GAppInfo |
|
uris |
a GList containing URIs to launch. |
[allow-none][element-type utf8] |
launch_context |
a GAppLaunchContext or |
[allow-none] |
error |
a GError |
gboolean
g_app_info_should_show (GAppInfo *appinfo
);
Checks if the application info should be shown in menus that list available applications.
gboolean
g_app_info_can_delete (GAppInfo *appinfo
);
Obtains the information whether the GAppInfo can be deleted.
See g_app_info_delete()
.
Since: 2.20
gboolean
g_app_info_delete (GAppInfo *appinfo
);
Tries to delete a GAppInfo.
On some platforms, there may be a difference between user-defined
GAppInfos which can be deleted, and system-wide ones which cannot.
See g_app_info_can_delete()
.
Virtual: do_delete
Since: 2.20
void
g_app_info_reset_type_associations (const char *content_type
);
Removes all changes to the type associations done by
g_app_info_set_as_default_for_type()
,
g_app_info_set_as_default_for_extension()
,
g_app_info_add_supports_type()
or
g_app_info_remove_supports_type()
.
Since: 2.20
gboolean g_app_info_set_as_default_for_type (GAppInfo *appinfo
,const char *content_type
,GError **error
);
Sets the application as the default handler for a given type.
gboolean g_app_info_set_as_default_for_extension (GAppInfo *appinfo
,const char *extension
,GError **error
);
Sets the application as the default handler for the given file extension.
gboolean g_app_info_set_as_last_used_for_type (GAppInfo *appinfo
,const char *content_type
,GError **error
);
Sets the application as the last used application for a given type.
This will make the application appear as first in the list returned
by g_app_info_get_recommended_for_type()
, regardless of the default
application for that content type.
gboolean g_app_info_add_supports_type (GAppInfo *appinfo
,const char *content_type
,GError **error
);
Adds a content type to the application information to indicate the application is capable of opening files with the given content type.
gboolean
g_app_info_can_remove_supports_type (GAppInfo *appinfo
);
Checks if a supported content type can be removed from an application.
gboolean g_app_info_remove_supports_type (GAppInfo *appinfo
,const char *content_type
,GError **error
);
Removes a supported type from an application, if possible.
const char **
g_app_info_get_supported_types (GAppInfo *appinfo
);
Retrieves the list of content types that app_info
claims to support.
If this information is not provided by the environment, this function
will return NULL
.
This function does not take in consideration associations added with
g_app_info_add_supports_type()
, but only those exported directly by
the application.
Since: 2.34
GList *
g_app_info_get_all (void
);
Gets a list of all of the applications currently registered on this system.
For desktop files, this includes applications that have
NoDisplay=true
set or are excluded from display by means
of OnlyShowIn
or NotShowIn
. See g_app_info_should_show()
.
The returned list does not include applications which have
the Hidden
key set.
GList *
g_app_info_get_all_for_type (const char *content_type
);
Gets a list of all GAppInfos for a given content type,
including the recommended and fallback GAppInfos. See
g_app_info_get_recommended_for_type()
and
g_app_info_get_fallback_for_type()
.
GAppInfo * g_app_info_get_default_for_type (const char *content_type
,gboolean must_support_uris
);
Gets the default GAppInfo for a given content type.
GAppInfo *
g_app_info_get_default_for_uri_scheme (const char *uri_scheme
);
Gets the default application for handling URIs with the given URI scheme. A URI scheme is the initial part of the URI, up to but not including the ':', e.g. "http", "ftp" or "sip".
GList *
g_app_info_get_fallback_for_type (const gchar *content_type
);
Gets a list of fallback GAppInfos for a given content type, i.e. those applications which claim to support the given content type by MIME type subclassing and not directly.
GList of GAppInfos
for given content_type
or NULL
on error.
[element-type GAppInfo][transfer full]
Since: 2.28
GList *
g_app_info_get_recommended_for_type (const gchar *content_type
);
Gets a list of recommended GAppInfos for a given content type, i.e.
those applications which claim to support the given content type exactly,
and not by MIME type subclassing.
Note that the first application of the list is the last used one, i.e.
the last one for which g_app_info_set_as_last_used_for_type()
has been
called.
GList of GAppInfos
for given content_type
or NULL
on error.
[element-type GAppInfo][transfer full]
Since: 2.28
gboolean g_app_info_launch_default_for_uri (const char *uri
,GAppLaunchContext *launch_context
,GError **error
);
Utility function that launches the default application registered to handle the specified uri. Synchronous I/O is done on the uri to detect the type of the file if required.
uri |
the uri to show |
|
launch_context |
an optional GAppLaunchContext. |
[allow-none] |
error |
a GError. |
void g_app_launch_context_setenv (GAppLaunchContext *context
,const char *variable
,const char *value
);
Arranges for variable
to be set to value
in the child's
environment when context
is used to launch an application.
context |
||
variable |
the environment variable to set |
|
value |
the value for to set the variable to. |
Since: 2.32
void g_app_launch_context_unsetenv (GAppLaunchContext *context
,const char *variable
);
Arranges for variable
to be unset in the child's environment
when context
is used to launch an application.
Since: 2.32
char **
g_app_launch_context_get_environment (GAppLaunchContext *context
);
Gets the complete environment variable list to be passed to
the child process when context
is used to launch an application.
This is a NULL
-terminated array of strings, where each string has
the form KEY=VALUE
.
Since: 2.32
char * g_app_launch_context_get_display (GAppLaunchContext *context
,GAppInfo *info
,GList *files
);
Gets the display string for the context
. This is used to ensure new
applications are started on the same display as the launching
application, by setting the DISPLAY
environment variable.
char * g_app_launch_context_get_startup_notify_id (GAppLaunchContext *context
,GAppInfo *info
,GList *files
);
Initiates startup notification for the application and returns the
DESKTOP_STARTUP_ID
for the launched operation, if supported.
Startup notification IDs are defined in the [FreeDesktop.Org Startup Notifications standard](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt").
void g_app_launch_context_launch_failed (GAppLaunchContext *context
,const char *startup_notify_id
);
Called when an application has failed to launch, so that it can cancel
the application startup notification started in g_app_launch_context_get_startup_notify_id()
.
context |
||
startup_notify_id |
the startup notification id that was returned by |
GAppLaunchContext *
g_app_launch_context_new (void
);
Creates a new application launch context. This is not normally used, instead you instantiate a subclass of this, such as GdkAppLaunchContext.
typedef struct _GAppInfo GAppInfo;
Information about an installed application and methods to launch it (with file arguments).
struct GAppInfoIface { GTypeInterface g_iface; /* Virtual Table */ GAppInfo * (* dup) (GAppInfo *appinfo); gboolean (* equal) (GAppInfo *appinfo1, GAppInfo *appinfo2); const char * (* get_id) (GAppInfo *appinfo); const char * (* get_name) (GAppInfo *appinfo); const char * (* get_description) (GAppInfo *appinfo); const char * (* get_executable) (GAppInfo *appinfo); GIcon * (* get_icon) (GAppInfo *appinfo); gboolean (* launch) (GAppInfo *appinfo, GList *files, GAppLaunchContext *launch_context, GError **error); gboolean (* supports_uris) (GAppInfo *appinfo); gboolean (* supports_files) (GAppInfo *appinfo); gboolean (* launch_uris) (GAppInfo *appinfo, GList *uris, GAppLaunchContext *launch_context, GError **error); gboolean (* should_show) (GAppInfo *appinfo); /* For changing associations */ gboolean (* set_as_default_for_type) (GAppInfo *appinfo, const char *content_type, GError **error); gboolean (* set_as_default_for_extension) (GAppInfo *appinfo, const char *extension, GError **error); gboolean (* add_supports_type) (GAppInfo *appinfo, const char *content_type, GError **error); gboolean (* can_remove_supports_type) (GAppInfo *appinfo); gboolean (* remove_supports_type) (GAppInfo *appinfo, const char *content_type, GError **error); gboolean (* can_delete) (GAppInfo *appinfo); gboolean (* do_delete) (GAppInfo *appinfo); const char * (* get_commandline) (GAppInfo *appinfo); const char * (* get_display_name) (GAppInfo *appinfo); gboolean (* set_as_last_used_for_type) (GAppInfo *appinfo, const char *content_type, GError **error); const char ** (* get_supported_types) (GAppInfo *appinfo); };
Application Information interface, for operating system portability.
Copies a GAppInfo. |
||
Checks two GAppInfos for equality. |
||
Gets a string identifier for a GAppInfo. |
||
Gets the name of the application for a GAppInfo. |
||
Gets a short description for the application described by the GAppInfo. |
||
Gets the executable name for the GAppInfo. |
||
Launches an application specified by the GAppInfo. |
||
Indicates whether the application specified supports launching URIs. |
||
Indicates whether the application specified accepts filename arguments. |
||
Launches an application with a list of URIs. |
||
Returns whether an application should be shown (e.g. when getting a list of installed applications). <ulink url="http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt"> <citetitle>FreeDesktop.Org Startup Notification Specification</citetitle></ulink>. |
||
Sets an application as default for a given content type. |
||
Sets an application as default for a given file extension. |
||
Adds to the GAppInfo information about supported file types. |
||
Checks for support for removing supported file types from a GAppInfo. |
||
Removes a supported application type from a GAppInfo. |
||
Checks if a GAppInfo can be deleted. Since 2.20 |
||
Deletes a GAppInfo. Since 2.20 |
||
Gets the commandline for the GAppInfo. Since 2.20 |
||
Gets the display name for the GAppInfo. Since 2.24 |
||
Sets the application as the last used. See |
||
Retrieves the list of content types that |
“launch-failed”
signalvoid user_function (GAppLaunchContext *context, gchar *startup_notify_id, gpointer user_data)
The ::launch-failed signal is emitted when a GAppInfo launch fails. The startup notification id is provided, so that the launcher can cancel the startup notification.
context |
the object emitting the signal |
|
startup_notify_id |
the startup notification id for the failed launch |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 2.36
“launched”
signalvoid user_function (GAppLaunchContext *context, GAppInfo *info, GVariant *platform_data, gpointer user_data)
The ::launched signal is emitted when a GAppInfo is successfully
launched. The platform_data
is an GVariant dictionary mapping
strings to variants (ie a{sv}), which contains additional,
platform-specific data about this launch. On UNIX, at least the
"pid" and "startup-notification-id" keys will be present.
context |
the object emitting the signal |
|
info |
the GAppInfo that was just launched |
|
platform_data |
additional platform-specific data for this launch |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 2.36