Interface AppInfo
- All Superinterfaces:
Proxy
- All Known Implementing Classes:
AppInfo.AppInfoImpl
,DesktopAppInfo
,OsxAppInfo
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.getPath()
) when using launch(org.gnome.glib.List<org.gnome.gio.File>, org.gnome.gio.AppLaunchContext)
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.getUri()
or similar on File
. In other words, an application cannot
assume that the URI passed to e.g. File.newForCommandlineArg(java.lang.String)
is equal to the result of File.getUri()
. 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.
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic class
Application Information interface, for operating system portability.static class
The AppInfoImpl type represents a native instance of the AppInfo interface. -
Method Summary
Modifier and TypeMethodDescriptiondefault boolean
addSupportsType
(String contentType) Adds a content type to the application information to indicate the application is capable of opening files with the given content type.default boolean
Obtains the information whether theAppInfo
can be deleted.default boolean
Checks if a supported content type can be removed from an application.static AppInfo
createFromCommandline
(String commandline, @Nullable String applicationName, Set<AppInfoCreateFlags> flags) Creates a newAppInfo
from the given information.static AppInfo
createFromCommandline
(String commandline, @Nullable String applicationName, AppInfoCreateFlags... flags) Creates a newAppInfo
from the given information.default boolean
delete()
Tries to delete aAppInfo
.default AppInfo
dup()
Creates a duplicate of aAppInfo
.default boolean
Checks if twoAppInfo
s are equal.getAll()
Gets a list of all of the applications currently registered on this system.getAllForType
(String contentType) default String
Gets the commandline with which the application will be started.static AppInfo
getDefaultForType
(String contentType, boolean mustSupportUris) Gets the defaultAppInfo
for a given content type.static void
getDefaultForTypeAsync
(String contentType, boolean mustSupportUris, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Asynchronously gets the defaultAppInfo
for a given content type.static AppInfo
getDefaultForTypeFinish
(AsyncResult result) Finishes a defaultAppInfo
lookup started bygetDefaultForTypeAsync(java.lang.String, boolean, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)
.static AppInfo
getDefaultForUriScheme
(String uriScheme) Gets the default application for handling URIs with the given URI scheme.static void
getDefaultForUriSchemeAsync
(String uriScheme, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Asynchronously gets the default application for handling URIs with the given URI scheme.static AppInfo
Finishes a defaultAppInfo
lookup started bygetDefaultForUriSchemeAsync(java.lang.String, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)
.default String
Gets a human-readable description of an installed application.default String
Gets the display name of the application.default String
Gets the executable’s name for the installed application.getFallbackForType
(String contentType) Gets a list of fallbackAppInfo
s for a given content type, i.e.default Icon
getIcon()
Gets the icon for the application.default String
getId()
Gets the ID of an application.default String
getName()
Gets the installed name of the application.getRecommendedForType
(String contentType) Gets a list of recommendedAppInfo
s for a given content type, i.e.default String[]
Retrieves the list of content types thatappInfo
claims to support.static Type
getType()
Get the GType of the AppInfo classdefault boolean
launch
(@Nullable List<File> files, @Nullable AppLaunchContext context) Launches the application.static boolean
launchDefaultForUri
(String uri, @Nullable AppLaunchContext context) Utility function that launches the default application registered to handle the specified uri.static void
launchDefaultForUriAsync
(String uri, @Nullable AppLaunchContext context, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Async version oflaunchDefaultForUri(java.lang.String, org.gnome.gio.AppLaunchContext)
.static boolean
launchDefaultForUriFinish
(AsyncResult result) Finishes an asynchronous launch-default-for-uri operation.default boolean
launchUris
(@Nullable List<String> uris, @Nullable AppLaunchContext context) Launches the application.default void
launchUrisAsync
(@Nullable List<String> uris, @Nullable AppLaunchContext context, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) default boolean
launchUrisFinish
(AsyncResult result) default boolean
removeSupportsType
(String contentType) Removes a supported type from an application, if possible.static void
resetTypeAssociations
(String contentType) Removes all changes to the type associations done bysetAsDefaultForType(java.lang.String)
,setAsDefaultForExtension(java.lang.String)
,addSupportsType(java.lang.String)
orremoveSupportsType(java.lang.String)
.default boolean
setAsDefaultForExtension
(String extension) Sets the application as the default handler for the given file extension.default boolean
setAsDefaultForType
(String contentType) Sets the application as the default handler for a given type.default boolean
setAsLastUsedForType
(String contentType) Sets the application as the last used application for a given type.default boolean
Checks if the application info should be shown in menus that list available applications.default boolean
Checks if the application accepts files as arguments.default boolean
Checks if the application supports reading files and directories from URIs.
-
Method Details
-
getType
-
createFromCommandline
static AppInfo createFromCommandline(String commandline, @Nullable @Nullable String applicationName, Set<AppInfoCreateFlags> flags) throws GErrorException Creates a newAppInfo
from the given information.Note that for
commandline
, the quoting rules of theExec
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 byExec
key unquoting. See the specification for exact quoting rules.- Parameters:
commandline
- the command line to useapplicationName
- the application name, orNULL
to usecommandline
flags
- flags that can specify details of the createdAppInfo
- Returns:
- new
AppInfo
for given command. - Throws:
GErrorException
- seeGError
-
createFromCommandline
static AppInfo createFromCommandline(String commandline, @Nullable @Nullable String applicationName, AppInfoCreateFlags... flags) throws GErrorException Creates a newAppInfo
from the given information.Note that for
commandline
, the quoting rules of theExec
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 byExec
key unquoting. See the specification for exact quoting rules.- Parameters:
commandline
- the command line to useapplicationName
- the application name, orNULL
to usecommandline
flags
- flags that can specify details of the createdAppInfo
- Returns:
- new
AppInfo
for given command. - Throws:
GErrorException
- seeGError
-
getAll
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
. SeeshouldShow()
.The returned list does not include applications which have the
Hidden
key set.- Returns:
- a newly allocated
list of references to
AppInfo
s.
-
getAllForType
Gets a list of allAppInfo
s for a given content type, including the recommended and fallbackAppInfo
s. SeegetRecommendedForType(java.lang.String)
andgetFallbackForType(java.lang.String)
. -
getDefaultForType
Gets the defaultAppInfo
for a given content type. -
getDefaultForTypeAsync
static void getDefaultForTypeAsync(String contentType, boolean mustSupportUris, @Nullable @Nullable Cancellable cancellable, @Nullable @Nullable AsyncReadyCallback callback) Asynchronously gets the defaultAppInfo
for a given content type.- Parameters:
contentType
- the content type to find aAppInfo
formustSupportUris
- ifTRUE
, theAppInfo
is expected to support URIscancellable
- aCancellable
callback
- aGio.AsyncReadyCallback
to call when the request is done
-
getDefaultForTypeFinish
Finishes a defaultAppInfo
lookup started bygetDefaultForTypeAsync(java.lang.String, boolean, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)
.If no
[iface
Gio
.AppInfo] is found, thenerror
will be set toGio.IOErrorEnum.NOT_FOUND
.- Parameters:
result
- the async result- Returns:
AppInfo
for givencontentType
orNULL
on error.- Throws:
GErrorException
- seeGError
-
getDefaultForUriScheme
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
orsip
.- Parameters:
uriScheme
- a string containing a URI scheme.- Returns:
AppInfo
for givenuriScheme
orNULL
on error.
-
getDefaultForUriSchemeAsync
static void getDefaultForUriSchemeAsync(String uriScheme, @Nullable @Nullable Cancellable cancellable, @Nullable @Nullable AsyncReadyCallback callback) 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
orsip
.- Parameters:
uriScheme
- a string containing a URI scheme.cancellable
- aCancellable
callback
- aGio.AsyncReadyCallback
to call when the request is done
-
getDefaultForUriSchemeFinish
Finishes a defaultAppInfo
lookup started bygetDefaultForUriSchemeAsync(java.lang.String, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)
.If no
AppInfo
is found, thenerror
will be set toGio.IOErrorEnum.NOT_FOUND
.- Parameters:
result
- the async result- Returns:
AppInfo
for givenuriScheme
orNULL
on error.- Throws:
GErrorException
- seeGError
-
getFallbackForType
Gets a list of fallbackAppInfo
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. -
getRecommendedForType
Gets a list of recommendedAppInfo
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
setAsLastUsedForType(java.lang.String)
has been called. -
launchDefaultForUri
static boolean launchDefaultForUri(String uri, @Nullable @Nullable AppLaunchContext context) throws GErrorException 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
launchDefaultForUriAsync(java.lang.String, org.gnome.gio.AppLaunchContext, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)
instead.- Parameters:
uri
- the uri to showcontext
- optional launch context- Returns:
TRUE
on success,FALSE
on error.- Throws:
GErrorException
- seeGError
-
launchDefaultForUriAsync
static void launchDefaultForUriAsync(String uri, @Nullable @Nullable AppLaunchContext context, @Nullable @Nullable Cancellable cancellable, @Nullable @Nullable AsyncReadyCallback callback) Async version oflaunchDefaultForUri(java.lang.String, org.gnome.gio.AppLaunchContext)
.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
- aCancellable
callback
- aGio.AsyncReadyCallback
to call when the request is done
-
launchDefaultForUriFinish
Finishes an asynchronous launch-default-for-uri operation.- Parameters:
result
- the async result- Returns:
TRUE
if the launch was successful,FALSE
iferror
is set- Throws:
GErrorException
- seeGError
-
resetTypeAssociations
Removes all changes to the type associations done bysetAsDefaultForType(java.lang.String)
,setAsDefaultForExtension(java.lang.String)
,addSupportsType(java.lang.String)
orremoveSupportsType(java.lang.String)
.- Parameters:
contentType
- a content type
-
addSupportsType
Adds a content type to the application information to indicate the application is capable of opening files with the given content type.- Parameters:
contentType
- a string.- Returns:
TRUE
on success,FALSE
on error.- Throws:
GErrorException
- seeGError
-
canDelete
-
canRemoveSupportsType
default boolean canRemoveSupportsType()Checks if a supported content type can be removed from an application.- Returns:
TRUE
if it is possible to remove supported content types from a given this AppInfo,FALSE
if not.
-
delete
default boolean delete()Tries to delete aAppInfo
.On some platforms, there may be a difference between user-defined
AppInfo
s which can be deleted, and system-wide ones which cannot. SeecanDelete()
.- Returns:
TRUE
if this AppInfo has been deleted
-
dup
-
equal
Checks if twoAppInfo
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 secondAppInfo
.- Returns:
TRUE
if this AppInfo is equal toappinfo2
.FALSE
otherwise.
-
getCommandline
Gets the commandline with which the application will be started.- Returns:
- a string containing the this AppInfo’s
commandline, or
NULL
if this information is not available
-
getDescription
Gets a human-readable description of an installed application.- Returns:
- a string containing a description of the
application this AppInfo, or
NULL
if none.
-
getDisplayName
Gets the display name of the application. The display name is often more descriptive to the user than the name itself.- Returns:
- the display name of the application for this AppInfo, or the name if no display name is available.
-
getExecutable
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(org.gnome.glib.List<org.gnome.gio.File>, org.gnome.gio.AppLaunchContext)
and related functions, rather than spawning the return value from this function.- Returns:
- a string containing the this AppInfo’s application binaries name
-
getIcon
-
getId
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 this AppInfo has been constructed.- Returns:
- a string containing the application’s ID.
-
getName
Gets the installed name of the application.- Returns:
- the name of the application for this AppInfo.
-
getSupportedTypes
Retrieves the list of content types thatappInfo
claims to support. If this information is not provided by the environment, this function will returnNULL
.This function does not take in consideration associations added with
addSupportsType(java.lang.String)
, but only those exported directly by the application.- Returns:
- a list of content types.
-
launch
default boolean launch(@Nullable @Nullable List<File> files, @Nullable @Nullable AppLaunchContext context) throws GErrorException Launches the application. Passesfiles
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
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
launchUris(org.gnome.glib.List<java.lang.String>, org.gnome.gio.AppLaunchContext)
instead.The launched application inherits the environment of the launching process, but it can be modified with
AppLaunchContext.setenv(java.lang.String, java.lang.String)
andAppLaunchContext.unsetenv(java.lang.String)
.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:
files
- a list ofFile
objectscontext
- the launch context- Returns:
TRUE
on successful launch,FALSE
otherwise.- Throws:
GErrorException
- seeGError
-
launchUris
default boolean launchUris(@Nullable @Nullable List<String> uris, @Nullable @Nullable AppLaunchContext context) throws GErrorException Launches the application. This passes theuris
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
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- Returns:
TRUE
on successful launch,FALSE
otherwise.- Throws:
GErrorException
- seeGError
-
launchUrisAsync
default void launchUrisAsync(@Nullable @Nullable List<String> uris, @Nullable @Nullable AppLaunchContext context, @Nullable @Nullable Cancellable cancellable, @Nullable @Nullable AsyncReadyCallback callback) Async version oflaunchUris(org.gnome.glib.List<java.lang.String>, org.gnome.gio.AppLaunchContext)
.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 forlaunchDefaultForUriAsync(java.lang.String, org.gnome.gio.AppLaunchContext, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)
.- Parameters:
uris
- a list of URIs to launch.context
- the launch contextcancellable
- aCancellable
callback
- aGio.AsyncReadyCallback
to call when the request is done
-
launchUrisFinish
Finishes alaunchUrisAsync(org.gnome.glib.List<java.lang.String>, org.gnome.gio.AppLaunchContext, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)
operation.- Parameters:
result
- the async result- Returns:
TRUE
on successful launch,FALSE
otherwise.- Throws:
GErrorException
- seeGError
-
removeSupportsType
Removes a supported type from an application, if possible.- Parameters:
contentType
- a string.- Returns:
TRUE
on success,FALSE
on error.- Throws:
GErrorException
- seeGError
-
setAsDefaultForExtension
Sets the application as the default handler for the given file extension.- Parameters:
extension
- a string containing the file extension (without the dot).- Returns:
TRUE
on success,FALSE
on error.- Throws:
GErrorException
- seeGError
-
setAsDefaultForType
Sets the application as the default handler for a given type.- Parameters:
contentType
- the content type.- Returns:
TRUE
on success,FALSE
on error.- Throws:
GErrorException
- seeGError
-
setAsLastUsedForType
Sets the application as the last used application for a given type. This will make the application appear as first in the list returned bygetRecommendedForType(java.lang.String)
, regardless of the default application for that content type.- Parameters:
contentType
- the content type.- Returns:
TRUE
on success,FALSE
on error.- Throws:
GErrorException
- seeGError
-
shouldShow
default boolean shouldShow()Checks if the application info should be shown in menus that list available applications.- Returns:
TRUE
if the this AppInfo should be shown,FALSE
otherwise.
-
supportsFiles
default boolean supportsFiles()Checks if the application accepts files as arguments.- Returns:
TRUE
if the this AppInfo supports files.
-
supportsUris
default boolean supportsUris()Checks if the application supports reading files and directories from URIs.- Returns:
TRUE
if the this AppInfo supports URIs.
-