module Gio::AppInfo

Overview

#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 g_file_get_path()) when using g_app_info_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 #GFile constructors (since gvfs implements the #GVfs extension point). As such, if the application needs to examine the URI, it needs to use g_file_get_uri() or similar on #GFile. In other words, an application cannot assume that the URI passed to e.g. g_file_new_for_commandline_arg() is equal to the result of g_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.

Direct including types

Defined in:

lib/gi-crystal/src/auto/gio-2.0/app_info.cr

Class Method Summary

Instance Method Summary

Class Method Detail

def self.all : GLib::List #

def self.all_for_type(content_type : String) : GLib::List #

def self.default_for_type(content_type : String, must_support_uris : Bool) : Gio::AppInfo? #

def self.default_for_type_async(content_type : String, must_support_uris : Bool, cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil #

def self.default_for_uri_scheme(uri_scheme : String) : Gio::AppInfo? #

def self.default_for_uri_scheme_async(uri_scheme : String, cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil #

def self.fallback_for_type(content_type : String) : GLib::List #

def self.g_type : UInt64 #

def self.launch_default_for_uri_async(uri : String, context : Gio::AppLaunchContext?, cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil #

def self.recommended_for_type(content_type : String) : GLib::List #

def self.reset_type_associations(content_type : String) : Nil #

Instance Method Detail

def add_supports_type(content_type : String) : Bool #

def as_default_for_extension=(extension : String) : Bool #

def as_default_for_type=(content_type : String) : Bool #

def as_last_used_for_type=(content_type : String) : Bool #

def can_delete : Bool #

def can_remove_supports_type : Bool #

def commandline : Path? #

def create_from_commandline(commandline : String, application_name : String?, flags : Gio::AppInfoCreateFlags) : Gio::AppInfo #

def default_for_type_finish(result : Gio::AsyncResult) : Gio::AppInfo #

def default_for_uri_scheme_finish(result : Gio::AsyncResult) : Gio::AppInfo #

def delete : Bool #

def description : String? #

def display_name : String #

def dup : Gio::AppInfo #

def equal(appinfo2 : Gio::AppInfo) : Bool #

def executable : Path #

def icon : Gio::Icon? #

def id : String? #

def launch(files : GLib::List?, context : Gio::AppLaunchContext?) : Bool #

def launch_default_for_uri(uri : String, context : Gio::AppLaunchContext?) : Bool #

def launch_default_for_uri_finish(result : Gio::AsyncResult) : Bool #

def launch_uris(uris : GLib::List?, context : Gio::AppLaunchContext?) : Bool #

def launch_uris_async(uris : GLib::List?, context : Gio::AppLaunchContext?, cancellable : Gio::Cancellable?, callback : Gio::AsyncReadyCallback?, user_data : Pointer(Void)?) : Nil #

def launch_uris_finish(result : Gio::AsyncResult) : Bool #

def name : String #

def remove_supports_type(content_type : String) : Bool #

def should_show : Bool #

def supported_types : Enumerable(String) #

def supports_files : Bool #

def supports_uris : Bool #

abstract def to_unsafe #