Gio.AppInfo¶
interface
Information about an installed application and methods to launch it (with file arguments).
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 File.get_path) when using AppInfo.launch
even if the application requested an URI and not a POSIX path. For example
for a desktop-file based application with the following Exec key:
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 File constructors (since GVfs
implements the GVfs extension point). As such, if the application
needs to examine the URI, it needs to use File.get_uri
or similar on File. In other words, an application cannot
assume that the URI passed to e.g. File.new_for_commandline_arg
is equal to the result of File.get_uri. The following snippet
illustrates this:
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.
Methods¶
add_supports_type¶
Adds a content type to the application information to indicate the application is capable of opening files with the given content type.
Parameters:
content_type— a string.
can_delete¶
Obtains the information whether the AppInfo can be deleted.
See AppInfo.delete.
can_remove_supports_type¶
Checks if a supported content type can be removed from an application.
delete¶
Tries to delete a AppInfo.
On some platforms, there may be a difference between user-defined
AppInfos which can be deleted, and system-wide ones which cannot.
See AppInfo.can_delete.
dup¶
Creates a duplicate of a AppInfo.
equal¶
Checks if two AppInfos are equal.
Note that the check may not compare each individual field, and only does an identity check. In case detecting changes in the contents is needed, program code must additionally compare relevant fields.
Parameters:
appinfo2— the secondAppInfo.
get_commandline¶
Gets the commandline with which the application will be started.
get_description¶
Gets a human-readable description of an installed application.
get_display_name¶
Gets the display name of the application. The display name is often more descriptive to the user than the name itself.
get_executable¶
Gets the executable’s name for the installed application.
This is intended to be used for debugging or labelling what program is going
to be run. To launch the executable, use AppInfo.launch and related
functions, rather than spawning the return value from this function.
get_icon¶
Gets the icon for the application.
get_id¶
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.
get_name¶
Gets the installed name of the application.
get_supported_types¶
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
AppInfo.add_supports_type, but only those exported directly by
the application.
launch¶
Launches the application. Passes files to the launched application
as arguments, using the optional 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
AppInfo.launch_uris instead.
The launched application inherits the environment of the launching
process, but it can be modified with AppLaunchContext.setenv
and AppLaunchContext.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,
XDG_ACTIVATION_TOKEN and DESKTOP_STARTUP_ID environment
variables are also set, based on information provided in context.
Parameters:
files— a list ofFileobjectscontext— the launch context
launch_uris¶
Launches the application. This passes the uris to the launched application
as arguments, using the optional context to get information
about the details of the launcher (like what screen it is on).
On error, error will be set accordingly. If the application only supports
one URI per invocation as part of their command-line, multiple instances
of the application will be spawned.
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.
Parameters:
uris— a list of URIs to launch.context— the launch context
launch_uris_async¶
def launch_uris_async(self, uris: list[str] | None = ..., context: AppLaunchContext | None = ..., cancellable: Cancellable | None = ..., callback: Callable[[AppInfo | None, AsyncResult], None] | None = ...) -> None
Async version of AppInfo.launch_uris.
The callback is invoked immediately after the application launch, but it
waits for activation in case of D-Bus–activated applications and also provides
extended error information for sandboxed applications, see notes for
AppInfo.launch_default_for_uri_async.
Parameters:
uris— a list of URIs to launch.context— the launch contextcancellable— aCancellablecallback— aAsyncReadyCallbackto call when the request is done
launch_uris_finish¶
Finishes a AppInfo.launch_uris_async operation.
Parameters:
result— the async result
remove_supports_type¶
Removes a supported type from an application, if possible.
Parameters:
content_type— a string.
set_as_default_for_extension¶
def set_as_default_for_extension(self, extension: str | bytes | os.PathLike[str] | os.PathLike[bytes]) -> bool
Sets the application as the default handler for the given file extension.
Parameters:
extension— a string containing the file extension (without the dot).
set_as_default_for_type¶
Sets the application as the default handler for a given type.
Parameters:
content_type— the content type.
set_as_last_used_for_type¶
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
AppInfo.get_recommended_for_type, regardless of the default
application for that content type.
Parameters:
content_type— the content type.
should_show¶
Checks if the application info should be shown in menus that list available applications.
supports_files¶
Checks if the application accepts files as arguments.
supports_uris¶
Checks if the application supports reading files and directories from URIs.
Static functions¶
create_from_commandline¶
@staticmethod
def create_from_commandline(commandline: str | bytes | os.PathLike[str] | os.PathLike[bytes], application_name: str | None, flags: AppInfoCreateFlags | int) -> AppInfo
Creates a new AppInfo 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.
Parameters:
commandline— the command line to useapplication_name— the application name, orNULLto usecommandlineflags— flags that can specify details of the createdAppInfo
get_all¶
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 AppInfo.should_show.
The returned list does not include applications which have the
Hidden key
set.
get_all_for_type¶
Gets a list of all AppInfos for a given content type,
including the recommended and fallback AppInfos. See
AppInfo.get_recommended_for_type and
AppInfo.get_fallback_for_type.
Parameters:
content_type— the content type to find aAppInfofor
get_default_for_type¶
@staticmethod
def get_default_for_type(content_type: str, must_support_uris: bool) -> AppInfo | None
Gets the default AppInfo for a given content type.
Parameters:
content_type— the content type to find aAppInfoformust_support_uris— ifTRUE, theAppInfois expected to support URIs
get_default_for_type_async¶
@staticmethod
def get_default_for_type_async(content_type: str, must_support_uris: bool, cancellable: Cancellable | None = ..., callback: AsyncReadyCallback | None = ...) -> None
Asynchronously gets the default AppInfo for a given content
type.
Parameters:
content_type— the content type to find aAppInfoformust_support_uris— ifTRUE, theAppInfois expected to support URIscancellable— aCancellablecallback— aAsyncReadyCallbackto call when the request is done
get_default_for_type_finish¶
Finishes a default AppInfo lookup started by
AppInfo.get_default_for_type_async.
If no #AppInfo is found, then error will be set to
IOErrorEnum.NOT_FOUND.
Parameters:
result— the async result
get_default_for_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 :.
For example, http, ftp or sip.
Parameters:
uri_scheme— a string containing a URI scheme.
get_default_for_uri_scheme_async¶
@staticmethod
def get_default_for_uri_scheme_async(uri_scheme: str, cancellable: Cancellable | None = ..., callback: AsyncReadyCallback | None = ...) -> None
Asynchronously 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.
Parameters:
uri_scheme— a string containing a URI scheme.cancellable— aCancellablecallback— aAsyncReadyCallbackto call when the request is done
get_default_for_uri_scheme_finish¶
Finishes a default AppInfo lookup started by
AppInfo.get_default_for_uri_scheme_async.
If no AppInfo is found, then error will be set to
IOErrorEnum.NOT_FOUND.
Parameters:
result— the async result
get_fallback_for_type¶
Gets a list of fallback AppInfos for a given content type, i.e.
those applications which claim to support the given content type by MIME
type subclassing and not directly.
Parameters:
content_type— the content type to find aAppInfofor
get_recommended_for_type¶
Gets a list of recommended AppInfos 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 AppInfo.set_as_last_used_for_type has
been called.
Parameters:
content_type— the content type to find aAppInfofor
launch_default_for_uri¶
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.
The D-Bus–activated applications don’t have to be started if your application
terminates too soon after this function. To prevent this, use
AppInfo.launch_default_for_uri_async instead.
Parameters:
uri— the uri to showcontext— optional launch context
launch_default_for_uri_async¶
@staticmethod
def launch_default_for_uri_async(uri: str, context: AppLaunchContext | None = ..., cancellable: Cancellable | None = ..., callback: AsyncReadyCallback | None = ...) -> None
Async version of AppInfo.launch_default_for_uri.
This version is useful if you are interested in receiving error information in the case where the application is sandboxed and the portal may present an application chooser dialog to the user.
This is also useful if you want to be sure that the D-Bus–activated applications are really started before termination and if you are interested in receiving error information from their activation.
Parameters:
uri— the uri to showcontext— optional launch contextcancellable— aCancellablecallback— aAsyncReadyCallbackto call when the request is done
launch_default_for_uri_finish¶
Finishes an asynchronous launch-default-for-uri operation.
Parameters:
result— the async result
reset_type_associations¶
Removes all changes to the type associations done by
AppInfo.set_as_default_for_type,
AppInfo.set_as_default_for_extension,
AppInfo.add_supports_type or
AppInfo.remove_supports_type.
Parameters:
content_type— a content type
Virtual methods¶
do_add_supports_type¶
Adds a content type to the application information to indicate the application is capable of opening files with the given content type.
Parameters:
content_type— a string.
do_can_delete¶
Obtains the information whether the AppInfo can be deleted.
See AppInfo.delete.
do_can_remove_supports_type¶
Checks if a supported content type can be removed from an application.
do_do_delete¶
Tries to delete a AppInfo.
On some platforms, there may be a difference between user-defined
AppInfos which can be deleted, and system-wide ones which cannot.
See AppInfo.can_delete.
do_dup¶
Creates a duplicate of a AppInfo.
do_equal¶
Checks if two AppInfos are equal.
Note that the check may not compare each individual field, and only does an identity check. In case detecting changes in the contents is needed, program code must additionally compare relevant fields.
Parameters:
appinfo2— the secondAppInfo.
do_get_commandline¶
Gets the commandline with which the application will be started.
do_get_description¶
Gets a human-readable description of an installed application.
do_get_display_name¶
Gets the display name of the application. The display name is often more descriptive to the user than the name itself.
do_get_executable¶
Gets the executable’s name for the installed application.
This is intended to be used for debugging or labelling what program is going
to be run. To launch the executable, use AppInfo.launch and related
functions, rather than spawning the return value from this function.
do_get_icon¶
Gets the icon for the application.
do_get_id¶
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.
do_get_name¶
Gets the installed name of the application.
do_get_supported_types¶
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
AppInfo.add_supports_type, but only those exported directly by
the application.
do_launch¶
Launches the application. Passes files to the launched application
as arguments, using the optional 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
AppInfo.launch_uris instead.
The launched application inherits the environment of the launching
process, but it can be modified with AppLaunchContext.setenv
and AppLaunchContext.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,
XDG_ACTIVATION_TOKEN and DESKTOP_STARTUP_ID environment
variables are also set, based on information provided in context.
Parameters:
files— a list ofFileobjectscontext— the launch context
do_launch_uris¶
def do_launch_uris(self, uris: list[str] | None = ..., context: AppLaunchContext | None = ...) -> bool
Launches the application. This passes the uris to the launched application
as arguments, using the optional context to get information
about the details of the launcher (like what screen it is on).
On error, error will be set accordingly. If the application only supports
one URI per invocation as part of their command-line, multiple instances
of the application will be spawned.
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.
Parameters:
uris— a list of URIs to launch.context— the launch context
do_launch_uris_async¶
def do_launch_uris_async(self, uris: list[str] | None = ..., context: AppLaunchContext | None = ..., cancellable: Cancellable | None = ..., callback: Callable[[AppInfo | None, AsyncResult], None] | None = ...) -> None
Async version of AppInfo.launch_uris.
The callback is invoked immediately after the application launch, but it
waits for activation in case of D-Bus–activated applications and also provides
extended error information for sandboxed applications, see notes for
AppInfo.launch_default_for_uri_async.
Parameters:
uris— a list of URIs to launch.context— the launch contextcancellable— aCancellablecallback— aAsyncReadyCallbackto call when the request is done
do_launch_uris_finish¶
Finishes a AppInfo.launch_uris_async operation.
Parameters:
result— the async result
do_remove_supports_type¶
Removes a supported type from an application, if possible.
Parameters:
content_type— a string.
do_set_as_default_for_extension¶
def do_set_as_default_for_extension(self, extension: str | bytes | os.PathLike[str] | os.PathLike[bytes]) -> bool
Sets the application as the default handler for the given file extension.
Parameters:
extension— a string containing the file extension (without the dot).
do_set_as_default_for_type¶
Sets the application as the default handler for a given type.
Parameters:
content_type— the content type.
do_set_as_last_used_for_type¶
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
AppInfo.get_recommended_for_type, regardless of the default
application for that content type.
Parameters:
content_type— the content type.
do_should_show¶
Checks if the application info should be shown in menus that list available applications.
do_supports_files¶
Checks if the application accepts files as arguments.
do_supports_uris¶
Checks if the application supports reading files and directories from URIs.