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 the following Exec key:

Exec=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. See delete.

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 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 use

  • application_name – the application name, or NULL to use commandline

  • 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’s which can be deleted, and system-wide ones which cannot. See can_delete.

Added in version 2.20.

dup() AppInfo

Creates a duplicate of a AppInfo.

equal(appinfo2: AppInfo) bool

Checks if two AppInfo’s 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 <https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-nodisplay>`_ set or are excluded from display by means of `OnlyShowIn <https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-onlyshowin>`_ or `NotShowIn <https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-notshowin>`_. See should_show.

The returned list does not include applications which have the `Hidden key <https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-hidden>`_ set.

get_all_for_type(content_type: str) list[AppInfo]

Gets a list of all AppInfo’s for a given content type, including the recommended and fallback AppInfo’s. See get_recommended_for_type and get_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.

Parameters:
  • content_type – the content type to find a AppInfo for

  • must_support_uris – if TRUE, the AppInfo is expected to support URIs

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 for

  • must_support_uris – if TRUE, the AppInfo is expected to support URIs

  • cancellable – a Cancellable

  • callback – a AsyncReadyCallback to call when the request is done

  • user_data – data to pass to callback

get_default_for_type_finish(result: AsyncResult) AppInfo

Finishes a default AppInfo lookup started by get_default_for_type_async.

If no #:obj:AppInfo is found, then error will be set to NOT_FOUND.

Added in version 2.74.

Parameters:

result – the async result

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 :. For example, 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 – a Cancellable

  • callback – a AsyncReadyCallback to call when the request is done

  • user_data – data to pass to callback

get_default_for_uri_scheme_finish(result: AsyncResult) AppInfo

Finishes a default AppInfo lookup started by get_default_for_uri_scheme_async.

If no AppInfo is found, then error will be set to NOT_FOUND.

Added in version 2.74.

Parameters:

result – the async result

get_description() str | None

Gets a human-readable description of an installed application.

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’s 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_icon() Icon | None

Gets the icon for the application.

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 NULL, depending on how the appinfo has been constructed.

get_name() str

Gets the installed name of the application.

Gets a list of recommended AppInfo’s 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 set_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 return NULL.

This function does not take in consideration associations added with add_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 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 launch_uris instead.

The launched application inherits the environment of the launching process, but it can be modified with setenv and 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 of File objects

  • context – the launch context

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 – optional launch context

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 – optional launch context

  • cancellable – a Cancellable

  • callback – a AsyncReadyCallback to call when the request is done

  • user_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 – the async result

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 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(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 for launch_default_for_uri_async.

Added in version 2.60.

Parameters:
  • uris – a list of URIs to launch.

  • context – the launch context

  • cancellable – a Cancellable

  • callback – a AsyncReadyCallback to call when the request is done

  • user_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 – the async result

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 or remove_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.

should_show() bool

Checks if the application info should be shown in menus that list available applications.

supports_files() bool

Checks if the application accepts files as arguments.

supports_uris() bool

Checks if the application supports reading files and directories from URIs.

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. See delete.

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

The type of the None singleton.

Added in version 2.20.

do_dup() AppInfo

Creates a duplicate of a AppInfo.

do_equal(appinfo2: AppInfo) bool

Checks if two AppInfo’s 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_description() str | None

Gets a human-readable description of an installed application.

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_icon() Icon | None

Gets the icon for the application.

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 NULL, depending on how the appinfo has been constructed.

do_get_name() str

Gets the installed name of the application.

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 return NULL.

This function does not take in consideration associations added with add_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 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 launch_uris instead.

The launched application inherits the environment of the launching process, but it can be modified with setenv and 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 of File objects

  • context – the launch context

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 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(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 for launch_default_for_uri_async.

Added in version 2.60.

Parameters:
  • uris – a list of URIs to launch.

  • context – the launch context

  • cancellable – a Cancellable

  • callback – a AsyncReadyCallback to call when the request is done

  • user_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 – the async result

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.

do_should_show() bool

Checks if the application info should be shown in menus that list available applications.

do_supports_files() bool

Checks if the application accepts files as arguments.

do_supports_uris() bool

Checks if the application supports reading files and directories from URIs.