Screen context types

Updated: October 26, 2022

The types of context masks

Synopsis:

#include <screen/screen.h>
enum {
    SCREEN_APPLICATION_CONTEXT = 0,
    SCREEN_WINDOW_MANAGER_CONTEXT = (1 << 0),
    SCREEN_INPUT_PROVIDER_CONTEXT = (1 << 1),
    SCREEN_POWER_MANAGER_CONTEXT = (1 << 2),
    SCREEN_DISPLAY_MANAGER_CONTEXT = (1 << 3),
    SCREEN_INPUT_MANAGER_CONTEXT = (1 << 4),
    SCREEN_BUFFER_PROVIDER_CONTEXT = (1 << 5)
};

Data:

SCREEN_APPLICATION_CONTEXT
A context type that allows a process to create its own windows and control some of the window properties.

Applications can't modify windows that were created by other applications and can't send events outside their process space. Application contexts aren't aware of other top-level windows in the system, nor are they allowed to operate on them. Application contexts are allowed to parent other windows, even if they are created in other contexts in other processes, and are allowed to control those windows. Application contexts that have write access to /dev/screen/.inject can inject Screen events.

SCREEN_WINDOW_MANAGER_CONTEXT
A context type that requests a privileged context to allow a process to modify all windows in the system when new application windows are created or destroyed.

The context also receives notifications when applications create new windows, existing application windows are destroyed, or when an application tries to change certain window properties. A process must have a user or group ID with write access to /dev/screen/.winmgr, to create a context of this type successfully.

SCREEN_INPUT_PROVIDER_CONTEXT
A context type that requests a privileged context to allow a process to send events to any application in the system.

This context type doesn't receive notifications when applications create new windows, when applications destroy existing windows, or when an application attempts to change certain window properties. A process must have a user or group ID with write access to /dev/screen/.provider, to create a context of this type successfully.

SCREEN_POWER_MANAGER_CONTEXT
A context type that requests a privileged context to provide access to power management functionality in order to change display power modes.

A process must have a user or group ID with write access to /dev/screen/.powmgr, to create a context of this type successfully.

SCREEN_DISPLAY_MANAGER_CONTEXT
A context type that requests a privileged context to allow a process to modify all display properties in the system.

A process must have an effective user ID of root to create a context of this type successfully. A process must have a user or group ID with write access to /dev/screen/.dpymgr, to create a context of this type successfully.

SCREEN_INPUT_MANAGER_CONTEXT
A context type that requests a privileged context to allow a process to be notified of all input sessions created and to modify specific session properties.

A process must have a user or group ID with write access to /dev/screen/.inmgr, to create a context of this type successfully.

SCREEN_BUFFER_PROVIDER_CONTEXT
A context type that requests a privileged context to allow a process to attach buffers that it created by calling screen_create_buffer().

The context will not be involved in the creation of buffers other than the ones it chooses to attach. A process must have a user or group ID with write access to /dev/screen/.attach, to create a context of this type successfully.

Library:

libscreen

Description:

These bits are intended to be combined in a single integer representing combinations of desired privileges that are applied to a Screen context.