A window group is the basic unit of an application. Its main functions are:
To receive keyboard focus — unless captured, all key events are sent to the window group with keyboard focus.
The application with keyboard focus may be referred to as the "foreground application". The window server gives the foreground application’s thread extra priority, so that it is responsive to the user, even if a background application is performing a long-running task.
To control settings for priority keys and key capture.
To have an associated name which may be interrogated by other window server clients, and may be used as the basis of interrogating which applications are running.
To have a text cursor: the text cursor is only displayed for the application with keyboard focus.
To form a group for all other windows owned by an application.
A typical application will have a single window group, and all its other windows are descendants of that window group. A system shell application may use the RWsSession
interface to interrogate all window groups owned by all client applications, and therefore may display a task list. All applications should use the same policy for the format of the window group name. This policy is the responsibility of the GUI, not the window server itself.
An RWindowGroup
is a pseudo-window which can never be seen on screen, but which has an ordinal position and participates in parent/child and sibling relationships as all other windows.