AppInfo
- class AppInfo(*args, **kwargs)
Implementations: DesktopAppInfo
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 get_path
) when using launch
even if the application requested an URI and not a POSIX path. For example
for a 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 File
constructors (since GVfs
implements the GVfs extension point). As such, if the application
needs to examine the URI, it needs to use get_uri
or similar on File
. In other words, an application cannot
assume that the URI passed to e.g. new_for_commandline_arg
is equal to the result of 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
- class AppInfo
- add_supports_type(content_type: str) bool
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() bool
Obtains the information whether the
AppInfo
can be deleted. Seedelete()
.Added in version 2.20.
- can_remove_supports_type() bool
Checks if a supported content type can be removed from an application.
- create_from_commandline(commandline: str, application_name: str | None, flags: AppInfoCreateFlags) 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 thecommandline
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 commandline to use
application_name – the application name, or
None
to usecommandline
flags – flags that can specify details of the created
AppInfo
- delete() bool
Tries to delete a
AppInfo
.On some platforms, there may be a difference between user-defined
AppInfo
which can be deleted, and system-wide ones which cannot. Seecan_delete()
.Added in version 2.20.
- equal(appinfo2: AppInfo) bool
Checks if two
AppInfo
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 second
AppInfo
.
- get_all() list[AppInfo]
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 ofOnlyShowIn
orNotShowIn
. Seeshould_show()
. The returned list does not include applications which have theHidden
key set.
- get_all_for_type(content_type: str) list[AppInfo]
Gets a list of all
AppInfo
for a given content type, including the recommended and fallbackAppInfo
. Seeget_recommended_for_type()
andget_fallback_for_type()
.- Parameters:
content_type – the content type to find a
AppInfo
for
- get_commandline() str | None
Gets the commandline with which the application will be started.
Added in version 2.20.
- get_default_for_type(content_type: str, must_support_uris: bool) AppInfo | None
Gets the default
AppInfo
for a given content type.
- get_default_for_type_async(content_type: str, must_support_uris: bool, cancellable: Cancellable | None = None, callback: Callable[[...], None] | None = None, *user_data: Any) None
Asynchronously gets the default
AppInfo
for a given content type.Added in version 2.74.
- Parameters:
content_type – the content type to find a
AppInfo
formust_support_uris – if
True
, theAppInfo
is expected to support URIscancellable – optional
Cancellable
object,None
to ignorecallback – a
AsyncReadyCallback
to call when the request is doneuser_data – data to pass to
callback
- get_default_for_type_finish(result: AsyncResult) AppInfo
Finishes a default
AppInfo
lookup started byget_default_for_type_async()
.If no
AppInfo
is found, thenerror
will be set toNOT_FOUND
.Added in version 2.74.
- Parameters:
result – a
AsyncResult
- get_default_for_uri_scheme(uri_scheme: str) AppInfo | None
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.
- get_default_for_uri_scheme_async(uri_scheme: str, cancellable: Cancellable | None = None, callback: Callable[[...], None] | None = None, *user_data: Any) 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”.
Added in version 2.74.
- Parameters:
uri_scheme – a string containing a URI scheme.
cancellable – optional
Cancellable
object,None
to ignorecallback – a
AsyncReadyCallback
to call when the request is doneuser_data – data to pass to
callback
- get_default_for_uri_scheme_finish(result: AsyncResult) AppInfo
Finishes a default
AppInfo
lookup started byget_default_for_uri_scheme_async()
.If no
AppInfo
is found, thenerror
will be set toNOT_FOUND
.Added in version 2.74.
- Parameters:
result – a
AsyncResult
- get_display_name() str
Gets the display name of the application. The display name is often more descriptive to the user than the name itself.
Added in version 2.24.
- get_executable() str
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
launch()
and related functions, rather than spawning the return value from this function.
- get_fallback_for_type(content_type: str) list[AppInfo]
Gets a list of fallback
AppInfo
for a given content type, i.e. those applications which claim to support the given content type by MIME type subclassing and not directly.Added in version 2.28.
- Parameters:
content_type – the content type to find a
AppInfo
for
- get_id() str | None
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
None
, depending on how theappinfo
has been constructed.
- get_recommended_for_type(content_type: str) list[AppInfo]
Gets a list of recommended
AppInfo
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 whichset_as_last_used_for_type()
has been called.Added in version 2.28.
- Parameters:
content_type – the content type to find a
AppInfo
for
- get_supported_types() list[str]
Retrieves the list of content types that
app_info
claims to support. If this information is not provided by the environment, this function will returnNone
. This function does not take in consideration associations added withadd_supports_type()
, but only those exported directly by the application.Added in version 2.34.
- launch(files: list[File] | None = None, context: AppLaunchContext | None = None) bool
Launches the application. Passes
files
to the launched application as arguments, using the optionalcontext
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
None
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
launch_uris()
instead.The launched application inherits the environment of the launching process, but it can be modified with
setenv()
andunsetenv()
.On UNIX, this function sets the
GIO_LAUNCHED_DESKTOP_FILE
environment variable with the path of the launched desktop file andGIO_LAUNCHED_DESKTOP_FILE_PID
to the process id of the launched process. This can be used to ignoreGIO_LAUNCHED_DESKTOP_FILE
, should it be inherited by further processes. TheDISPLAY
,XDG_ACTIVATION_TOKEN
andDESKTOP_STARTUP_ID
environment variables are also set, based on information provided incontext
.- Parameters:
context – a
AppLaunchContext
orNone
- launch_default_for_uri(uri: str, context: AppLaunchContext | None = None) bool
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
launch_default_for_uri_async()
instead.- Parameters:
uri – the uri to show
context – an optional
AppLaunchContext
- launch_default_for_uri_async(uri: str, context: AppLaunchContext | None = None, cancellable: Cancellable | None = None, callback: Callable[[...], None] | None = None, *user_data: Any) None
Async version of
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.
Added in version 2.50.
- Parameters:
uri – the uri to show
context – an optional
AppLaunchContext
cancellable – a
Cancellable
callback – a
AsyncReadyCallback
to call when the request is doneuser_data – data to pass to
callback
- launch_default_for_uri_finish(result: AsyncResult) bool
Finishes an asynchronous launch-default-for-uri operation.
Added in version 2.50.
- Parameters:
result – a
AsyncResult
- launch_uris(uris: list[str] | None = None, context: AppLaunchContext | None = None) bool
Launches the application. This passes the
uris
to the launched application as arguments, using the optionalcontext
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
None
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
containing URIs to launch.context – a
AppLaunchContext
orNone
- launch_uris_async(uris: list[str] | None = None, context: AppLaunchContext | None = None, cancellable: Cancellable | None = None, callback: Callable[[...], None] | None = None, *user_data: Any) None
Async version of
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 forlaunch_default_for_uri_async()
.Added in version 2.60.
- Parameters:
uris – a
List
containing URIs to launch.context – a
AppLaunchContext
orNone
cancellable – a
Cancellable
callback – a
AsyncReadyCallback
to call when the request is doneuser_data – data to pass to
callback
- launch_uris_finish(result: AsyncResult) bool
Finishes a
launch_uris_async()
operation.Added in version 2.60.
- Parameters:
result – a
AsyncResult
- remove_supports_type(content_type: str) bool
Removes a supported type from an application, if possible.
- Parameters:
content_type – a string.
- reset_type_associations(content_type: str) None
Removes all changes to the type associations done by
set_as_default_for_type()
,set_as_default_for_extension()
,add_supports_type()
orremove_supports_type()
.Added in version 2.20.
- Parameters:
content_type – a content type
- set_as_default_for_extension(extension: str) 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(content_type: str) bool
Sets the application as the default handler for a given type.
- Parameters:
content_type – the content type.
- set_as_last_used_for_type(content_type: str) bool
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
get_recommended_for_type()
, regardless of the default application for that content type.- Parameters:
content_type – the content type.
Virtual Methods
- class AppInfo
- do_add_supports_type(content_type: str) bool
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() bool
Obtains the information whether the
AppInfo
can be deleted. Seedelete()
.Added in version 2.20.
- do_can_remove_supports_type() bool
Checks if a supported content type can be removed from an application.
- do_do_delete() bool
Tries to delete a
AppInfo
.On some platforms, there may be a difference between user-defined
AppInfo
which can be deleted, and system-wide ones which cannot. Seecan_delete()
.Added in version 2.20.
- do_equal(appinfo2: AppInfo) bool
Checks if two
AppInfo
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 second
AppInfo
.
- do_get_commandline() str | None
Gets the commandline with which the application will be started.
Added in version 2.20.
- do_get_display_name() str
Gets the display name of the application. The display name is often more descriptive to the user than the name itself.
Added in version 2.24.
- do_get_executable() str
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
launch()
and related functions, rather than spawning the return value from this function.
- do_get_id() str | None
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
None
, depending on how theappinfo
has been constructed.
- do_get_supported_types() list[str]
Retrieves the list of content types that
app_info
claims to support. If this information is not provided by the environment, this function will returnNone
. This function does not take in consideration associations added withadd_supports_type()
, but only those exported directly by the application.Added in version 2.34.
- do_launch(files: list[File] | None = None, context: AppLaunchContext | None = None) bool
Launches the application. Passes
files
to the launched application as arguments, using the optionalcontext
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
None
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
launch_uris()
instead.The launched application inherits the environment of the launching process, but it can be modified with
setenv()
andunsetenv()
.On UNIX, this function sets the
GIO_LAUNCHED_DESKTOP_FILE
environment variable with the path of the launched desktop file andGIO_LAUNCHED_DESKTOP_FILE_PID
to the process id of the launched process. This can be used to ignoreGIO_LAUNCHED_DESKTOP_FILE
, should it be inherited by further processes. TheDISPLAY
,XDG_ACTIVATION_TOKEN
andDESKTOP_STARTUP_ID
environment variables are also set, based on information provided incontext
.- Parameters:
context – a
AppLaunchContext
orNone
- do_launch_uris(uris: list[str] | None = None, context: AppLaunchContext | None = None) bool
Launches the application. This passes the
uris
to the launched application as arguments, using the optionalcontext
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
None
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
containing URIs to launch.context – a
AppLaunchContext
orNone
- do_launch_uris_async(uris: list[str] | None = None, context: AppLaunchContext | None = None, cancellable: Cancellable | None = None, callback: Callable[[...], None] | None = None, *user_data: Any) None
Async version of
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 forlaunch_default_for_uri_async()
.Added in version 2.60.
- Parameters:
uris – a
List
containing URIs to launch.context – a
AppLaunchContext
orNone
cancellable – a
Cancellable
callback – a
AsyncReadyCallback
to call when the request is doneuser_data – data to pass to
callback
- do_launch_uris_finish(result: AsyncResult) bool
Finishes a
launch_uris_async()
operation.Added in version 2.60.
- Parameters:
result – a
AsyncResult
- do_remove_supports_type(content_type: str) bool
Removes a supported type from an application, if possible.
- Parameters:
content_type – a string.
- do_set_as_default_for_extension(extension: str) 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(content_type: str) bool
Sets the application as the default handler for a given type.
- Parameters:
content_type – the content type.
- do_set_as_last_used_for_type(content_type: str) bool
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
get_recommended_for_type()
, regardless of the default application for that content type.- Parameters:
content_type – the content type.