Skip to content

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:

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

def add_supports_type(self, 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

def can_delete(self) -> bool

Obtains the information whether the AppInfo can be deleted. See AppInfo.delete.

can_remove_supports_type

def can_remove_supports_type(self) -> bool

Checks if a supported content type can be removed from an application.

delete

def delete(self) -> bool

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

def dup(self) -> AppInfo

Creates a duplicate of a AppInfo.

equal

def equal(self, appinfo2: AppInfo) -> bool

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:

get_commandline

def get_commandline(self) -> str | None

Gets the commandline with which the application will be started.

get_description

def get_description(self) -> str | None

Gets a human-readable description of an installed application.

get_display_name

def get_display_name(self) -> str

Gets the display name of the application. The display name is often more descriptive to the user than the name itself.

get_executable

def get_executable(self) -> 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 AppInfo.launch and related functions, rather than spawning the return value from this function.

get_icon

def get_icon(self) -> Icon | None

Gets the icon for the application.

get_id

def get_id(self) -> 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

def get_name(self) -> str

Gets the installed name of the application.

get_supported_types

def get_supported_types(self) -> list[str] | None

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

def launch(self, files: list[File] | None = ..., context: AppLaunchContext | 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 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 of File objects
  • context — the launch context

launch_uris

def 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

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 context
  • cancellable — a Cancellable
  • callback — a AsyncReadyCallback to call when the request is done

launch_uris_finish

def launch_uris_finish(self, result: AsyncResult) -> bool

Finishes a AppInfo.launch_uris_async operation.

Parameters:

  • result — the async result

remove_supports_type

def remove_supports_type(self, content_type: str) -> bool

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

def set_as_default_for_type(self, 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

def set_as_last_used_for_type(self, 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 AppInfo.get_recommended_for_type, regardless of the default application for that content type.

Parameters:

  • content_type — the content type.

should_show

def should_show(self) -> bool

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

supports_files

def supports_files(self) -> bool

Checks if the application accepts files as arguments.

supports_uris

def supports_uris(self) -> bool

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 use
  • application_name — the application name, or NULL to use commandline
  • flags — flags that can specify details of the created AppInfo

get_all

@staticmethod
def 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 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

@staticmethod
def get_all_for_type(content_type: str) -> list[AppInfo]

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 a AppInfo for

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 a AppInfo for
  • must_support_uris — if TRUE, the AppInfo is 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 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

get_default_for_type_finish

@staticmethod
def get_default_for_type_finish(result: AsyncResult) -> AppInfo

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

@staticmethod
def 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

@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 — a Cancellable
  • callback — a AsyncReadyCallback to call when the request is done

get_default_for_uri_scheme_finish

@staticmethod
def get_default_for_uri_scheme_finish(result: AsyncResult) -> AppInfo

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

@staticmethod
def get_fallback_for_type(content_type: str) -> list[AppInfo]

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 a AppInfo for
@staticmethod
def get_recommended_for_type(content_type: str) -> list[AppInfo]

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 a AppInfo for

launch_default_for_uri

@staticmethod
def launch_default_for_uri(uri: str, context: AppLaunchContext | 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 AppInfo.launch_default_for_uri_async instead.

Parameters:

  • uri — the uri to show
  • context — 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 show
  • context — optional launch context
  • cancellable — a Cancellable
  • callback — a AsyncReadyCallback to call when the request is done

launch_default_for_uri_finish

@staticmethod
def launch_default_for_uri_finish(result: AsyncResult) -> bool

Finishes an asynchronous launch-default-for-uri operation.

Parameters:

  • result — the async result

reset_type_associations

@staticmethod
def reset_type_associations(content_type: str) -> None

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

def do_add_supports_type(self, 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

def do_can_delete(self) -> bool

Obtains the information whether the AppInfo can be deleted. See AppInfo.delete.

do_can_remove_supports_type

def do_can_remove_supports_type(self) -> bool

Checks if a supported content type can be removed from an application.

do_do_delete

def do_do_delete(self) -> bool

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

def do_dup(self) -> AppInfo

Creates a duplicate of a AppInfo.

do_equal

def do_equal(self, appinfo2: AppInfo) -> bool

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:

do_get_commandline

def do_get_commandline(self) -> str | None

Gets the commandline with which the application will be started.

do_get_description

def do_get_description(self) -> str | None

Gets a human-readable description of an installed application.

do_get_display_name

def do_get_display_name(self) -> str

Gets the display name of the application. The display name is often more descriptive to the user than the name itself.

do_get_executable

def do_get_executable(self) -> 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 AppInfo.launch and related functions, rather than spawning the return value from this function.

do_get_icon

def do_get_icon(self) -> Icon | None

Gets the icon for the application.

do_get_id

def do_get_id(self) -> 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

def do_get_name(self) -> str

Gets the installed name of the application.

do_get_supported_types

def do_get_supported_types(self) -> list[str] | None

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

def do_launch(self, files: list[File] | None = ..., context: AppLaunchContext | 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 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 of File objects
  • context — 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 context
  • cancellable — a Cancellable
  • callback — a AsyncReadyCallback to call when the request is done

do_launch_uris_finish

def do_launch_uris_finish(self, result: AsyncResult) -> bool

Finishes a AppInfo.launch_uris_async operation.

Parameters:

  • result — the async result

do_remove_supports_type

def do_remove_supports_type(self, content_type: str) -> bool

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

def do_set_as_default_for_type(self, 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

def do_set_as_last_used_for_type(self, 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 AppInfo.get_recommended_for_type, regardless of the default application for that content type.

Parameters:

  • content_type — the content type.

do_should_show

def do_should_show(self) -> bool

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

do_supports_files

def do_supports_files(self) -> bool

Checks if the application accepts files as arguments.

do_supports_uris

def do_supports_uris(self) -> bool

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