Application

open class Application(pointer: <Error class: unknown class><<Error class: unknown class>>)

GtkApplication is a high-level API for writing applications.

It supports many aspects of writing a GTK application in a convenient fashion, without enforcing a one-size-fits-all model.

Currently, GtkApplication handles GTK initialization, application uniqueness, session management, provides some basic scriptability and desktop shell integration by exporting actions and menus and manages a list of toplevel windows whose life-cycle is automatically tied to the life-cycle of your application.

While GtkApplication works fine with plain class@Gtk.Windows, it is recommended to use it together with class@Gtk.ApplicationWindow.

Automatic resources

GtkApplication will automatically load menus from the GtkBuilder resource located at "gtk/menus.ui", relative to the application's resource base path (see method@Gio.Application.set_resource_base_path). The menu with the ID "menubar" is taken as the application's menubar. Additional menus (most interesting submenus) can be named and accessed via method@Gtk.Application.get_menu_by_id which allows for dynamic population of a part of the menu structure.

Note that automatic resource loading uses the resource base path that is set at construction time and will not work if the resource base path is changed at a later time.

It is also possible to provide the menubar manually using method@Gtk.Application.set_menubar.

GtkApplication will also automatically setup an icon search path for the default icon theme by appending "icons" to the resource base path. This allows your application to easily store its icons as resources. See method@Gtk.IconTheme.add_resource_path for more information.

If there is a resource located at gtk/help-overlay.ui which defines a class@Gtk.ShortcutsWindow with ID help_overlay then GtkApplication associates an instance of this shortcuts window with each class@Gtk.ApplicationWindow and sets up the keyboard accelerator Control+? to open it. To create a menu item that displays the shortcuts window, associate the item with the action win.show-help-overlay.

A simple application

A simple example is available in the GTK source code repository

GtkApplication optionally registers with a session manager of the users session (if you set the property@Gtk.Application:register-session property) and offers various functionality related to the session life-cycle.

An application can block various ways to end the session with the method@Gtk.Application.inhibit function. Typical use cases for this kind of inhibiting are long-running, uninterruptible operations, such as burning a CD or performing a disk backup. The session manager may not honor the inhibitor, but it can be expected to inform the user about the negative consequences of ending the session while inhibitors are present.

See Also

Skipped during bindings generation

  • method register-session: Property has no getter nor setter

  • method screensaver-active: Property has no getter nor setter

Constructors

Link copied to clipboard
constructor(applicationId: String? = null, flags: <Error class: unknown class>)

Creates a new GtkApplication instance.

constructor(pointer: <Error class: unknown class><<Error class: unknown class>>)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
open val activeWindow: Window?

The currently focused window of the application.

Link copied to clipboard
open val gioActionGroupPointer: <Error class: unknown class><<Error class: unknown class>>
Link copied to clipboard
open val gioActionMapPointer: <Error class: unknown class><<Error class: unknown class>>
Link copied to clipboard
val gtkApplicationPointer: <Error class: unknown class><<Error class: unknown class>>
Link copied to clipboard
open var menubar: <Error class: unknown class>?

The GMenuModel to be used for the application's menu bar.

Functions

Link copied to clipboard
open fun addWindow(window: Window)

Adds a window to application.

Link copied to clipboard
fun connectQueryEnd(connectFlags: <Error class: unknown class> = ConnectFlags(0u), handler: () -> Unit): <Error class: unknown class>

Emitted when the session manager is about to end the session.

Link copied to clipboard
fun connectWindowAdded(connectFlags: <Error class: unknown class> = ConnectFlags(0u), handler: (window: Window) -> Unit): <Error class: unknown class>

Emitted when a class@Gtk.Window is added to application through method@Gtk.Application.add_window.

Link copied to clipboard
fun connectWindowRemoved(connectFlags: <Error class: unknown class> = ConnectFlags(0u), handler: (window: Window) -> Unit): <Error class: unknown class>

Emitted when a class@Gtk.Window is removed from application.

Link copied to clipboard
open fun getAccelsForAction(detailedActionName: String): List<String>

Gets the accelerators that are currently associated with the given action.

Link copied to clipboard

Returns the list of actions (possibly empty) that accel maps to.

Link copied to clipboard
open fun getActiveWindow(): Window?

Gets the “active” window for the application.

Link copied to clipboard
open fun getMenubar(): <Error class: unknown class>?

Returns the menu model that has been set with method@Gtk.Application.set_menubar.

Link copied to clipboard
open fun getMenuById(id: String): <Error class: unknown class>?

Gets a menu from automatically loaded resources.

Link copied to clipboard
open fun getWindowById(id: <Error class: unknown class>): Window?

Returns the class@Gtk.ApplicationWindow with the given ID.

Link copied to clipboard
open fun getWindows(): <Error class: unknown class>

Gets a list of the class@Gtk.Window instances associated with application.

Link copied to clipboard
open fun inhibit(window: Window? = null, flags: ApplicationInhibitFlags, reason: String? = null): <Error class: unknown class>

Inform the session manager that certain types of actions should be inhibited.

Link copied to clipboard

Lists the detailed action names which have associated accelerators.

Link copied to clipboard
open fun removeWindow(window: Window)

Remove a window from application.

Link copied to clipboard
open fun setAccelsForAction(detailedActionName: String, accels: List<String>)

Sets zero or more keyboard accelerators that will trigger the given action.

Link copied to clipboard
open fun setMenubar(menubar: <Error class: unknown class>? = null)

Sets or unsets the menubar for windows of application.

Link copied to clipboard
open fun uninhibit(cookie: <Error class: unknown class>)

Removes an inhibitor that has been previously established.