Advance Wayland and KDE package bring-up
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
install(FILES
|
||||
protocols/appmenu.xml
|
||||
protocols/blur.xml
|
||||
protocols/contrast.xml
|
||||
protocols/dpms.xml
|
||||
protocols/fake-input.xml
|
||||
protocols/fullscreen-shell.xml
|
||||
protocols/idle.xml
|
||||
protocols/kde-external-brightness-v1.xml
|
||||
protocols/kde-lockscreen-overlay-v1.xml
|
||||
protocols/kde-output-device-v2.xml
|
||||
protocols/kde-output-management-v2.xml
|
||||
protocols/kde-output-order-v1.xml
|
||||
protocols/kde-primary-output-v1.xml
|
||||
protocols/kde-screen-edge-v1.xml
|
||||
protocols/keystate.xml
|
||||
protocols/org-kde-plasma-virtual-desktop.xml
|
||||
protocols/output-management.xml
|
||||
protocols/outputdevice.xml
|
||||
protocols/plasma-shell.xml
|
||||
protocols/plasma-window-management.xml
|
||||
protocols/remote-access.xml
|
||||
protocols/server-decoration-palette.xml
|
||||
protocols/server-decoration.xml
|
||||
protocols/shadow.xml
|
||||
protocols/slide.xml
|
||||
protocols/surface-extension.xml
|
||||
protocols/text-input-unstable-v2.xml
|
||||
protocols/text-input.xml
|
||||
protocols/wayland-eglstream-controller.xml
|
||||
protocols/zkde-screencast-unstable-v1.xml
|
||||
|
||||
DESTINATION ${KDE_INSTALL_DATADIR}/plasma-wayland-protocols)
|
||||
|
||||
# Backward compatibility for previously used non-standard protocol file names
|
||||
# TODO KF6 remove
|
||||
install(FILES protocols/zkde-screencast-unstable-v1.xml RENAME screencast.xml DESTINATION ${KDE_INSTALL_DATADIR}/plasma-wayland-protocols)
|
||||
install(FILES protocols/org-kde-plasma-virtual-desktop.xml RENAME plasma-virtual-desktop.xml DESTINATION ${KDE_INSTALL_DATADIR}/plasma-wayland-protocols)
|
||||
@@ -0,0 +1,8 @@
|
||||
# To be removed
|
||||
Only remove after Plasma 5 and KF 5 releases end.
|
||||
|
||||
* fullscreen-shell.xml: It's upstream https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tree/master/unstable
|
||||
* remote-access.xml: Deprecated in favor of screencast.xml
|
||||
* surface-extension.xml: Deprecated in Qt, not used anymore
|
||||
* wayland-eglstream-controller.xml: to be removed and moved to kwin, no other component in KDE should care about this, neither others. It's not a protocol we own.
|
||||
* remove the legacy install name of zkde-screencast-unstable-v1
|
||||
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="appmenu">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2017 David Edmundson
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_appmenu_manager" version="2">
|
||||
<description summary="appmenu dbus address interface">
|
||||
This interface allows a client to link a window (or wl_surface) to an com.canonical.dbusmenu
|
||||
interface registered on DBus.
|
||||
</description>
|
||||
<request name="create">
|
||||
<arg name="id" type="new_id" interface="org_kde_kwin_appmenu"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
<!-- version 2 additions-->
|
||||
<request name="release" type="destructor" since="2">
|
||||
<description summary="destroy the org_kde_kwin_appmenu_manager object" />
|
||||
</request>
|
||||
</interface>
|
||||
<interface name="org_kde_kwin_appmenu" version="2">
|
||||
<description summary="appmenu dbus address interface">
|
||||
The DBus service name and object path where the appmenu interface is present
|
||||
The object should be registered on the session bus before sending this request.
|
||||
If not applicable, clients should remove this object.
|
||||
</description>
|
||||
<request name="set_address">
|
||||
<description summary="initialise or update the location of the AppMenu interface">
|
||||
Set or update the service name and object path.
|
||||
Strings should be formatted in Latin-1 matching the relevant DBus specifications.
|
||||
</description>
|
||||
<arg name="service_name" type="string" />
|
||||
<arg name="object_path" type="string" />
|
||||
</request>
|
||||
<request name="release" type="destructor">
|
||||
<description summary="release the appmenu object"/>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="blur">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2015 Martin Gräßlin
|
||||
SPDX-FileCopyrightText: 2015 Marco Martin
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_blur_manager" version="1">
|
||||
<request name="create">
|
||||
<arg name="id" type="new_id" interface="org_kde_kwin_blur"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
<request name="unset">
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
<interface name="org_kde_kwin_blur" version="1">
|
||||
<request name="commit">
|
||||
</request>
|
||||
<request name="set_region">
|
||||
<arg name="region" type="object" interface="wl_region" allow-null="true"/>
|
||||
</request>
|
||||
<request name="release" type="destructor">
|
||||
<description summary="release the blur object"/>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="contrast">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2015 Martin Gräßlin
|
||||
SPDX-FileCopyrightText: 2015 Marco Martin
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_contrast_manager" version="2">
|
||||
<request name="create">
|
||||
<arg name="id" type="new_id" interface="org_kde_kwin_contrast"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
<request name="unset">
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
<interface name="org_kde_kwin_contrast" version="2">
|
||||
<request name="commit">
|
||||
</request>
|
||||
<request name="set_region">
|
||||
<arg name="region" type="object" interface="wl_region" allow-null="true"/>
|
||||
</request>
|
||||
<request name="set_contrast">
|
||||
<arg name="contrast" type="fixed"/>
|
||||
</request>
|
||||
<request name="set_intensity">
|
||||
<arg name="intensity" type="fixed"/>
|
||||
</request>
|
||||
<request name="set_saturation">
|
||||
<arg name="saturation" type="fixed"/>
|
||||
</request>
|
||||
<request name="release" type="destructor">
|
||||
<description summary="release the contrast object"/>
|
||||
</request>
|
||||
|
||||
<request name="set_frost" since="2">
|
||||
<description summary="opt into frost effect w/ given colour">
|
||||
enables 'frost' variant of contrast effect.
|
||||
|
||||
'frost' is an enhanced version of the contrast effect that
|
||||
uses different colour arithmetic to get backgrounds simultaneously
|
||||
higher in contrast and (apparent) transparency.
|
||||
|
||||
r, g, b, a are channels from 0-255, indicating a colour to use in contrast calculation.
|
||||
should be based off of the "main" background colour of the surface.
|
||||
</description>
|
||||
|
||||
<arg name="red" type="int" />
|
||||
<arg name="green" type="int" />
|
||||
<arg name="blue" type="int" />
|
||||
<arg name="alpha" type="int" />
|
||||
</request>
|
||||
<request name="unset_frost" since="2">
|
||||
<description summary="opts out of frost effect" />
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="dpms">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2015 Martin Gräßlin
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_dpms_manager" version="1">
|
||||
<description summary="Output dpms manager">
|
||||
The Dpms manager allows to get a org_kde_kwin_dpms for a given wl_output.
|
||||
The org_kde_kwin_dpms provides the currently used VESA Display Power Management
|
||||
Signaling state (see https://en.wikipedia.org/wiki/VESA_Display_Power_Management_Signaling ).
|
||||
In addition it allows to request a state change. A compositor is not obliged to honor it
|
||||
and will normally automatically switch back to on state.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
<request name="get">
|
||||
<description summary="Get org_kde_kwin_dpms for wl_output">
|
||||
Factory request to get the org_kde_kwin_dpms for a given wl_output.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="org_kde_kwin_dpms"/>
|
||||
<arg name="output" type="object" interface="wl_output"/>
|
||||
</request>
|
||||
</interface>
|
||||
<interface name="org_kde_kwin_dpms" version="1">
|
||||
<description summary="Dpms for a wl_output">
|
||||
This interface provides information about the VESA DPMS state for a wl_output.
|
||||
It gets created through the request get on the org_kde_kwin_dpms_manager interface.
|
||||
|
||||
On creating the resource the server will push whether DPSM is supported for the output,
|
||||
the currently used DPMS state and notifies the client through the done event once all
|
||||
states are pushed. Whenever a state changes the set of changes is committed with the
|
||||
done event.
|
||||
</description>
|
||||
<event name="supported">
|
||||
<description summary="Event indicating whether DPMS is supported on the wl_output">
|
||||
This event gets pushed on binding the resource and indicates whether the wl_output
|
||||
supports DPMS. There are operation modes of a Wayland server where DPMS might not
|
||||
make sense (e.g. nested compositors).
|
||||
</description>
|
||||
<arg name="supported" type="uint" summary="Boolean value whether DPMS is supported (1) for the wl_output or not (0)"/>
|
||||
</event>
|
||||
<enum name="mode">
|
||||
<entry name="On" value="0"/>
|
||||
<entry name="Standby" value="1"/>
|
||||
<entry name="Suspend" value="2"/>
|
||||
<entry name="Off" value="3"/>
|
||||
</enum>
|
||||
<event name="mode">
|
||||
<description summary="Event indicating used DPMS mode">
|
||||
This mode gets pushed on binding the resource and provides the currently used
|
||||
DPMS mode. It also gets pushed if DPMS is not supported for the wl_output, in that
|
||||
case the value will be On.
|
||||
|
||||
The event is also pushed whenever the state changes.
|
||||
</description>
|
||||
<arg name="mode" type="uint" summary="The new currently used mode"/>
|
||||
</event>
|
||||
<event name="done">
|
||||
<description summary="All changes are pushed">
|
||||
This event gets pushed on binding the resource once all other states are pushed.
|
||||
|
||||
In addition it gets pushed whenever a state changes to tell the client that all
|
||||
state changes have been pushed.
|
||||
</description>
|
||||
</event>
|
||||
<request name="set">
|
||||
<description summary="Request DPMS state change for the wl_output">
|
||||
Requests that the compositor puts the wl_output into the passed mode. The compositor
|
||||
is not obliged to change the state. In addition the compositor might leave the mode
|
||||
whenever it seems suitable. E.g. the compositor might return to On state on user input.
|
||||
|
||||
The client should not assume that the mode changed after requesting a new mode.
|
||||
Instead the client should listen for the mode event.
|
||||
</description>
|
||||
<arg name="mode" type="uint" summary="Requested mode"/>
|
||||
</request>
|
||||
<request name="release" type="destructor">
|
||||
<description summary="release the dpms object"/>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="fake_input">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2015 Martin Gräßlin
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_fake_input" version="5">
|
||||
<description summary="Fake input manager">
|
||||
This interface allows other processes to provide fake input events.
|
||||
Purpose is on the one hand side to provide testing facilities like XTest on X11.
|
||||
But also to support use case like kdeconnect's mouse pad interface.
|
||||
|
||||
A compositor should not trust the input received from this interface.
|
||||
Clients should not expect that the compositor honors the requests from this
|
||||
interface.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
<request name="authenticate">
|
||||
<description summary="Information why the client wants to use the interface">
|
||||
A client should use this request to tell the compositor why it wants to
|
||||
use this interface. The compositor might use the information to decide
|
||||
whether it wants to grant the request. The data might also be passed to
|
||||
the user to decide whether the application should get granted access to
|
||||
this very privileged interface.
|
||||
</description>
|
||||
<arg name="application" type="string" summary="user visible name of the application"/>
|
||||
<arg name="reason" type="string" summary="reason why the application wants to use this interface"/>
|
||||
</request>
|
||||
<request name="pointer_motion">
|
||||
<arg name="delta_x" type="fixed"/>
|
||||
<arg name="delta_y" type="fixed"/>
|
||||
</request>
|
||||
<request name="button">
|
||||
<arg name="button" type="uint"/>
|
||||
<arg name="state" type="uint"/>
|
||||
</request>
|
||||
<request name="axis">
|
||||
<arg name="axis" type="uint"/>
|
||||
<arg name="value" type="fixed"/>
|
||||
</request>
|
||||
<request name="touch_down" since="2">
|
||||
<description summary="touch down event">
|
||||
A client should use this request to send touch down event at specific
|
||||
coordinates.
|
||||
</description>
|
||||
<arg name="id" type="uint" summary="unique id for touch down event"/>
|
||||
<arg name="x" type="fixed" summary="x coordinate for touch down event"/>
|
||||
<arg name="y" type="fixed" summary="y coordinate for touch down event"/>
|
||||
</request>
|
||||
<request name="touch_motion" since="2">
|
||||
<description summary="touch motion event">
|
||||
A client should use this request to send touch motion to specific position.
|
||||
</description>
|
||||
<arg name="id" type="uint" summary="unique id for touch motion event"/>
|
||||
<arg name="x" type="fixed" summary="x coordinate for touch motion event"/>
|
||||
<arg name="y" type="fixed" summary="y coordinate for touch motion event"/>
|
||||
</request>
|
||||
<request name="touch_up" since="2">
|
||||
<description summary="touch up event">
|
||||
A client should use this request to send touch up event.
|
||||
</description>
|
||||
<arg name="id" type="uint" summary="unique id for touch up event"/>
|
||||
</request>
|
||||
<request name="touch_cancel" since="2">
|
||||
<description summary="touch cancel event">
|
||||
A client should use this request to cancel the current
|
||||
touch event.
|
||||
</description>
|
||||
</request>
|
||||
<request name="touch_frame" since="2">
|
||||
<description summary="touch frame event">
|
||||
A client should use this request to send touch frame event.
|
||||
</description>
|
||||
</request>
|
||||
<request name="pointer_motion_absolute" since="3">
|
||||
<arg name="x" type="fixed"/>
|
||||
<arg name="y" type="fixed"/>
|
||||
</request>
|
||||
<request name="keyboard_key" since="4">
|
||||
<arg name="button" type="uint"/>
|
||||
<arg name="state" type="uint"/>
|
||||
</request>
|
||||
|
||||
<!-- Version 5 additions -->
|
||||
|
||||
<request name="destroy" type="destructor" since="5">
|
||||
<description summary="Destroy the fake input device"/>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,206 @@
|
||||
<protocol name="fullscreen_shell">
|
||||
<interface name="_wl_fullscreen_shell" version="1">
|
||||
<description summary="Displays a single surface per output">
|
||||
Displays a single surface per output.
|
||||
|
||||
This interface provides a mechanism for a single client to display
|
||||
simple full-screen surfaces. While there technically may be multiple
|
||||
clients bound to this interface, only one of those clients should be
|
||||
shown at a time.
|
||||
|
||||
To present a surface, the client uses either the present_surface or
|
||||
present_surface_for_mode requests. Presenting a surface takes effect
|
||||
on the next wl_surface.commit. See the individual requests for
|
||||
details about scaling and mode switches.
|
||||
|
||||
The client can have at most one surface per output at any time.
|
||||
Requesting a surface be presented on an output that already has a
|
||||
surface replaces the previously presented surface. Presenting a null
|
||||
surface removes its content and effectively disables the output.
|
||||
Exactly what happens when an output is "disabled" is
|
||||
compositor-specific. The same surface may be presented on multiple
|
||||
outputs simultaneously.
|
||||
|
||||
Once a surface is presented on an output, it stays on that output
|
||||
until either the client removes it or the compositor destroys the
|
||||
output. This way, the client can update the output's contents by
|
||||
simply attaching a new buffer.
|
||||
</description>
|
||||
|
||||
<request name="release" type="destructor">
|
||||
<description summary="release the wl_fullscreen_shell interface">
|
||||
Release the binding from the wl_fullscreen_shell interface
|
||||
|
||||
This destroys the server-side object and frees this binding. If
|
||||
the client binds to wl_fullscreen_shell multiple times, it may wish
|
||||
to free some of those bindings.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<enum name="capability">
|
||||
<description summary="capabilities advertised by the compositor">
|
||||
Various capabilities that can be advertised by the compositor. They
|
||||
are advertised one-at-a-time when the wl_fullscreen_shell interface is
|
||||
bound. See the wl_fullscreen_shell.capability event for more details.
|
||||
|
||||
ARBITRARY_MODE:
|
||||
This is a hint to the client that indicates that the compositor is
|
||||
capable of setting practically any mode on its outputs. If this
|
||||
capability is provided, wl_fullscreen_shell.present_surface_for_mode
|
||||
will almost never fail and clients should feel free to set whatever
|
||||
mode they like. If the compositor does not advertise this, it may
|
||||
still support some modes that are not advertised through wl_global.mode
|
||||
but it is less likely.
|
||||
|
||||
CURSOR_PLANE:
|
||||
This is a hint to the client that indicates that the compositor can
|
||||
handle a cursor surface from the client without actually compositing.
|
||||
This may be because of a hardware cursor plane or some other mechanism.
|
||||
If the compositor does not advertise this capability then setting
|
||||
wl_pointer.cursor may degrade performance or be ignored entirely. If
|
||||
CURSOR_PLANE is not advertised, it is recommended that the client draw
|
||||
its own cursor and set wl_pointer.cursor(NULL).
|
||||
</description>
|
||||
<entry name="arbitrary_modes" value="1" summary="compositor is capable of almost any output mode"/>
|
||||
<entry name="cursor_plane" value="2" summary="compositor has a separate cursor plane"/>
|
||||
</enum>
|
||||
|
||||
<event name="capability">
|
||||
<description summary="advertises a capability of the compositor">
|
||||
Advertises a single capability of the compositor.
|
||||
|
||||
When the wl_fullscreen_shell interface is bound, this event is emitted
|
||||
once for each capability advertised. Valid capabilities are given by
|
||||
the wl_fullscreen_shell.capability enum. If clients want to take
|
||||
advantage of any of these capabilities, they should use a
|
||||
wl_display.sync request immediately after binding to ensure that they
|
||||
receive all the capability events.
|
||||
</description>
|
||||
<arg name="capability" type="uint"/>
|
||||
</event>
|
||||
|
||||
<enum name="present_method">
|
||||
<description summary="different method to set the surface fullscreen">
|
||||
Hints to indicate to the compositor how to deal with a conflict
|
||||
between the dimensions of the surface and the dimensions of the
|
||||
output. The compositor is free to ignore this parameter.
|
||||
</description>
|
||||
<entry name="default" value="0" summary="no preference, apply default policy"/>
|
||||
<entry name="center" value="1" summary="center the surface on the output"/>
|
||||
<entry name="zoom" value="2" summary="scale the surface, preserving aspect ratio, to the largest size that will fit on the output" />
|
||||
<entry name="zoom_crop" value="3" summary="scale the surface, preserving aspect ratio, to fully fill the output cropping if needed" />
|
||||
<entry name="stretch" value="4" summary="scale the surface to the size of the output ignoring aspect ratio" />
|
||||
</enum>
|
||||
|
||||
<request name="present_surface">
|
||||
<description summary="present surface for display">
|
||||
Present a surface on the given output.
|
||||
|
||||
If the output is null, the compositor will present the surface on
|
||||
whatever display (or displays) it thinks best. In particular, this
|
||||
may replace any or all surfaces currently presented so it should
|
||||
not be used in combination with placing surfaces on specific
|
||||
outputs.
|
||||
|
||||
The method parameter is a hint to the compositor for how the surface
|
||||
is to be presented. In particular, it tells the compostior how to
|
||||
handle a size mismatch between the presented surface and the
|
||||
output. The compositor is free to ignore this parameter.
|
||||
|
||||
The "zoom", "zoom_crop", and "stretch" methods imply a scaling
|
||||
operation on the surface. This will override any kind of output
|
||||
scaling, so the buffer_scale property of the surface is effectively
|
||||
ignored.
|
||||
</description>
|
||||
<arg name="surface" type="object" interface="wl_surface" allow-null="true"/>
|
||||
<arg name="method" type="uint"/>
|
||||
<arg name="output" type="object" interface="wl_output" allow-null="true"/>
|
||||
</request>
|
||||
|
||||
<request name="present_surface_for_mode">
|
||||
<description summary="present surface for display at a particular mode">
|
||||
Presents a surface on the given output for a particular mode.
|
||||
|
||||
If the current size of the output differs from that of the surface,
|
||||
the compositor will attempt to change the size of the output to
|
||||
match the surface. The result of the mode-switch operation will be
|
||||
returned via the provided wl_fullscreen_shell_mode_feedback object.
|
||||
|
||||
If the current output mode matches the one requested or if the
|
||||
compositor successfully switches the mode to match the surface,
|
||||
then the mode_successful event will be sent and the output will
|
||||
contain the contents of the given surface. If the compositor
|
||||
cannot match the output size to the surface size, the mode_failed
|
||||
will be sent and the output will contain the contents of the
|
||||
previously presented surface (if any). If another surface is
|
||||
presented on the given output before either of these has a chance
|
||||
to happen, the present_cancelled event will be sent.
|
||||
|
||||
Due to race conditions and other issues unknown to the client, no
|
||||
mode-switch operation is guaranteed to succeed. However, if the
|
||||
mode is one advertised by wl_output.mode or if the compositor
|
||||
advertises the ARBITRARY_MODES capability, then the client should
|
||||
expect that the mode-switch operation will usually succeed.
|
||||
|
||||
If the size of the presented surface changes, the resulting output
|
||||
is undefined. The compositor may attempt to change the output mode
|
||||
to compensate. However, there is no guarantee that a suitable mode
|
||||
will be found and the client has no way to be notified of success
|
||||
or failure.
|
||||
|
||||
The framerate parameter specifies the desired framerate for the
|
||||
output in mHz. The compositor is free to ignore this parameter. A
|
||||
value of 0 indicates that the client has no preference.
|
||||
|
||||
If the value of wl_output.scale differs from wl_surface.buffer_scale,
|
||||
then the compositor may choose a mode that matches either the buffer
|
||||
size or the surface size. In either case, the surface will fill the
|
||||
output.
|
||||
</description>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
<arg name="output" type="object" interface="wl_output"/>
|
||||
<arg name="framerate" type="int"/>
|
||||
<arg name="feedback" type="new_id" interface="_wl_fullscreen_shell_mode_feedback"/>
|
||||
</request>
|
||||
|
||||
<enum name="error">
|
||||
<description summary="wl_fullscreen_shell error values">
|
||||
These errors can be emitted in response to wl_fullscreen_shell requests
|
||||
</description>
|
||||
<entry name="invalid_method" value="0" summary="present_method is not known"/>
|
||||
</enum>
|
||||
</interface>
|
||||
|
||||
<interface name="_wl_fullscreen_shell_mode_feedback" version="1">
|
||||
<event name="mode_successful">
|
||||
<description summary="mode switch succeeded">
|
||||
This event indicates that the attempted mode switch operation was
|
||||
successful. A surface of the size requested in the mode switch
|
||||
will fill the output without scaling.
|
||||
|
||||
Upon receiving this event, the client should destroy the
|
||||
wl_fullscreen_shell_mode_feedback object.
|
||||
</description>
|
||||
</event>
|
||||
<event name="mode_failed">
|
||||
<description summary="mode switch failed">
|
||||
This event indicates that the attempted mode switch operation
|
||||
failed. This may be because the requested output mode is not
|
||||
possible or it may mean that the compositor does not want to allow it.
|
||||
|
||||
Upon receiving this event, the client should destroy the
|
||||
wl_fullscreen_shell_mode_feedback object.
|
||||
</description>
|
||||
</event>
|
||||
<event name="present_cancelled">
|
||||
<description summary="mode switch cancelled">
|
||||
This event indicates that the attempted mode switch operation was
|
||||
cancelled. Most likely this is because the client requested a
|
||||
second mode switch before the first one completed.
|
||||
|
||||
Upon receiving this event, the client should destroy the
|
||||
wl_fullscreen_shell_mode_feedback object.
|
||||
</description>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="idle">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2015 Martin Gräßlin
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_idle" version="1">
|
||||
<description summary="User idle time manager">
|
||||
This interface allows to monitor user idle time on a given seat. The interface
|
||||
allows to register timers which trigger after no user activity was registered
|
||||
on the seat for a given interval. It notifies when user activity resumes.
|
||||
|
||||
This is useful for applications wanting to perform actions when the user is not
|
||||
interacting with the system, e.g. chat applications setting the user as away, power
|
||||
management features to dim screen, etc..
|
||||
</description>
|
||||
<request name="get_idle_timeout">
|
||||
<arg name="id" type="new_id" interface="org_kde_kwin_idle_timeout"/>
|
||||
<arg name="seat" type="object" interface="wl_seat"/>
|
||||
<arg name="timeout" type="uint" summary="The idle timeout in msec"/>
|
||||
</request>
|
||||
</interface>
|
||||
<interface name="org_kde_kwin_idle_timeout" version="1">
|
||||
<request name="release" type="destructor">
|
||||
<description summary="release the timeout object"/>
|
||||
</request>
|
||||
<request name="simulate_user_activity">
|
||||
<description summary="Simulates user activity for this timeout, behaves just like real user activity on the seat"/>
|
||||
</request>
|
||||
<event name="idle">
|
||||
<description summary="Triggered when there has not been any user activity in the requested idle time interval"/>
|
||||
</event>
|
||||
<event name="resumed">
|
||||
<description summary="Triggered on the first user activity after an idle event"/>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="kde_external_brightness_v1">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2024 Xaver Hugl <xaver.hugl@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: MIT-CMU
|
||||
]]></copyright>
|
||||
|
||||
<interface name="kde_external_brightness_v1" version="2">
|
||||
<description summary="external brightness control">
|
||||
Some brightness control mechanisms are somewhat unstable, or require root
|
||||
privileges, so putting them inside of the compositor is not desired.
|
||||
This protocol is for outsourcing the actual brightness-setting to a
|
||||
process outside of the compositor.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="Destroy the object."/>
|
||||
</request>
|
||||
|
||||
<request name="create_brightness_control">
|
||||
<description summary="registers a brightness device with the compositor"/>
|
||||
<arg name="id" type="new_id" interface="kde_external_brightness_device_v1"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="kde_external_brightness_device_v1" version="2">
|
||||
<description summary="brightness control device">
|
||||
After creating this object, the client should issue all relevant setup requests
|
||||
(set_internal, set_edid, set_max_brightness, optionally set_observed_brightness)
|
||||
and finish the sequence with commit.
|
||||
Afterwards, for each change in values, the client must call commit again.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the object and unregister the brightness control device"/>
|
||||
</request>
|
||||
|
||||
<request name="set_internal">
|
||||
<description summary="sets whether or not the brightness device belongs to an internal display"/>
|
||||
<arg name="internal" type="uint" summary="1 if it's an internal panel, 0 if not"/>
|
||||
</request>
|
||||
|
||||
<request name="set_edid">
|
||||
<description summary="set the EDID data for identification of the display"/>
|
||||
<arg name="string" type="string" summary="base-64 encoded string of the first 128 bytes of the EDID"/>
|
||||
</request>
|
||||
|
||||
<request name="set_max_brightness">
|
||||
<description summary="notifies the compositor of the maximum brightness that can be set on this device"/>
|
||||
<arg name="value" type="uint" summary="the maximum value that can be set"/>
|
||||
</request>
|
||||
|
||||
<request name="commit">
|
||||
<description summary="notifies the compositor that all relevant identifiers and values have been sent"/>
|
||||
</request>
|
||||
|
||||
<event name="requested_brightness">
|
||||
<description summary="requests the client to change the brightness to this value">
|
||||
The client must ensure that if the brightness level changes due to external factors,
|
||||
that it either overwrites those changes with what the compositor last requested,
|
||||
or commit again with set_observed_brightness specifying the changed brightness.
|
||||
</description>
|
||||
<arg name="value" type="uint" summary="the value to set the device to"/>
|
||||
</event>
|
||||
|
||||
<request name="set_observed_brightness" since="2">
|
||||
<description summary="notifies the compositor of the brightness that was read from this device">
|
||||
The client can set this to notify the compositor of the device's initial brightness.
|
||||
It can also set this again after the initial commit to notify the compositor that
|
||||
the brightness level has changed due to external factors.
|
||||
The compositor is free to use or ignore this value as it sees fit.
|
||||
</description>
|
||||
<arg name="value" type="uint" summary="the observed value that was read"/>
|
||||
</request>
|
||||
|
||||
</interface>
|
||||
</protocol>
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="kde_lockscreen_overlay_v1">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2022 Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
|
||||
<interface name="kde_lockscreen_overlay_v1" version="1">
|
||||
<description summary="Allow surfaces over the lockscreen">
|
||||
Allows a client to request a surface to be visible when the system is locked.
|
||||
|
||||
This is meant to be used for specific high urgency cases like phone calls or alarms.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="invalid_surface_state" value="0" summary="the client provided an invalid surface state"/>
|
||||
</enum>
|
||||
|
||||
<request name="allow">
|
||||
<description summary="Tell about which surface could be raised above the lockscreen">
|
||||
Informs the compositor that the surface could be shown when the screen is locked. This request should be called while the surface is unmapped.
|
||||
</description>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="Destroy the kde_lockscreen_overlay_v1">
|
||||
This won't affect the surface previously marked with the allow request.
|
||||
</description>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
+453
@@ -0,0 +1,453 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="kde_output_device_v2">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2008-2011 Kristian Høgsberg
|
||||
SPDX-FileCopyrightText: 2010-2011 Intel Corporation
|
||||
SPDX-FileCopyrightText: 2012-2013 Collabora, Ltd.
|
||||
SPDX-FileCopyrightText: 2015 Sebastian Kügler <sebas@kde.org>
|
||||
SPDX-FileCopyrightText: 2021 Méven Car <meven.car@enioka.com>
|
||||
|
||||
SPDX-License-Identifier: MIT-CMU
|
||||
]]></copyright>
|
||||
|
||||
|
||||
<interface name="kde_output_device_v2" version="11">
|
||||
<description summary="output configuration representation">
|
||||
An output device describes a display device available to the compositor.
|
||||
output_device is similar to wl_output, but focuses on output
|
||||
configuration management.
|
||||
|
||||
A client can query all global output_device objects to enlist all
|
||||
available display devices, even those that may currently not be
|
||||
represented by the compositor as a wl_output.
|
||||
|
||||
The client sends configuration changes to the server through the
|
||||
outputconfiguration interface, and the server applies the configuration
|
||||
changes to the hardware and signals changes to the output devices
|
||||
accordingly.
|
||||
|
||||
This object is published as global during start up for every available
|
||||
display devices, or when one later becomes available, for example by
|
||||
being hotplugged via a physical connector.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
|
||||
<enum name="subpixel">
|
||||
<description summary="subpixel geometry information">
|
||||
This enumeration describes how the physical pixels on an output are
|
||||
laid out.
|
||||
</description>
|
||||
<entry name="unknown" value="0"/>
|
||||
<entry name="none" value="1"/>
|
||||
<entry name="horizontal_rgb" value="2"/>
|
||||
<entry name="horizontal_bgr" value="3"/>
|
||||
<entry name="vertical_rgb" value="4"/>
|
||||
<entry name="vertical_bgr" value="5"/>
|
||||
</enum>
|
||||
|
||||
<enum name="transform">
|
||||
<description summary="transform from framebuffer to output">
|
||||
This describes the transform, that a compositor will apply to a
|
||||
surface to compensate for the rotation or mirroring of an
|
||||
output device.
|
||||
|
||||
The flipped values correspond to an initial flip around a
|
||||
vertical axis followed by rotation.
|
||||
|
||||
The purpose is mainly to allow clients to render accordingly and
|
||||
tell the compositor, so that for fullscreen surfaces, the
|
||||
compositor is still able to scan out directly client surfaces.
|
||||
</description>
|
||||
|
||||
<entry name="normal" value="0"/>
|
||||
<entry name="90" value="1"/>
|
||||
<entry name="180" value="2"/>
|
||||
<entry name="270" value="3"/>
|
||||
<entry name="flipped" value="4"/>
|
||||
<entry name="flipped_90" value="5"/>
|
||||
<entry name="flipped_180" value="6"/>
|
||||
<entry name="flipped_270" value="7"/>
|
||||
</enum>
|
||||
|
||||
<event name="geometry">
|
||||
<description summary="geometric properties of the output">
|
||||
The geometry event describes geometric properties of the output.
|
||||
The event is sent when binding to the output object and whenever
|
||||
any of the properties change.
|
||||
</description>
|
||||
<arg name="x" type="int"
|
||||
summary="x position within the global compositor space"/>
|
||||
<arg name="y" type="int"
|
||||
summary="y position within the global compositor space"/>
|
||||
<arg name="physical_width" type="int"
|
||||
summary="width in millimeters of the output"/>
|
||||
<arg name="physical_height" type="int"
|
||||
summary="height in millimeters of the output"/>
|
||||
<arg name="subpixel" type="int"
|
||||
summary="subpixel orientation of the output"/>
|
||||
<arg name="make" type="string"
|
||||
summary="textual description of the manufacturer"/>
|
||||
<arg name="model" type="string"
|
||||
summary="textual description of the model"/>
|
||||
<arg name="transform" type="int"
|
||||
summary="transform that maps framebuffer to output"/>
|
||||
</event>
|
||||
|
||||
<event name="current_mode">
|
||||
<description summary="current mode">
|
||||
This event describes the mode currently in use for this head. It is only
|
||||
sent if the output is enabled.
|
||||
</description>
|
||||
<arg name="mode" type="object" interface="kde_output_device_mode_v2"/>
|
||||
</event>
|
||||
|
||||
<event name="mode">
|
||||
<description summary="advertise available output modes and current one">
|
||||
The mode event describes an available mode for the output.
|
||||
|
||||
When the client binds to the output_device object, the server sends this
|
||||
event once for every available mode the output_device can be operated by.
|
||||
|
||||
There will always be at least one event sent out on initial binding,
|
||||
which represents the current mode.
|
||||
|
||||
Later if an output changes, its mode event is sent again for the
|
||||
eventual added modes and lastly the current mode. In other words, the
|
||||
current mode is always represented by the latest event sent with the current
|
||||
flag set.
|
||||
|
||||
The size of a mode is given in physical hardware units of the output device.
|
||||
This is not necessarily the same as the output size in the global compositor
|
||||
space. For instance, the output may be scaled, as described in
|
||||
kde_output_device_v2.scale, or transformed, as described in
|
||||
kde_output_device_v2.transform.
|
||||
</description>
|
||||
<arg name="mode" type="new_id" interface="kde_output_device_mode_v2"/>
|
||||
</event>
|
||||
|
||||
<event name="done">
|
||||
<description summary="sent all information about output">
|
||||
This event is sent after all other properties have been
|
||||
sent on binding to the output object as well as after any
|
||||
other output property change have been applied later on.
|
||||
This allows to see changes to the output properties as atomic,
|
||||
even if multiple events successively announce them.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="scale">
|
||||
<description summary="output scaling properties">
|
||||
This event contains scaling geometry information
|
||||
that is not in the geometry event. It may be sent after
|
||||
binding the output object or if the output scale changes
|
||||
later. If it is not sent, the client should assume a
|
||||
scale of 1.
|
||||
|
||||
A scale larger than 1 means that the compositor will
|
||||
automatically scale surface buffers by this amount
|
||||
when rendering. This is used for high resolution
|
||||
displays where applications rendering at the native
|
||||
resolution would be too small to be legible.
|
||||
|
||||
It is intended that scaling aware clients track the
|
||||
current output of a surface, and if it is on a scaled
|
||||
output it should use wl_surface.set_buffer_scale with
|
||||
the scale of the output. That way the compositor can
|
||||
avoid scaling the surface, and the client can supply
|
||||
a higher detail image.
|
||||
</description>
|
||||
<arg name="factor" type="fixed" summary="scaling factor of output"/>
|
||||
</event>
|
||||
|
||||
<event name="edid">
|
||||
<description summary="advertise EDID data for the output">
|
||||
The edid event encapsulates the EDID data for the outputdevice.
|
||||
|
||||
The event is sent when binding to the output object. The EDID
|
||||
data may be empty, in which case this event is sent anyway.
|
||||
If the EDID information is empty, you can fall back to the name
|
||||
et al. properties of the outputdevice.
|
||||
</description>
|
||||
<arg name="raw" type="string" summary="base64-encoded EDID string"/>
|
||||
</event>
|
||||
|
||||
<event name="enabled">
|
||||
<description summary="output is enabled or disabled">
|
||||
The enabled event notifies whether this output is currently
|
||||
enabled and used for displaying content by the server.
|
||||
The event is sent when binding to the output object and
|
||||
whenever later on an output changes its state by becoming
|
||||
enabled or disabled.
|
||||
</description>
|
||||
<arg name="enabled" type="int" summary="output enabled state"/>
|
||||
</event>
|
||||
|
||||
<event name="uuid">
|
||||
<description summary="A unique id for this outputdevice">
|
||||
The uuid can be used to identify the output. It's controlled by
|
||||
the server entirely. The server should make sure the uuid is
|
||||
persistent across restarts. An empty uuid is considered invalid.
|
||||
</description>
|
||||
<arg name="uuid" type="string" summary="output devices ID"/>
|
||||
</event>
|
||||
|
||||
<event name="serial_number">
|
||||
<description summary="Serial Number">
|
||||
Serial ID of the monitor, sent on startup before the first done event.
|
||||
</description>
|
||||
<arg name="serialNumber" type="string"
|
||||
summary="textual representation of serial number"/>
|
||||
</event>
|
||||
<event name="eisa_id">
|
||||
<description summary="EISA ID">
|
||||
EISA ID of the monitor, sent on startup before the first done event.
|
||||
</description>
|
||||
<arg name="eisaId" type="string"
|
||||
summary="textual representation of EISA identifier"/>
|
||||
</event>
|
||||
|
||||
<enum name="capability" bitfield="true">
|
||||
<description summary="describes capabilities of the outputdevice">
|
||||
Describes what capabilities this device has.
|
||||
</description>
|
||||
<entry name="overscan" value="0x1"
|
||||
summary="if this output_device can use overscan"/>
|
||||
<entry name="vrr" value="0x2"
|
||||
summary="if this outputdevice supports variable refresh rate"/>
|
||||
<entry name="rgb_range" value="0x4"
|
||||
summary="if setting the rgb range is possible"/>
|
||||
<entry name="high_dynamic_range" value="0x8" since="3"
|
||||
summary="if this outputdevice supports high dynamic range"/>
|
||||
<entry name="wide_color_gamut" value="0x10" since="3"
|
||||
summary="if this outputdevice supports a wide color gamut"/>
|
||||
<entry name="auto_rotate" value="0x20" since="4"
|
||||
summary="if this outputdevice supports autorotation"/>
|
||||
<entry name="icc_profile" value="0x40" since="5"
|
||||
summary="if this outputdevice supports icc profiles"/>
|
||||
<entry name="brightness" value="0x80" since="9"
|
||||
summary="if this outputdevice supports the brightness setting"/>
|
||||
</enum>
|
||||
|
||||
<event name="capabilities">
|
||||
<description summary="capability flags">
|
||||
What capabilities this device has, sent on startup before the first
|
||||
done event.
|
||||
</description>
|
||||
<arg name="flags" type="uint" enum="capability"/>
|
||||
</event>
|
||||
|
||||
<event name="overscan">
|
||||
<description summary="overscan">
|
||||
Overscan value of the monitor in percent, sent on startup before the
|
||||
first done event.
|
||||
</description>
|
||||
<arg name="overscan" type="uint"
|
||||
summary="amount of overscan of the monitor"/>
|
||||
</event>
|
||||
|
||||
<enum name="vrr_policy">
|
||||
<description summary="describes vrr policy">
|
||||
Describes when the compositor may employ variable refresh rate
|
||||
</description>
|
||||
<entry name="never" value="0"/>
|
||||
<entry name="always" value="1"/>
|
||||
<entry name="automatic" value="2"/>
|
||||
</enum>
|
||||
|
||||
<event name="vrr_policy">
|
||||
<description summary="Variable Refresh Rate Policy">
|
||||
What policy the compositor will employ regarding its use of variable
|
||||
refresh rate.
|
||||
</description>
|
||||
<arg name="vrr_policy" type="uint" enum="vrr_policy"/>
|
||||
</event>
|
||||
|
||||
<enum name="rgb_range">
|
||||
<description summary="describes RGB range policy">
|
||||
Whether full or limited color range should be used
|
||||
</description>
|
||||
<entry name="automatic" value="0"/>
|
||||
<entry name="full" value="1"/>
|
||||
<entry name="limited" value="2"/>
|
||||
</enum>
|
||||
|
||||
<event name="rgb_range">
|
||||
<description summary="RGB range">
|
||||
What rgb range the compositor is using for this output
|
||||
</description>
|
||||
<arg name="rgb_range" type="uint" enum="rgb_range"/>
|
||||
</event>
|
||||
|
||||
<event name="name" since="2">
|
||||
<description summary="Output's name">
|
||||
Name of the output, it's useful to cross-reference to an zxdg_output_v1 and ultimately QScreen
|
||||
</description>
|
||||
<arg name="name" type="string"/>
|
||||
</event>
|
||||
|
||||
<event name="high_dynamic_range" since="3">
|
||||
<description summary="if HDR is enabled">
|
||||
Whether or not high dynamic range is enabled for this output
|
||||
</description>
|
||||
<arg name="hdr_enabled" type="uint" summary="1 if enabled, 0 if disabled"/>
|
||||
</event>
|
||||
|
||||
<event name="sdr_brightness" since="3">
|
||||
<description summary="the brightness of sdr if hdr is enabled">
|
||||
If high dynamic range is used, this value defines the brightness in nits for content
|
||||
that's in standard dynamic range format. Note that while the value is in nits, that
|
||||
doesn't necessarily translate to the same brightness on the screen.
|
||||
</description>
|
||||
<arg name="sdr_brightness" type="uint"/>
|
||||
</event>
|
||||
|
||||
<event name="wide_color_gamut" since="3">
|
||||
<description summary="if WCG is enabled">
|
||||
Whether or not the use of a wide color gamut is enabled for this output
|
||||
</description>
|
||||
<arg name="wcg_enabled" type="uint" summary="1 if enabled, 0 if disabled"/>
|
||||
</event>
|
||||
|
||||
<enum name="auto_rotate_policy">
|
||||
<description summary="describes when auto rotate should be used"/>
|
||||
<entry name="never" value="0"/>
|
||||
<entry name="in_tablet_mode" value="1"/>
|
||||
<entry name="always" value="2"/>
|
||||
</enum>
|
||||
|
||||
<event name="auto_rotate_policy" since="4">
|
||||
<description summary="describes when auto rotate is used"/>
|
||||
<arg name="policy" type="uint" enum="auto_rotate_policy"/>
|
||||
</event>
|
||||
|
||||
<event name="icc_profile_path" since="5">
|
||||
<description summary="describes when auto rotate is used"/>
|
||||
<arg name="profile_path" type="string"/>
|
||||
</event>
|
||||
|
||||
<event name="brightness_metadata" since="6">
|
||||
<description summary="metadata about the screen's brightness limits"/>
|
||||
<arg name="max_peak_brightness" type="uint" summary="in nits"/>
|
||||
<arg name="max_frame_average_brightness" type="uint" summary="in nits"/>
|
||||
<arg name="min_brightness" type="uint" summary="in 0.0001 nits"/>
|
||||
</event>
|
||||
|
||||
<event name="brightness_overrides" since="6">
|
||||
<description summary="overrides for the screen's brightness limits"/>
|
||||
<arg name="max_peak_brightness" type="int" summary="-1 for no override, positive values are the brightness in nits"/>
|
||||
<arg name="max_average_brightness" type="int" summary="-1 for no override, positive values are the brightness in nits"/>
|
||||
<arg name="min_brightness" type="int" summary="-1 for no override, positive values are the brightness in 0.0001 nits"/>
|
||||
</event>
|
||||
|
||||
<event name="sdr_gamut_wideness" since="6">
|
||||
<description summary="describes which gamut is assumed for sRGB applications">
|
||||
This can be used to provide the colors users assume sRGB applications should have based on the
|
||||
default experience on many modern sRGB screens.
|
||||
</description>
|
||||
<arg name="gamut_wideness" type="uint" summary="0 means rec.709 primaries, 10000 means native primaries"/>
|
||||
</event>
|
||||
|
||||
<enum name="color_profile_source" since="7">
|
||||
<description summary="which source the compositor should use for the color profile on an output"/>
|
||||
<entry name="sRGB" value="0"/>
|
||||
<entry name="ICC" value="1"/>
|
||||
<entry name="EDID" value="2"/>
|
||||
</enum>
|
||||
|
||||
<event name="color_profile_source" since="7">
|
||||
<description summary="describes which source the compositor uses for the color profile on an output"/>
|
||||
<arg name="source" type="uint" enum="color_profile_source"/>
|
||||
</event>
|
||||
|
||||
<event name="brightness" since="8">
|
||||
<description summary="brightness multiplier">
|
||||
This is the brightness modifier of the output. It doesn't specify
|
||||
any absolute values, but is merely a multiplier on top of other
|
||||
brightness values, like sdr_brightness and brightness_metadata.
|
||||
0 is the minimum brightness (not completely dark) and 10000 is
|
||||
the maximum brightness.
|
||||
This is currently only supported / meaningful while HDR is active.
|
||||
</description>
|
||||
<arg name="brightness" type="uint" summary="brightness in 0-10000"/>
|
||||
</event>
|
||||
|
||||
<enum name="color_power_tradeoff">
|
||||
<description summary="tradeoff between power and accuracy">
|
||||
The compositor can do a lot of things that trade between
|
||||
performance, power and color accuracy. This setting describes
|
||||
a high level preference from the user about in which direction
|
||||
that tradeoff should be made.
|
||||
</description>
|
||||
<entry name="efficiency" value="0" summary="prefer efficiency and performance"/>
|
||||
<entry name="accuracy" value="1" summary="prefer accuracy"/>
|
||||
</enum>
|
||||
|
||||
<event name="color_power_tradeoff" since="10">
|
||||
<description summary="the preferred color/power tradeoff"/>
|
||||
<arg name="preference" type="uint" enum="color_power_tradeoff"/>
|
||||
</event>
|
||||
|
||||
<event name="dimming" since="11">
|
||||
<description summary="dimming multiplier">
|
||||
This is the dimming multiplier of the output. This is similar to
|
||||
the brightness setting, except it's meant to be a temporary setting
|
||||
only, not persistent and may be implemented differently depending
|
||||
on the display.
|
||||
0 is the minimum dimming factor (not completely dark) and 10000
|
||||
means the output is not dimmed.
|
||||
</description>
|
||||
<arg name="multiplier" type="uint" summary="multiplier in 0-10000"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="kde_output_device_mode_v2" version="1">
|
||||
<description summary="output mode">
|
||||
This object describes an output mode.
|
||||
|
||||
Some heads don't support output modes, in which case modes won't be
|
||||
advertised.
|
||||
|
||||
Properties sent via this interface are applied atomically via the
|
||||
kde_output_device.done event. No guarantees are made regarding the order
|
||||
in which properties are sent.
|
||||
</description>
|
||||
|
||||
<event name="size">
|
||||
<description summary="mode size">
|
||||
This event describes the mode size. The size is given in physical
|
||||
hardware units of the output device. This is not necessarily the same as
|
||||
the output size in the global compositor space. For instance, the output
|
||||
may be scaled or transformed.
|
||||
</description>
|
||||
<arg name="width" type="int" summary="width of the mode in hardware units"/>
|
||||
<arg name="height" type="int" summary="height of the mode in hardware units"/>
|
||||
</event>
|
||||
|
||||
<event name="refresh">
|
||||
<description summary="mode refresh rate">
|
||||
This event describes the mode's fixed vertical refresh rate. It is only
|
||||
sent if the mode has a fixed refresh rate.
|
||||
</description>
|
||||
<arg name="refresh" type="int" summary="vertical refresh rate in mHz"/>
|
||||
</event>
|
||||
|
||||
<event name="preferred">
|
||||
<description summary="mode is preferred">
|
||||
This event advertises this mode as preferred.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="removed">
|
||||
<description summary="the mode has been destroyed">
|
||||
The compositor will destroy the object immediately after sending this
|
||||
event, so it will become invalid and the client should release any
|
||||
resources associated with it.
|
||||
</description>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
</protocol>
|
||||
+355
@@ -0,0 +1,355 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="kde_output_management_v2">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2008-2011 Kristian Høgsberg
|
||||
SPDX-FileCopyrightText: 2010-2011 Intel Corporation
|
||||
SPDX-FileCopyrightText: 2012-2013 Collabora, Ltd.
|
||||
SPDX-FileCopyrightText: 2015 Sebastian Kügler <sebas@kde.org>
|
||||
SPDX-FileCopyrightText: 2021 Méven Car <meven.car@enioka.com>
|
||||
SPDX-FileCopyrightText: 2023 Xaver Hugl <xaver.hugl@kde.org>
|
||||
|
||||
SPDX-License-Identifier: MIT-CMU
|
||||
]]></copyright>
|
||||
|
||||
<interface name="kde_output_management_v2" version="12">
|
||||
<description summary="configuration of server outputs through clients">
|
||||
This interface enables clients to set properties of output devices for screen
|
||||
configuration purposes via the server. To this end output devices are referenced
|
||||
by global kde_output_device_v2 objects.
|
||||
|
||||
outputmanagement (wl_global)
|
||||
--------------------------
|
||||
request:
|
||||
* create_configuration -> outputconfiguration (wl_resource)
|
||||
|
||||
outputconfiguration (wl_resource)
|
||||
--------------------------
|
||||
requests:
|
||||
* enable(outputdevice, bool)
|
||||
* mode(outputdevice, mode)
|
||||
* transformation(outputdevice, flag)
|
||||
* position(outputdevice, x, y)
|
||||
* apply
|
||||
|
||||
events:
|
||||
* applied
|
||||
* failed
|
||||
|
||||
The server registers one outputmanagement object as a global object. In order
|
||||
to configure outputs a client requests create_configuration, which provides a
|
||||
resource referencing an outputconfiguration for one-time configuration. That
|
||||
way the server knows which requests belong together and can group them by that.
|
||||
|
||||
On the outputconfiguration object the client calls for each output whether the
|
||||
output should be enabled, which mode should be set (by referencing the mode from
|
||||
the list of announced modes) and the output's global position. Once all outputs
|
||||
are configured that way, the client calls apply.
|
||||
At that point and not earlier the server should try to apply the configuration.
|
||||
If this succeeds the server emits the applied signal, otherwise the failed
|
||||
signal, such that the configuring client is noticed about the success of its
|
||||
configuration request.
|
||||
|
||||
Through this design the interface enables atomic output configuration changes if
|
||||
internally supported by the server.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment implementation
|
||||
detail. Regular clients must not use this protocol. Backward incompatible
|
||||
changes may be added without bumping the major version of the extension.
|
||||
</description>
|
||||
<request name="create_configuration">
|
||||
<description summary="provide outputconfiguration object for configuring outputs">
|
||||
Request an outputconfiguration object through which the client can configure
|
||||
output devices.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="kde_output_configuration_v2"/>
|
||||
</request>
|
||||
|
||||
</interface>
|
||||
|
||||
<interface name="kde_output_configuration_v2" version="12">
|
||||
<description summary="configure single output devices">
|
||||
outputconfiguration is a client-specific resource that can be used to ask
|
||||
the server to apply changes to available output devices.
|
||||
|
||||
The client receives a list of output devices from the registry. When it wants
|
||||
to apply new settings, it creates a configuration object from the
|
||||
outputmanagement global, writes changes through this object's enable, scale,
|
||||
transform and mode calls. It then asks the server to apply these settings in
|
||||
an atomic fashion, for example through Linux' DRM interface.
|
||||
|
||||
The server signals back whether the new settings have applied successfully
|
||||
or failed to apply. outputdevice objects are updated after the changes have been
|
||||
applied to the hardware and before the server side sends the applied event.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<description summary="kde_output_configuration_v2 error values">
|
||||
These error can be emitted in response to kde_output_configuration_v2 requests.
|
||||
</description>
|
||||
<entry name="already_applied" value="0" summary="the config is already applied"/>
|
||||
</enum>
|
||||
|
||||
<request name="enable">
|
||||
<description summary="enable or disable an output">
|
||||
Mark the output as enabled or disabled.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice to be en- or disabled"/>
|
||||
<arg name="enable" type="int" summary="1 to enable or 0 to disable this output"/>
|
||||
</request>
|
||||
|
||||
<request name="mode">
|
||||
<description summary="switch output-device to mode">
|
||||
Sets the mode for a given output.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this mode change applies to"/>
|
||||
<arg name="mode" type="object" interface="kde_output_device_mode_v2" summary="the mode to apply"/>
|
||||
</request>
|
||||
|
||||
<request name="transform">
|
||||
<description summary="transform output-device">
|
||||
Sets the transformation for a given output.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this transformation change applies to"/>
|
||||
<arg name="transform" type="int" summary="transform enum"/>
|
||||
</request>
|
||||
|
||||
<request name="position">
|
||||
<description summary="position output in global space">
|
||||
Sets the position for this output device. (x,y) describe the top-left corner
|
||||
of the output in global space, whereby the origin (0,0) of the global space
|
||||
has to be aligned with the top-left corner of the most left and in case this
|
||||
does not define a single one the top output.
|
||||
|
||||
There may be no gaps or overlaps between outputs, i.e. the outputs are
|
||||
stacked horizontally, vertically, or both on each other.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this position applies to"/>
|
||||
<arg name="x" type="int" summary="position on the x-axis"/>
|
||||
<arg name="y" type="int" summary="position on the y-axis"/>
|
||||
</request>
|
||||
|
||||
<request name="scale">
|
||||
<description summary="set scaling factor of this output">
|
||||
Sets the scaling factor for this output device.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this scale change applies to"/>
|
||||
<arg name="scale" type="fixed" summary="scaling factor"/>
|
||||
</request>
|
||||
|
||||
<request name="apply">
|
||||
<description summary="apply configuration changes to all output devices">
|
||||
Asks the server to apply property changes requested through this outputconfiguration
|
||||
object to all outputs on the server side.
|
||||
|
||||
The output configuration can be applied only once. The already_applied protocol error
|
||||
will be posted if the apply request is called the second time.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="applied">
|
||||
<description summary="configuration changes have been applied">
|
||||
Sent after the server has successfully applied the changes.
|
||||
.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="failed">
|
||||
<description summary="configuration changes failed to apply">
|
||||
Sent if the server rejects the changes or failed to apply them.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="release the outputconfiguration object"/>
|
||||
</request>
|
||||
|
||||
<request name="overscan">
|
||||
<description summary="set overscan value">
|
||||
Set the overscan value of this output device with a value in percent.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice overscan applies to"/>
|
||||
<arg name="overscan" type="uint" summary="overscan value"/>
|
||||
</request>
|
||||
|
||||
<enum name="vrr_policy">
|
||||
<description summary="describes vrr policy">
|
||||
Describes when the compositor may employ variable refresh rate
|
||||
</description>
|
||||
<entry name="never" value="0"/>
|
||||
<entry name="always" value="1"/>
|
||||
<entry name="automatic" value="2"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_vrr_policy">
|
||||
<description summary="set the VRR policy">
|
||||
Set what policy the compositor should employ regarding its use of
|
||||
variable refresh rate.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this VRR policy applies to"/>
|
||||
<arg name="policy" type="uint" enum="vrr_policy" summary="the vrr policy to apply"/>
|
||||
</request>
|
||||
|
||||
<enum name="rgb_range">
|
||||
<description summary="describes RGB range policy">
|
||||
Whether this output should use full or limited rgb.
|
||||
</description>
|
||||
<entry name="automatic" value="0"/>
|
||||
<entry name="full" value="1"/>
|
||||
<entry name="limited" value="2"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_rgb_range">
|
||||
<description summary="RGB range">
|
||||
Whether full or limited color range should be used
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice the rgb range applies to"/>
|
||||
<arg name="rgb_range" type="uint" enum="rgb_range"/>
|
||||
</request>
|
||||
|
||||
<request name="set_primary_output" since="2">
|
||||
<description summary="Select which primary output to use" />
|
||||
<arg name="output" type="object" interface="kde_output_device_v2" allow-null="false"/>
|
||||
</request>
|
||||
|
||||
<request name="set_priority" since="3">
|
||||
<description summary="Set the order of outputs">
|
||||
The order of outputs can be used to assign desktop environment components to a specific screen,
|
||||
see kde_output_order_v1 for details. The priority is 1-based for outputs that will be enabled after
|
||||
this changeset is applied, all outputs that are disabled need to have the index set to zero.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice the index applies to" />
|
||||
<arg name="priority" type="uint" summary="the priority of the output" />
|
||||
</request>
|
||||
|
||||
<request name="set_high_dynamic_range" since="4">
|
||||
<description summary="change if HDR should be enabled">
|
||||
Sets whether or not the output should be set to HDR mode.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="enable_hdr" type="uint" summary="1 to enable, 0 to disable hdr"/>
|
||||
</request>
|
||||
|
||||
<request name="set_sdr_brightness" since="4">
|
||||
<description summary="set the brightness for sdr content">
|
||||
Sets the brightness of standard dynamic range content in nits. Only has an effect while the output is in HDR mode.
|
||||
Note that while the value is in nits, that doesn't necessarily translate to the same brightness on the screen.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="sdr_brightness" type="uint"/>
|
||||
</request>
|
||||
|
||||
<request name="set_wide_color_gamut" since="4">
|
||||
<description summary="change if a wide color gamut should be used">
|
||||
Whether or not the output should use a wide color gamut
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="enable_wcg" type="uint" summary="1 to enable, 0 to disable wcg"/>
|
||||
</request>
|
||||
|
||||
<enum name="auto_rotate_policy">
|
||||
<description summary="describes when auto rotate should be used"/>
|
||||
<entry name="never" value="0"/>
|
||||
<entry name="in_tablet_mode" value="1"/>
|
||||
<entry name="always" value="2"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_auto_rotate_policy" since="5">
|
||||
<description summary="change when auto rotate should be used"/>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="policy" type="uint" enum="auto_rotate_policy"/>
|
||||
</request>
|
||||
|
||||
<request name="set_icc_profile_path" since="6">
|
||||
<description summary="change the used icc profile"/>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="profile_path" type="string"/>
|
||||
</request>
|
||||
|
||||
<request name="set_brightness_overrides" since="7">
|
||||
<description summary="override metadata about the screen's brightness limits"/>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="max_peak_brightness" type="int" summary="-1 for not overriding, or positive values in nits"/>
|
||||
<arg name="max_frame_average_brightness" type="int" summary="-1 for not overriding, or positive values in nits"/>
|
||||
<arg name="min_brightness" type="int" summary="-1 for not overriding, or positive values in 0.0001 nits"/>
|
||||
</request>
|
||||
|
||||
<request name="set_sdr_gamut_wideness" since="7">
|
||||
<description summary="describes which gamut is assumed for sRGB applications">
|
||||
This can be used to provide the colors users assume sRGB applications should have based on the
|
||||
default experience on many modern sRGB screens.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="gamut_wideness" type="uint" summary="0 means rec.709 primaries, 10000 means native primaries"/>
|
||||
</request>
|
||||
|
||||
<enum name="color_profile_source" since="7">
|
||||
<description summary="which source the compositor should use for the color profile on an output"/>
|
||||
<entry name="sRGB" value="0"/>
|
||||
<entry name="ICC" value="1"/>
|
||||
<entry name="EDID" value="2"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_color_profile_source" since="8">
|
||||
<description summary="which source the compositor should use for the color profile on an output"/>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="color_profile_source" type="uint" enum="color_profile_source" summary="the color profile source"/>
|
||||
</request>
|
||||
|
||||
<request name="set_brightness" since="9">
|
||||
<description summary="brightness multiplier">
|
||||
Set the brightness modifier of the output. It doesn't specify
|
||||
any absolute values, but is merely a multiplier on top of other
|
||||
brightness values, like sdr_brightness and brightness_metadata.
|
||||
0 is the minimum brightness (not completely dark) and 10000 is
|
||||
the maximum brightness.
|
||||
This is supported while HDR is active in versions 8 and below,
|
||||
or when the device supports the brightness_control capability in
|
||||
versions 9 and above.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="brightness" type="uint" summary="brightness in 0-10000"/>
|
||||
</request>
|
||||
|
||||
<enum name="color_power_tradeoff">
|
||||
<description summary="tradeoff between power and accuracy">
|
||||
The compositor can do a lot of things that trade between
|
||||
performance, power and color accuracy. This setting describes
|
||||
a high level preference from the user about in which direction
|
||||
that tradeoff should be made.
|
||||
</description>
|
||||
<entry name="efficiency" value="0" summary="prefer efficiency and performance"/>
|
||||
<entry name="accuracy" value="1" summary="prefer accuracy"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_color_power_tradeoff" since="10">
|
||||
<description summary="set the preferred color/power tradeoff"/>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="preference" type="uint" enum="color_power_tradeoff"/>
|
||||
</request>
|
||||
|
||||
<request name="set_dimming" since="11">
|
||||
<description summary="dimming multiplier">
|
||||
Set the dimming multiplier of the output. This is similar to the
|
||||
brightness setting, except it's meant to be a temporary setting
|
||||
only, not persistent and may be implemented differently depending
|
||||
on the display.
|
||||
0 is the minimum dimming factor (not completely dark) and 10000
|
||||
means the output is not dimmed.
|
||||
|
||||
This is supported only when the brightness_control capability is
|
||||
also supported.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="kde_output_device_v2" summary="outputdevice this setting applies to"/>
|
||||
<arg name="multiplier" type="uint" summary="multiplier in 0-10000"/>
|
||||
</request>
|
||||
|
||||
<event name="failure_reason" since="12">
|
||||
<description summary="reason for failure">
|
||||
Describes why applying the output configuration failed. Is only
|
||||
sent before the failure event.
|
||||
</description>
|
||||
<arg name="reason" type="string" summary="reason for failure"/>
|
||||
</event>
|
||||
|
||||
</interface>
|
||||
</protocol>
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="kde_output_order_v1">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2022 Xaver Hugl <xaver.hugl@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: MIT-CMU
|
||||
]]></copyright>
|
||||
|
||||
<interface name="kde_output_order_v1" version="1">
|
||||
<description summary="announce order of outputs">
|
||||
Announce the order in which desktop environment components should be placed on outputs.
|
||||
The compositor will send the list of outputs when the global is bound and whenever there is a change.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
|
||||
<event name="output">
|
||||
<description summary="output name">
|
||||
Specifies the output identified by their wl_output.name.
|
||||
</description>
|
||||
<arg name="output_name" type="string" summary="the name of the output"/>
|
||||
</event>
|
||||
|
||||
<event name="done">
|
||||
<description summary="done">
|
||||
Specifies that the output list is complete. On the next output event, a new list begins.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="Destroy the output order notifier."/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
</protocol>
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="kde_primary_output_v1">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
|
||||
SPDX-License-Identifier: MIT-CMU
|
||||
]]></copyright>
|
||||
|
||||
<interface name="kde_primary_output_v1" version="2">
|
||||
<description summary="expose which is the primary display">
|
||||
Protocol for telling which is the primary display among the selection
|
||||
of enabled outputs.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
|
||||
<event name="primary_output">
|
||||
<description summary="Provide the current primary output's name">
|
||||
Specifies which output is the primary one identified by their uuid. See kde_output_device_v2 uuid event for more information about it.
|
||||
</description>
|
||||
<arg name="output_name" type="string" summary="the name of the output"/>
|
||||
</event>
|
||||
|
||||
<request name="destroy" type="destructor" since="2">
|
||||
<description summary="Destroy the primary output notifier."/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
</protocol>
|
||||
+113
@@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="kde_screen_edge_v1">
|
||||
<copyright>
|
||||
SPDX-FileCopyrightText: 2023 Vlad Zahorodnii
|
||||
|
||||
SPDX-License-Identifier: MIT-CMU
|
||||
</copyright>
|
||||
|
||||
<interface name="kde_screen_edge_manager_v1" version="1">
|
||||
<description summary="screen edge manager">
|
||||
This interface allows clients to associate actions with screen edges. For
|
||||
example, showing a surface by moving the pointer to a screen edge.
|
||||
|
||||
Potential ways to trigger the screen edge are subject to compositor
|
||||
policies. As an example, the compositor may consider the screen edge to be
|
||||
triggered if the pointer hits its associated screen border. Other ways may
|
||||
include using touchscreen or touchpad gestures.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="invalid_border" value="0"
|
||||
summary="the specified border value is invalid"/>
|
||||
<entry name="invalid_role" value="1"
|
||||
summary="the surface has invalid role"/>
|
||||
<entry name="already_constructed" value="2"
|
||||
summary="the surface already has a screen edge"/>
|
||||
</enum>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the screen edge manager">
|
||||
Destroy the screen edge manager. This doesn't destroy objects created
|
||||
with this manager.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<enum name="border">
|
||||
<description summary="screen border">
|
||||
These values describe possible screen borders.
|
||||
</description>
|
||||
<entry name="top" value="1" summary="top screen edge"/>
|
||||
<entry name="bottom" value="2" summary="bottom screen edge"/>
|
||||
<entry name="left" value="3" summary="left screen edge"/>
|
||||
<entry name="right" value="4" summary="right screen edge"/>
|
||||
</enum>
|
||||
|
||||
<request name="get_auto_hide_screen_edge">
|
||||
<description summary="create an auto hide edge">
|
||||
Create a new auto hide screen edge object associated with the specified
|
||||
surface and the border.
|
||||
|
||||
Creating a kde_auto_hide_screen_edge_v1 object does not change the
|
||||
visibility of the surface. The kde_auto_hide_screen_edge_v1.activate
|
||||
request must be issued in order to hide the surface.
|
||||
|
||||
The "border" argument must be a valid enum entry, otherwise the
|
||||
invalid_border protocol error is raised.
|
||||
|
||||
The invalid_role protocol error will be raised if the specified surface
|
||||
does not have layer_surface role.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="kde_auto_hide_screen_edge_v1"
|
||||
summary="the new screen edge"/>
|
||||
<arg name="border" type="uint" enum="border"
|
||||
summary="the associated screen border"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"
|
||||
summary="the surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="kde_auto_hide_screen_edge_v1" version="1">
|
||||
<description summary="auto hide screen edge">
|
||||
The auto hide screen edge object allows to hide the surface and make it
|
||||
visible by triggering the screen edge. The screen edge is inactive and
|
||||
the surface is visible by default.
|
||||
|
||||
This interface can be used to implement user interface elements such as
|
||||
auto-hide panels or docks.
|
||||
|
||||
kde_auto_hide_screen_edge_v1.activate activates the screen edge and makes
|
||||
the surface hidden. The surface can be made visible by triggering the
|
||||
screen edge or calling kde_auto_hide_screen_edge_v1.deactivate.
|
||||
|
||||
If the screen edge has been triggered, it won't be re-activated again.
|
||||
Another kde_auto_hide_screen_edge_v1.activate request must be made by the
|
||||
client to activate the screen edge.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the auto hide screen edge object">
|
||||
Destroy the auto hide screen edge object. If the screen edge is active,
|
||||
it will be deactivated and the surface will be made visible.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="deactivate">
|
||||
<description summary="deactivate the screen edge">
|
||||
Deactivate the screen edge. The surface will be made visible.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="activate">
|
||||
<description summary="activate the screen edge">
|
||||
Activate the screen edge. The surface will be hidden until the screen
|
||||
edge is triggered.
|
||||
</description>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="keystate">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2019 Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
|
||||
<interface name="org_kde_kwin_keystate" version="5">
|
||||
<description summary="Key States">
|
||||
Keeps track of the states of the different keys that have a state attached to it.
|
||||
</description>
|
||||
<enum name="key">
|
||||
<entry name="capslock" value="0" />
|
||||
<entry name="numlock" value="1"/>
|
||||
<entry name="scrolllock" value="2"/>
|
||||
<entry name="alt" value="3" since="5"/>
|
||||
<entry name="control" value="4" since="5"/>
|
||||
<entry name="shift" value="5" since="5"/>
|
||||
<entry name="meta" value="6" since="5"/>
|
||||
<entry name="altgr" value="7" since="5"/>
|
||||
</enum>
|
||||
<enum name="state">
|
||||
<entry name="unlocked" value="0" />
|
||||
<entry name="latched" value="1"/>
|
||||
<entry name="locked" value="2"/>
|
||||
<entry name="pressed" value="3" since="5"/>
|
||||
</enum>
|
||||
<request name="fetchStates">
|
||||
</request>
|
||||
|
||||
<event name="stateChanged">
|
||||
<description summary="Updates the state for a said key" />
|
||||
<arg name="key" type="uint"/>
|
||||
<arg name="state" type="uint"/>
|
||||
</event>
|
||||
|
||||
<request name="destroy" type="destructor" since="4">
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="org_kde_plasma_virtual_desktop">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2018 Marco Martin
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
|
||||
<interface name="org_kde_plasma_virtual_desktop_management" version="2">
|
||||
<request name="get_virtual_desktop">
|
||||
<description summary="get the org_kde_plasma_virtual_desktop interface for a desktop">
|
||||
Given the id of a particular virtual desktop, get the corresponding org_kde_plasma_virtual_desktop which represents only the desktop with that id.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="org_kde_plasma_virtual_desktop"/>
|
||||
<arg name="desktop_id" type="string" summary="Unique id of the desktop"/>
|
||||
</request>
|
||||
|
||||
<request name="request_create_virtual_desktop">
|
||||
<description summary="ask for the creation of a new desktop at a specified position">
|
||||
Ask the server to create a new virtual desktop, and position it at a specified position. If the position is zero or less, it will be positioned at the beginning, if the position is the count or more, it will be positioned at the end.
|
||||
</description>
|
||||
<arg name="name" type="string" summary="The user readable name we want for the desktop"/>
|
||||
<arg name="position" type="uint" summary="The position we want for the desktop"/>
|
||||
</request>
|
||||
|
||||
<request name="request_remove_virtual_desktop">
|
||||
<description summary="ask for a desktop removal identified by id">
|
||||
Ask the server to get rid of a virtual desktop, the server may or may not acconsent to the request.
|
||||
</description>
|
||||
<arg name="desktop_id" type="string" summary="Unique id of the desktop"/>
|
||||
</request>
|
||||
|
||||
<event name="desktop_created">
|
||||
<description summary="Emitted when a new desktop has been created"></description>
|
||||
<arg name="desktop_id" type="string" summary="Unique id of the desktop"/>
|
||||
<arg name="position" type="uint" summary="Position of this desktop, to ensure the client and the server will see desktops in the same order"/>
|
||||
</event>
|
||||
|
||||
<!--TODO: maybe the removed signal of the desktop object is enough?-->
|
||||
<event name="desktop_removed">
|
||||
<description summary="Emitted when a desktop has been removed"></description>
|
||||
<arg name="desktop_id" type="string" summary="Unique id of the desktop"/>
|
||||
</event>
|
||||
|
||||
<event name="done">
|
||||
<description summary="sent all information about desktops">
|
||||
This event is sent after all other properties has been
|
||||
sent after binding to the desktop manager object and after any
|
||||
other property changes done after that. This allows
|
||||
changes to the org_kde_plasma_virtual_desktop_management properties to be seen as
|
||||
atomic, even if they happen via multiple events.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="rows" since="2">
|
||||
<arg name="rows" type="uint" summary="Number of rows the virtual desktops are laid out into."/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
|
||||
<interface name="org_kde_plasma_virtual_desktop" version="1">
|
||||
<request name="request_activate">
|
||||
<description summary="Requests this desktop to be activated">
|
||||
Request the server to set the status of this desktop to active: The server is free to consent or deny the request. This will be the new "current" virtual desktop of the system.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="desktop_id">
|
||||
<description summary="The desktop got an id">
|
||||
The format of the id is decided by the compositor implementation. A desktop id univocally identifies a virtual desktop and must be guaranteed to never exist two desktops with the same id. The format of the string id is up to the server implementation.
|
||||
</description>
|
||||
<arg name="desktop_id" type="string" summary="Unique id of the desktop"/>
|
||||
</event>
|
||||
|
||||
<event name="name">
|
||||
<arg name="name" type="string" summary="User readable descriptive name for the desktop"/>
|
||||
</event>
|
||||
|
||||
<event name="activated">
|
||||
<description summary="The desktop has been activated">
|
||||
The desktop will be the new "current" desktop of the system. The server may support either one virtual desktop active at a time, or other combinations such as one virtual desktop active per screen.
|
||||
Windows associated to this virtual desktop will be shown.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="deactivated">
|
||||
<description summary="This desktop is no longer active">
|
||||
Windows that were associated only to this desktop will be hidden.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="done">
|
||||
<description summary="sent all information about desktops">
|
||||
This event is sent after all other properties has been
|
||||
sent after binding to the desktop object and after any
|
||||
other property changes done after that. This allows
|
||||
changes to the org_kde_plasma_virtual_desktop properties to be seen as
|
||||
atomic, even if they happen via multiple events.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="removed">
|
||||
<description summary="This desktop has been removed">
|
||||
This virtual desktop has just been removed by the server:
|
||||
All windows will lose the association to this desktop.
|
||||
</description>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
</protocol>
|
||||
+202
@@ -0,0 +1,202 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="outputmanagement">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2008-2011 Kristian Høgsberg
|
||||
SPDX-FileCopyrightText: 2010-2011 Intel Corporation
|
||||
SPDX-FileCopyrightText: 2012-2013 Collabora, Ltd.
|
||||
SPDX-FileCopyrightText: 2015 Sebastian Kügler <sebas@kde.org>
|
||||
|
||||
SPDX-License-Identifier: MIT-CMU
|
||||
]]></copyright>
|
||||
|
||||
<interface name="org_kde_kwin_outputmanagement" version="4">
|
||||
<description summary="configuration of server outputs through clients">
|
||||
This interface enables clients to set properties of output devices for screen
|
||||
configuration purposes via the server. To this end output devices are referenced
|
||||
by global org_kde_kwin_outputdevice objects.
|
||||
|
||||
outputmanagement (wl_global)
|
||||
--------------------------
|
||||
request:
|
||||
* create_configuration -> outputconfiguration (wl_resource)
|
||||
|
||||
outputconfiguration (wl_resource)
|
||||
--------------------------
|
||||
requests:
|
||||
* enable(outputdevice, bool)
|
||||
* mode(outputdevice, mode_id)
|
||||
* transformation(outputdevice, flag)
|
||||
* position(outputdevice, x, y)
|
||||
* apply
|
||||
|
||||
events:
|
||||
* applied
|
||||
* failed
|
||||
|
||||
The server registers one outputmanagement object as a global object. In order
|
||||
to configure outputs a client requests create_configuration, which provides a
|
||||
resource referencing an outputconfiguration for one-time configuration. That
|
||||
way the server knows which requests belong together and can group them by that.
|
||||
|
||||
On the outputconfiguration object the client calls for each output whether the
|
||||
output should be enabled, which mode should be set (by referencing the mode from
|
||||
the list of announced modes) and the output's global position. Once all outputs
|
||||
are configured that way, the client calls apply.
|
||||
At that point and not earlier the server should try to apply the configuration.
|
||||
If this succeeds the server emits the applied signal, otherwise the failed
|
||||
signal, such that the configuring client is noticed about the success of its
|
||||
configuration request.
|
||||
|
||||
Through this design the interface enables atomic output configuration changes if
|
||||
internally supported by the server.
|
||||
|
||||
</description>
|
||||
<request name="create_configuration">
|
||||
<description summary="provide outputconfiguration object for configuring outputs">
|
||||
Request an outputconfiguration object through which the client can configure
|
||||
output devices.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="org_kde_kwin_outputconfiguration"/>
|
||||
</request>
|
||||
|
||||
</interface>
|
||||
|
||||
<interface name="org_kde_kwin_outputconfiguration" version="4">
|
||||
<description summary="configure single output devices">
|
||||
outputconfiguration is a client-specific resource that can be used to ask
|
||||
the server to apply changes to available output devices.
|
||||
|
||||
The client receives a list of output devices from the registry. When it wants
|
||||
to apply new settings, it creates a configuration object from the
|
||||
outputmanagement global, writes changes through this object's enable, scale,
|
||||
transform and mode calls. It then asks the server to apply these settings in
|
||||
an atomic fashion, for example through Linux' DRM interface.
|
||||
|
||||
The server signals back whether the new settings have applied successfully
|
||||
or failed to apply. outputdevice objects are updated after the changes have been
|
||||
applied to the hardware and before the server side sends the applied event.
|
||||
</description>
|
||||
|
||||
<request name="enable">
|
||||
<description summary="enable or disable an output">
|
||||
Mark the output as enabled or disabled.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="org_kde_kwin_outputdevice" summary="outputdevice to be en- or disabled"/>
|
||||
<arg name="enable" type="int" summary="1 to enable or 0 to disable this output"/>
|
||||
</request>
|
||||
|
||||
<request name="mode">
|
||||
<description summary="switch outputdevice to mode">
|
||||
Sets the mode for a given output by its mode size (width and height) and refresh rate.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="org_kde_kwin_outputdevice" summary="outputdevice this mode change applies to"/>
|
||||
<arg name="mode_id" type="int" summary="aspired mode's id"/>
|
||||
</request>
|
||||
|
||||
<request name="transform">
|
||||
<description summary="transform outputdevice">
|
||||
Sets the transformation for a given output.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="org_kde_kwin_outputdevice" summary="outputdevice this transformation change applies to"/>
|
||||
<arg name="transform" type="int" summary="transform enum"/>
|
||||
</request>
|
||||
|
||||
<request name="position">
|
||||
<description summary="position output in global space">
|
||||
Sets the position for this output device. (x,y) describe the top-left corner
|
||||
of the output in global space, whereby the origin (0,0) of the global space
|
||||
has to be aligned with the top-left corner of the most left and in case this
|
||||
does not define a single one the top output.
|
||||
|
||||
There may be no gaps or overlaps between outputs, i.e. the outputs are
|
||||
stacked horizontally, vertically, or both on each other.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="org_kde_kwin_outputdevice" summary="outputdevice this position applies to"/>
|
||||
<arg name="x" type="int" summary="position on the x-axis"/>
|
||||
<arg name="y" type="int" summary="position on the y-axis"/>
|
||||
</request>
|
||||
|
||||
<request name="scale">
|
||||
<description summary="set scaling factor of this output">
|
||||
Sets the scaling factor for this output device.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="org_kde_kwin_outputdevice" summary="outputdevice this mode change applies to"/>
|
||||
<arg name="scale" type="int" summary="scaling factor"/>
|
||||
</request>
|
||||
|
||||
<request name="apply">
|
||||
<description summary="apply configuration changes to all output devices">
|
||||
Asks the server to apply property changes requested through this outputconfiguration
|
||||
object to all outputs on the server side.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="applied">
|
||||
<description summary="configuration changes have been applied">
|
||||
Sent after the server has successfully applied the changes.
|
||||
.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="failed">
|
||||
<description summary="configuration changes failed to apply">
|
||||
Sent if the server rejects the changes or failed to apply them.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<request name="scalef" since="2">
|
||||
<description summary="set scaling factor of this output">
|
||||
Sets the scaling factor for this output device.
|
||||
Sending both scale and scalef is undefined.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="org_kde_kwin_outputdevice" summary="outputdevice this mode change applies to"/>
|
||||
<arg name="scale" type="fixed" summary="scaling factor"/>
|
||||
</request>
|
||||
|
||||
<request name="colorcurves" since="2">
|
||||
<description summary="set output color curves">
|
||||
Set color curves of output devices through RGB color ramps. Allows color
|
||||
correction of output device from user space.
|
||||
|
||||
These are the raw values. A compositor might opt to adjust these values
|
||||
internally, for example to shift color temperature at night.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="org_kde_kwin_outputdevice" summary="outputdevice curves apply to"/>
|
||||
<arg name="red" type="array" summary="red color ramp"/>
|
||||
<arg name="green" type="array" summary="green color ramp"/>
|
||||
<arg name="blue" type="array" summary="blue color ramp"/>
|
||||
</request>
|
||||
|
||||
<request name="destroy" type="destructor" since="2">
|
||||
<description summary="release the outputconfiguration object"/>
|
||||
</request>
|
||||
|
||||
<request name="overscan" since="3">
|
||||
<description summary="set overscan value">
|
||||
Set the overscan value of this output device with a value in percent.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="org_kde_kwin_outputdevice" summary="outputdevice overscan applies to"/>
|
||||
<arg name="overscan" type="uint" summary="overscan value"/>
|
||||
</request>
|
||||
|
||||
<enum name="vrr_policy" since="4">
|
||||
<description summary="describes vrr policy">
|
||||
Describes when the compositor may employ variable refresh rate
|
||||
</description>
|
||||
<entry name="never" value="0"/>
|
||||
<entry name="always" value="1"/>
|
||||
<entry name="automatic" value="2"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_vrr_policy" since="4">
|
||||
<description summary="set the VRR policy">
|
||||
Set what policy the compositor should employ regarding its use of
|
||||
variable refresh rate.
|
||||
</description>
|
||||
<arg name="outputdevice" type="object" interface="org_kde_kwin_outputdevice" summary="outputdevice this VRR policy applies to"/>
|
||||
<arg name="policy" type="uint" enum="vrr_policy" summary="the vrr policy to apply"/>
|
||||
</request>
|
||||
|
||||
</interface>
|
||||
|
||||
</protocol>
|
||||
@@ -0,0 +1,320 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="org_kde_kwin_outputdevice">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2008-2011 Kristian Høgsberg
|
||||
SPDX-FileCopyrightText: 2010-2011 Intel Corporation
|
||||
SPDX-FileCopyrightText: 2012-2013 Collabora, Ltd.
|
||||
SPDX-FileCopyrightText: 2015 Sebastian Kügler <sebas@kde.org>
|
||||
|
||||
SPDX-License-Identifier: MIT-CMU
|
||||
]]></copyright>
|
||||
|
||||
|
||||
<interface name="org_kde_kwin_outputdevice" version="4">
|
||||
<description summary="output configuration representation">
|
||||
An outputdevice describes a display device available to the compositor.
|
||||
outputdevice is similar to wl_output, but focuses on output
|
||||
configuration management.
|
||||
|
||||
A client can query all global outputdevice objects to enlist all
|
||||
available display devices, even those that may currently not be
|
||||
represented by the compositor as a wl_output.
|
||||
|
||||
The client sends configuration changes to the server through the
|
||||
outputconfiguration interface, and the server applies the configuration
|
||||
changes to the hardware and signals changes to the outputdevices
|
||||
accordingly.
|
||||
|
||||
This object is published as global during start up for every available
|
||||
display devices, or when one later becomes available, for example by
|
||||
being hotplugged via a physical connector.
|
||||
</description>
|
||||
|
||||
<enum name="subpixel">
|
||||
<description summary="subpixel geometry information">
|
||||
This enumeration describes how the physical pixels on an output are
|
||||
laid out.
|
||||
</description>
|
||||
<entry name="unknown" value="0"/>
|
||||
<entry name="none" value="1"/>
|
||||
<entry name="horizontal_rgb" value="2"/>
|
||||
<entry name="horizontal_bgr" value="3"/>
|
||||
<entry name="vertical_rgb" value="4"/>
|
||||
<entry name="vertical_bgr" value="5"/>
|
||||
</enum>
|
||||
|
||||
<enum name="transform">
|
||||
<description summary="transform from framebuffer to output">
|
||||
This describes the transform, that a compositor will apply to a
|
||||
surface to compensate for the rotation or mirroring of an
|
||||
output device.
|
||||
|
||||
The flipped values correspond to an initial flip around a
|
||||
vertical axis followed by rotation.
|
||||
|
||||
The purpose is mainly to allow clients to render accordingly and
|
||||
tell the compositor, so that for fullscreen surfaces, the
|
||||
compositor is still able to scan out directly client surfaces.
|
||||
</description>
|
||||
|
||||
<entry name="normal" value="0"/>
|
||||
<entry name="90" value="1"/>
|
||||
<entry name="180" value="2"/>
|
||||
<entry name="270" value="3"/>
|
||||
<entry name="flipped" value="4"/>
|
||||
<entry name="flipped_90" value="5"/>
|
||||
<entry name="flipped_180" value="6"/>
|
||||
<entry name="flipped_270" value="7"/>
|
||||
</enum>
|
||||
|
||||
<event name="geometry">
|
||||
<description summary="geometric properties of the output">
|
||||
The geometry event describes geometric properties of the output.
|
||||
The event is sent when binding to the output object and whenever
|
||||
any of the properties change.
|
||||
</description>
|
||||
<arg name="x" type="int"
|
||||
summary="x position within the global compositor space"/>
|
||||
<arg name="y" type="int"
|
||||
summary="y position within the global compositor space"/>
|
||||
<arg name="physical_width" type="int"
|
||||
summary="width in millimeters of the output"/>
|
||||
<arg name="physical_height" type="int"
|
||||
summary="height in millimeters of the output"/>
|
||||
<arg name="subpixel" type="int"
|
||||
summary="subpixel orientation of the output"/>
|
||||
<arg name="make" type="string"
|
||||
summary="textual description of the manufacturer"/>
|
||||
<arg name="model" type="string"
|
||||
summary="textual description of the model"/>
|
||||
<arg name="transform" type="int"
|
||||
summary="transform that maps framebuffer to output"/>
|
||||
</event>
|
||||
|
||||
<enum name="mode">
|
||||
<description summary="mode information">
|
||||
These flags describe properties of an output mode. They are
|
||||
used in the flags bitfield of the mode event.
|
||||
</description>
|
||||
<entry name="current" value="0x1"
|
||||
summary="indicates this is the current mode"/>
|
||||
<entry name="preferred" value="0x2"
|
||||
summary="indicates this is the preferred mode"/>
|
||||
</enum>
|
||||
|
||||
<event name="mode">
|
||||
<description summary="advertise available output modes and current one">
|
||||
The mode event describes an available mode for the output.
|
||||
|
||||
When the client binds to the outputdevice object, the server sends this
|
||||
event once for every available mode the outputdevice can be operated by.
|
||||
|
||||
There will always be at least one event sent out on initial binding,
|
||||
which represents the current mode.
|
||||
|
||||
Later on if an output changes its mode the event is sent again, whereby
|
||||
this event represents the mode that has now become current. In other
|
||||
words, the current mode is always represented by the latest event sent
|
||||
with the current flag set.
|
||||
|
||||
The size of a mode is given in physical hardware units of the output device.
|
||||
This is not necessarily the same as the output size in the global compositor
|
||||
space. For instance, the output may be scaled, as described in
|
||||
org_kde_kwin_outputdevice.scale, or transformed, as described in
|
||||
org_kde_kwin_outputdevice.transform.
|
||||
|
||||
The id can be used to refer to a mode when calling set_mode on an
|
||||
org_kde_kwin_outputconfiguration object.
|
||||
</description>
|
||||
<arg name="flags" type="uint" summary="bitfield of mode flags"/>
|
||||
<arg name="width" type="int" summary="width of the mode in hardware units"/>
|
||||
<arg name="height" type="int" summary="height of the mode in hardware units"/>
|
||||
<arg name="refresh" type="int" summary="vertical refresh rate in mHz"/>
|
||||
<arg name="mode_id" type="int" summary="Per outputdevice unique id to identify a mode"/>
|
||||
</event>
|
||||
|
||||
<event name="done">
|
||||
<description summary="sent all information about output">
|
||||
This event is sent after all other properties have been
|
||||
sent on binding to the output object as well as after any
|
||||
other output property change have been applied later on.
|
||||
This allows to see changes to the output properties as atomic,
|
||||
even if multiple events successively announce them.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="scale">
|
||||
<description summary="output scaling properties">
|
||||
This event contains scaling geometry information
|
||||
that is not in the geometry event. It may be sent after
|
||||
binding the output object or if the output scale changes
|
||||
later. If it is not sent, the client should assume a
|
||||
scale of 1.
|
||||
|
||||
A scale larger than 1 means that the compositor will
|
||||
automatically scale surface buffers by this amount
|
||||
when rendering. This is used for high resolution
|
||||
displays where applications rendering at the native
|
||||
resolution would be too small to be legible.
|
||||
|
||||
It is intended that scaling aware clients track the
|
||||
current output of a surface, and if it is on a scaled
|
||||
output it should use wl_surface.set_buffer_scale with
|
||||
the scale of the output. That way the compositor can
|
||||
avoid scaling the surface, and the client can supply
|
||||
a higher detail image.
|
||||
</description>
|
||||
<arg name="factor" type="int" summary="scaling factor of output"/>
|
||||
</event>
|
||||
|
||||
<event name="edid">
|
||||
<description summary="advertise EDID data for the output">
|
||||
The edid event encapsulates the EDID data for the outputdevice.
|
||||
|
||||
The event is sent when binding to the output object. The EDID
|
||||
data may be empty, in which case this event is sent anyway.
|
||||
If the EDID information is empty, you can fall back to the name
|
||||
et al. properties of the outputdevice.
|
||||
</description>
|
||||
<arg name="raw" type="string" summary="base64-encoded EDID string"/>
|
||||
</event>
|
||||
|
||||
<enum name="enablement">
|
||||
<description summary="describes enabled state">
|
||||
Describes whether a device is enabled, i.e. device is used to
|
||||
display content by the compositor. This wraps a boolean around
|
||||
an int to avoid a boolean trap.
|
||||
</description>
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled" value="1"/>
|
||||
</enum>
|
||||
|
||||
<event name="enabled">
|
||||
<description summary="output is enabled or disabled">
|
||||
The enabled event notifies whether this output is currently
|
||||
enabled and used for displaying content by the server.
|
||||
The event is sent when binding to the output object and
|
||||
whenever later on an output changes its state by becoming
|
||||
enabled or disabled.
|
||||
</description>
|
||||
<arg name="enabled" type="int" summary="output enabled state"/>
|
||||
</event>
|
||||
|
||||
<event name="uuid">
|
||||
<description summary="A unique id for this outputdevice">
|
||||
The uuid can be used to identify the output. It's controlled by
|
||||
the server entirely. The server should make sure the uuid is
|
||||
persistent across restarts. An empty uuid is considered invalid.
|
||||
</description>
|
||||
<arg name="uuid" type="string" summary="output devices ID"/>
|
||||
</event>
|
||||
|
||||
<event name="scalef" since="2">
|
||||
<description summary="output scaling properties">
|
||||
This event contains scaling geometry information
|
||||
that is not in the geometry event. It may be sent after
|
||||
binding the output object or if the output scale changes
|
||||
later. If it is not sent, the client should assume a
|
||||
scale of 1.
|
||||
|
||||
A scale larger than 1 means that the compositor will
|
||||
automatically scale surface buffers by this amount
|
||||
when rendering. This is used for high resolution
|
||||
displays where applications rendering at the native
|
||||
resolution would be too small to be legible.
|
||||
|
||||
It is intended that scaling aware clients track the
|
||||
current output of a surface, and if it is on a scaled
|
||||
output it should use wl_surface.set_buffer_scale with
|
||||
the scale of the output. That way the compositor can
|
||||
avoid scaling the surface, and the client can supply
|
||||
a higher detail image.
|
||||
|
||||
wl_output will keep the output scale as an integer. In every situation except
|
||||
configuring the window manager you want to use that.
|
||||
</description>
|
||||
<arg name="factor" type="fixed" summary="scaling factor of output"/>
|
||||
</event>
|
||||
|
||||
<event name="colorcurves" since="2">
|
||||
<description summary="output color curves">
|
||||
Describes the color intensity profile of the output.
|
||||
Commonly used for gamma/color correction.
|
||||
|
||||
The array contains all color ramp values of the output.
|
||||
For example on 8bit screens there are 256 of them.
|
||||
|
||||
The array elements are unsigned 16bit integers.
|
||||
</description>
|
||||
<arg name="red" type="array"
|
||||
summary="red color ramp"/>
|
||||
<arg name="green" type="array"
|
||||
summary="green color ramp"/>
|
||||
<arg name="blue" type="array"
|
||||
summary="blue color ramp"/>
|
||||
</event>
|
||||
|
||||
<event name="serial_number" since="2">
|
||||
<description summary="Serial Number">
|
||||
Serial ID of the monitor, sent on startup before the first done event.
|
||||
</description>
|
||||
<arg name="serialNumber" type="string"
|
||||
summary="textual representation of serial number"/>
|
||||
</event>
|
||||
<event name="eisa_id" since="2">
|
||||
<description summary="EISA ID">
|
||||
EISA ID of the monitor, sent on startup before the first done event.
|
||||
</description>
|
||||
<arg name="eisaId" type="string"
|
||||
summary="textual representation of EISA identifier"/>
|
||||
</event>
|
||||
|
||||
<enum name="capability" bitfield="true" since="3">
|
||||
<description summary="describes capabilities of the outputdevice">
|
||||
Describes what capabilities this device has.
|
||||
</description>
|
||||
<entry name="overscan" value="1"
|
||||
summary="if this outputdevice can use overscan"/>
|
||||
<entry name="vrr" value="2" since="4"
|
||||
summary="if this outputdevice supports variable refresh rate"/>
|
||||
</enum>
|
||||
|
||||
<event name="capabilities" since="3">
|
||||
<description summary="capability flags">
|
||||
What capabilities this device has, sent on startup before the first
|
||||
done event.
|
||||
</description>
|
||||
<arg name="flags" type="uint" enum="capability"/>
|
||||
</event>
|
||||
|
||||
<event name="overscan" since="3">
|
||||
<description summary="overscan">
|
||||
Overscan value of the monitor in percent, sent on startup before the
|
||||
first done event.
|
||||
</description>
|
||||
<arg name="overscan" type="uint"
|
||||
summary="amount of overscan of the monitor"/>
|
||||
</event>
|
||||
|
||||
<enum name="vrr_policy" since="4">
|
||||
<description summary="describes vrr policy">
|
||||
Describes when the compositor may employ variable refresh rate
|
||||
</description>
|
||||
<entry name="never" value="0"/>
|
||||
<entry name="always" value="1"/>
|
||||
<entry name="automatic" value="2"/>
|
||||
</enum>
|
||||
|
||||
<event name="vrr_policy" since="4">
|
||||
<description summary="Variable Refresh Rate Policy">
|
||||
What policy the compositor will employ regarding its use of variable
|
||||
refresh rate.
|
||||
</description>
|
||||
<arg name="vrr_policy" type="uint" enum="vrr_policy"/>
|
||||
</event>
|
||||
|
||||
</interface>
|
||||
|
||||
|
||||
|
||||
</protocol>
|
||||
@@ -0,0 +1,308 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="plasma_shell">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2013-2014 Pier Luigi Fiorini
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
|
||||
<interface name="org_kde_plasma_shell" version="8">
|
||||
<description summary="create shell windows and helpers">
|
||||
This interface is used by KF5 powered Wayland shells to communicate with
|
||||
the compositor and can only be bound one time.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
|
||||
<!-- Surfaces -->
|
||||
|
||||
<request name="get_surface">
|
||||
<description summary="create a shell surface from a surface">
|
||||
Create a shell surface for an existing surface.
|
||||
|
||||
Only one shell surface can be associated with a given
|
||||
surface.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="org_kde_plasma_surface"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="org_kde_plasma_surface" version="8">
|
||||
<description summary="metadata interface">
|
||||
An interface that may be implemented by a wl_surface, for
|
||||
implementations that provide the shell user interface.
|
||||
|
||||
It provides requests to set surface roles, assign an output
|
||||
or set the position in output coordinates.
|
||||
|
||||
On the server side the object is automatically destroyed when
|
||||
the related wl_surface is destroyed. On client side,
|
||||
org_kde_plasma_surface.destroy() must be called before
|
||||
destroying the wl_surface object.
|
||||
</description>
|
||||
|
||||
<!-- Destructor -->
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="remove org_kde_plasma_surface interface">
|
||||
The org_kde_plasma_surface interface is removed from the
|
||||
wl_surface object that was turned into a shell surface with the
|
||||
org_kde_plasma_shell.get_surface request.
|
||||
The shell surface role is lost and wl_surface is unmapped.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<!-- Output and position -->
|
||||
|
||||
<request name="set_output">
|
||||
<description summary="assign an output to this shell surface">
|
||||
Assign an output to this shell surface.
|
||||
The compositor will use this information to set the position
|
||||
when org_kde_plasma_surface.set_position request is
|
||||
called.
|
||||
</description>
|
||||
<arg name="output" type="object" interface="wl_output"/>
|
||||
</request>
|
||||
|
||||
<request name="set_position">
|
||||
<description summary="change the shell surface position">
|
||||
Move the surface to new coordinates.
|
||||
|
||||
Coordinates are global, for example 50,50 for a 1920,0+1920x1080 output
|
||||
is 1970,50 in global coordinates space.
|
||||
|
||||
Use org_kde_plasma_surface.set_output to assign an output
|
||||
to this surface.
|
||||
</description>
|
||||
<arg name="x" type="int" summary="x coordinate in global space"/>
|
||||
<arg name="y" type="int" summary="y coordinate in global space"/>
|
||||
</request>
|
||||
|
||||
<!-- Role -->
|
||||
|
||||
<enum name="role">
|
||||
<entry name="normal" value="0"/>
|
||||
<entry name="desktop" value="1"/>
|
||||
<entry name="panel" value="2"/>
|
||||
<entry name="onscreendisplay" value="3"/>
|
||||
<entry name="notification" value="4"/>
|
||||
<entry name="tooltip" value="5"/>
|
||||
<entry name="criticalnotification" value="6" since="6"/>
|
||||
<entry name="appletpopup" value="7" since="8"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_role">
|
||||
<description summary="assign a role to this surface">
|
||||
Assign a role to a shell surface.
|
||||
|
||||
The compositor handles surfaces depending on their role.
|
||||
See the explanation below.
|
||||
|
||||
This request fails if the surface already has a role, this means
|
||||
the surface role may be assigned only once.
|
||||
|
||||
== Surfaces with splash role ==
|
||||
|
||||
Splash surfaces are placed above every other surface during the
|
||||
shell startup phase.
|
||||
|
||||
The surfaces are placed according to the output coordinates.
|
||||
No size is imposed to those surfaces, the shell has to resize
|
||||
them according to output size.
|
||||
|
||||
These surfaces are meant to hide the desktop during the startup
|
||||
phase so that the user will always see a ready to work desktop.
|
||||
|
||||
A shell might not create splash surfaces if the compositor reveals
|
||||
the desktop in an alternative fashion, for example with a fade
|
||||
in effect.
|
||||
|
||||
That depends on how much time the desktop usually need to prepare
|
||||
the workspace or specific design decisions.
|
||||
This specification doesn't impose any particular design.
|
||||
|
||||
When the startup phase is finished, the shell will send the
|
||||
org_kde_plasma.desktop_ready request to the compositor.
|
||||
|
||||
== Surfaces with desktop role ==
|
||||
|
||||
Desktop surfaces are placed below all other surfaces and are used
|
||||
to show the actual desktop view with icons, search results or
|
||||
controls the user will interact with. What to show depends on the
|
||||
shell implementation.
|
||||
|
||||
The surfaces are placed according to the output coordinates.
|
||||
No size is imposed to those surfaces, the shell has to resize
|
||||
them according to output size.
|
||||
|
||||
Only one surface per output can have the desktop role.
|
||||
|
||||
== Surfaces with dashboard role ==
|
||||
|
||||
Dashboard surfaces are placed above desktop surfaces and are used to
|
||||
show additional widgets and controls.
|
||||
|
||||
The surfaces are placed according to the output coordinates.
|
||||
No size is imposed to those surfaces, the shell has to resize
|
||||
them according to output size.
|
||||
|
||||
Only one surface per output can have the dashboard role.
|
||||
|
||||
== Surfaces with config role ==
|
||||
|
||||
A configuration surface is shown when the user wants to configure
|
||||
panel or desktop views.
|
||||
|
||||
Only one surface per output can have the config role.
|
||||
|
||||
TODO: This should grab the input like popup menus, right?
|
||||
|
||||
== Surfaces with overlay role ==
|
||||
|
||||
Overlays are special surfaces that shows for a limited amount
|
||||
of time. Such surfaces are useful to display things like volume,
|
||||
brightness and status changes.
|
||||
|
||||
Compositors may decide to show those surfaces in a layer above
|
||||
all surfaces, even full screen ones if so is desired.
|
||||
|
||||
== Surfaces with notification role ==
|
||||
|
||||
Notification surfaces display informative content for a limited
|
||||
amount of time. The compositor may decide to show them in a corner
|
||||
depending on the configuration.
|
||||
|
||||
These surfaces are shown in a layer above all other surfaces except
|
||||
for full screen ones.
|
||||
|
||||
== Surfaces with lock role ==
|
||||
|
||||
The lock surface is shown by the compositor when the session is
|
||||
locked, users interact with it to unlock the session.
|
||||
|
||||
Compositors should move lock surfaces to 0,0 in output
|
||||
coordinates space and hide all other surfaces for security sake.
|
||||
For the same reason it is recommended that clients make the
|
||||
lock surface as big as the screen.
|
||||
|
||||
Only one surface per output can have the lock role.
|
||||
</description>
|
||||
<arg name="role" type="uint"/>
|
||||
</request>
|
||||
|
||||
<!-- Flags -->
|
||||
|
||||
<enum name="panel_behavior">
|
||||
<description summary="Behavior for panel surface">
|
||||
</description>
|
||||
<entry name="always_visible" value="1">
|
||||
<description summary="normal panel visibility">
|
||||
The panel is on top of other surfaces, windows cannot cover (full screen
|
||||
windows excluded).
|
||||
</description>
|
||||
</entry>
|
||||
<entry name="auto_hide" value="2">
|
||||
<description summary="hide automatically">
|
||||
The panel is hidden automatically and restored when the mouse is over.
|
||||
</description>
|
||||
</entry>
|
||||
<entry name="windows_can_cover" value="3">
|
||||
<description summary="windows can cover">
|
||||
Windows can cover the panel.
|
||||
</description>
|
||||
</entry>
|
||||
<entry name="windows_go_below" value="4">
|
||||
<description summary="windows go below">
|
||||
Maximized windows take the whole screen space but the panel is above
|
||||
the windows.
|
||||
</description>
|
||||
</entry>
|
||||
</enum>
|
||||
|
||||
<request name="set_panel_behavior">
|
||||
<description summary="set or unset the panel ">
|
||||
Set flags bitmask as described by the flag enum.
|
||||
Pass 0 to unset any flag, the surface will adjust its behavior to
|
||||
the default.
|
||||
|
||||
Deprecated in Plasma 6. Setting this flag will have no effect. Applications should use layer shell where appropriate.
|
||||
</description>
|
||||
<arg name="flag" type="uint" summary="panel_behavior enum value"/>
|
||||
</request>
|
||||
|
||||
<!-- Skip taskbar-->
|
||||
<request name="set_skip_taskbar" since="2">
|
||||
<description summary="make the window skip the taskbar">
|
||||
Setting this bit to the window, will make it say it prefers to not be listed in the taskbar. Taskbar implementations may or may not follow this hint.
|
||||
</description>
|
||||
<arg name="skip" type="uint" summary="Boolean value that sets whether to skip the taskbar"/>
|
||||
</request>
|
||||
|
||||
<enum name="error" since="4">
|
||||
<entry name="panel_not_auto_hide" value="0"
|
||||
summary="Request panel_auto_hide performed on a surface which does not correspond to an auto-hide panel."/>
|
||||
</enum>
|
||||
|
||||
<request name="panel_auto_hide_hide" since="4">
|
||||
<description summary="Hide the auto-hiding panel">
|
||||
A panel surface with panel_behavior auto_hide can perform this request to hide the panel
|
||||
on a screen edge without unmapping it. The compositor informs the client about the panel
|
||||
being hidden with the event auto_hidden_panel_hidden.
|
||||
|
||||
The compositor will restore the visibility state of the
|
||||
surface when the pointer touches the screen edge the panel borders. Once the compositor restores
|
||||
the visibility the event auto_hidden_panel_shown will be sent. This event will also be sent
|
||||
if the compositor is unable to hide the panel.
|
||||
|
||||
The client can also request to show the panel again with the request panel_auto_hide_show.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="panel_auto_hide_show" since="4">
|
||||
<description summary="Show the auto-hiding panel">
|
||||
A panel surface with panel_behavior auto_hide can perform this request to show the panel
|
||||
again which got hidden with panel_auto_hide_hide.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="set_panel_takes_focus" since="4">
|
||||
<description summary="Whether a panel takes focus">
|
||||
By default various org_kde_plasma_surface roles do not take focus and cannot be
|
||||
activated. With this request the compositor can be instructed to pass focus also to this
|
||||
org_kde_plasma_surface.
|
||||
</description>
|
||||
<arg name="takes_focus" type="uint" summary="Boolean value that sets whether the panel takes focus"/>
|
||||
</request>
|
||||
|
||||
<event name="auto_hidden_panel_hidden" since="4">
|
||||
<description summary="Auto-hiding panel is hidden">
|
||||
An auto-hiding panel got hidden by the compositor.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="auto_hidden_panel_shown" since="4">
|
||||
<description summary="Auto-hiding panel is shown">
|
||||
An auto-hiding panel got shown by the compositor.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<!-- Skip switcher -->
|
||||
<request name="set_skip_switcher" since="5">
|
||||
<description summary="make the window not appear in a switcher">
|
||||
Setting this bit will indicate that the window prefers not to be listed in a switcher.
|
||||
</description>
|
||||
<arg name="skip" type="uint" summary="Boolean value that sets whether to skip the window switcher."/>
|
||||
</request>
|
||||
|
||||
<request name="open_under_cursor" since="7">
|
||||
<description summary="open under cursor">
|
||||
Request the initial position of this surface to be under the current
|
||||
cursor position. Has to be called before attaching any buffer to this surface.
|
||||
</description>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
+473
@@ -0,0 +1,473 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="plasma_window_management">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2013-2014 Pier Luigi Fiorini
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
|
||||
<interface name="org_kde_plasma_window_management" version="18">
|
||||
<description summary="application windows management">
|
||||
This interface manages application windows.
|
||||
It provides requests to show and hide the desktop and emits
|
||||
an event every time a window is created so that the client can
|
||||
use it to manage the window.
|
||||
|
||||
Only one client can bind this interface at a time.
|
||||
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
|
||||
<enum name="state">
|
||||
<entry name="active" value="0x1"/>
|
||||
<entry name="minimized" value="0x2"/>
|
||||
<entry name="maximized" value="0x4"/>
|
||||
<entry name="fullscreen" value="0x8"/>
|
||||
<entry name="keep_above" value="0x10"/>
|
||||
<entry name="keep_below" value="0x20"/>
|
||||
<entry name="on_all_desktops" value="0x40"/>
|
||||
<entry name="demands_attention" value="0x80"/>
|
||||
<entry name="closeable" value="0x100"/>
|
||||
<entry name="minimizable" value="0x200"/>
|
||||
<entry name="maximizable" value="0x400"/>
|
||||
<entry name="fullscreenable" value="0x800"/>
|
||||
<entry name="skiptaskbar" value="0x1000" since="2"/>
|
||||
<entry name="shadeable" value="0x2000" since="3"/>
|
||||
<entry name="shaded" value="0x4000" since="3"/>
|
||||
<entry name="movable" value="0x8000" since="3"/>
|
||||
<entry name="resizable" value="0x10000" since="3"/>
|
||||
<entry name="virtual_desktop_changeable" value="0x20000" since="3"/>
|
||||
<entry name="skipswitcher" value="0x40000" since="9"/>
|
||||
</enum>
|
||||
|
||||
<enum name="show_desktop">
|
||||
<entry name="disabled" value="0"/>
|
||||
<entry name="enabled" value="1"/>
|
||||
</enum>
|
||||
|
||||
<request name="show_desktop">
|
||||
<description summary="show/hide the desktop">
|
||||
Tell the compositor to show/hide the desktop.
|
||||
</description>
|
||||
<arg name="state" type="uint" summary="requested state"/>
|
||||
</request>
|
||||
|
||||
<request name="get_window">
|
||||
<description summary="deprecated">Deprecated: use get_window_by_uuid</description>
|
||||
<arg name="id" type="new_id" interface="org_kde_plasma_window"/>
|
||||
<arg name="internal_window_id" type="uint" summary="The internal window id of the window to create"/>
|
||||
</request>
|
||||
|
||||
<request name="get_window_by_uuid" since="12">
|
||||
<arg name="id" type="new_id" interface="org_kde_plasma_window"/>
|
||||
<arg name="internal_window_uuid" type="string" summary="The internal window uuiid of the window to create"/>
|
||||
</request>
|
||||
|
||||
<event name="show_desktop_changed">
|
||||
<description summary="notify the client when the show desktop mode is entered/left">
|
||||
This event will be sent whenever the show desktop mode changes. E.g. when it is entered
|
||||
or left.
|
||||
|
||||
On binding the interface the current state is sent.
|
||||
</description>
|
||||
<arg name="state" type="uint" summary="new state"/>
|
||||
</event>
|
||||
|
||||
<event name="window">
|
||||
<description summary="notify the client that a window was mapped">
|
||||
This event will be sent immediately after a window is mapped.
|
||||
</description>
|
||||
<arg name="id" type="uint" summary="Deprecated: internal window Id"/>
|
||||
</event>
|
||||
|
||||
<event name="stacking_order_changed" since="11">
|
||||
<description summary="notify the client when stacking order changed">
|
||||
This event will be sent when stacking order changed and on bind.
|
||||
|
||||
With version 17 this event is deprecated and will no longer be sent.
|
||||
</description>
|
||||
<arg name="ids" type="array" summary="internal windows id array"/>
|
||||
</event>
|
||||
|
||||
<event name="stacking_order_uuid_changed" since="12">
|
||||
<description summary="notify the client when stacking order changed">
|
||||
This event will be sent when stacking order changed and on bind.
|
||||
|
||||
With version 17 this event is deprecated and will no longer be sent.
|
||||
</description>
|
||||
<arg name="uuids" type="string" summary="internal windows id ;-separated"/>
|
||||
</event>
|
||||
|
||||
<event name="window_with_uuid" since="13">
|
||||
<description summary="notify the client that a window was mapped">
|
||||
This event will be sent immediately after a window is mapped.
|
||||
</description>
|
||||
<arg name="id" type="uint" summary="Deprecated: internal window Id"/>
|
||||
<arg name="uuid" type="string" summary="internal window uuid"/>
|
||||
</event>
|
||||
|
||||
<event name="stacking_order_changed_2" since="17">
|
||||
<description summary="notify the client when stacking order changed">
|
||||
This event will be sent when stacking order changed.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<request name="get_stacking_order" since="17">
|
||||
<description summary="get the stacking order"/>
|
||||
<arg name="stacking_order" type="new_id" interface="org_kde_plasma_stacking_order"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="org_kde_plasma_window" version="18">
|
||||
<description summary="interface to control application windows">
|
||||
Manages and control an application window.
|
||||
|
||||
Only one client can bind this interface at a time.
|
||||
</description>
|
||||
|
||||
<request name="set_state">
|
||||
<description summary="set window state">
|
||||
Set window state.
|
||||
|
||||
Values for state argument are described by org_kde_plasma_window_management.state
|
||||
and can be used together in a bitfield. The flags bitfield describes which flags are
|
||||
supposed to be set, the state bitfield the value for the set flags
|
||||
</description>
|
||||
<arg name="flags" type="uint" summary="bitfield of set state flags"/>
|
||||
<arg name="state" type="uint" summary="bitfield of state flags"/>
|
||||
</request>
|
||||
|
||||
<request name="set_virtual_desktop">
|
||||
<description summary="map window on a virtual desktop">
|
||||
Deprecated: use enter_virtual_desktop
|
||||
Maps the window to a different virtual desktop.
|
||||
|
||||
To show the window on all virtual desktops, call the
|
||||
org_kde_plasma_window.set_state request and specify a on_all_desktops
|
||||
state in the bitfield.
|
||||
</description>
|
||||
<arg name="number" type="uint" summary="zero based virtual desktop number"/>
|
||||
</request>
|
||||
|
||||
<request name="set_minimized_geometry">
|
||||
<description summary="set the geometry for a taskbar entry">
|
||||
Sets the geometry of the taskbar entry for this window.
|
||||
The geometry is relative to a panel in particular.
|
||||
</description>
|
||||
<arg name="panel" type="object" interface="wl_surface"/>
|
||||
<arg name="x" type="uint"/>
|
||||
<arg name="y" type="uint"/>
|
||||
<arg name="width" type="uint"/>
|
||||
<arg name="height" type="uint"/>
|
||||
</request>
|
||||
|
||||
<request name="unset_minimized_geometry">
|
||||
<description summary="set the geometry for a taskbar entry">
|
||||
Remove the task geometry information for a particular panel.
|
||||
</description>
|
||||
<arg name="panel" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
|
||||
<!--
|
||||
<request name="highlight">
|
||||
<description summary="highlight the window">
|
||||
Tell the compositor to highlight this window.
|
||||
</description>
|
||||
</request>
|
||||
-->
|
||||
|
||||
<request name="close">
|
||||
<description summary="close window">
|
||||
Close this window.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="request_move" since="3">
|
||||
<description summary="request move">
|
||||
Request an interactive move for this window.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="request_resize" since="3">
|
||||
<description summary="request resize">
|
||||
Request an interactive resize for this window.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="destroy" type="destructor" since="4">
|
||||
<description summary="remove resource for the org_kde_plasma_window">
|
||||
Removes the resource bound for this org_kde_plasma_window.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="get_icon" since="7">
|
||||
<description summary="Requests to get the window icon">
|
||||
The compositor will write the window icon into the provided file descriptor.
|
||||
The data is a serialized QIcon with QDataStream.
|
||||
</description>
|
||||
<arg name="fd" type="fd" summary="file descriptor for the icon"/>
|
||||
</request>
|
||||
|
||||
<event name="title_changed">
|
||||
<description summary="window title has been changed">
|
||||
This event will be sent as soon as the window title is changed.
|
||||
</description>
|
||||
<arg name="title" type="string" summary="window title"/>
|
||||
</event>
|
||||
|
||||
<event name="app_id_changed">
|
||||
<description summary="application identifier has been changed">
|
||||
This event will be sent as soon as the application
|
||||
identifier is changed.
|
||||
</description>
|
||||
<arg name="app_id" type="string"/>
|
||||
</event>
|
||||
|
||||
<event name="state_changed">
|
||||
<description summary="window state has been changed">
|
||||
This event will be sent as soon as the window state changes.
|
||||
|
||||
Values for state argument are described by org_kde_plasma_window_management.state.
|
||||
</description>
|
||||
<arg name="flags" type="uint" summary="bitfield of state flags"/>
|
||||
</event>
|
||||
|
||||
<event name="virtual_desktop_changed">
|
||||
<description summary="window was moved to another workspace">
|
||||
DEPRECATED: use virtual_desktop_entered and virtual_desktop_left instead
|
||||
This event will be sent when a window is moved to another
|
||||
virtual desktop.
|
||||
|
||||
It is not sent if it becomes visible on all virtual desktops though.
|
||||
</description>
|
||||
<arg name="number" type="int" summary="zero based virtual desktop number"/>
|
||||
</event>
|
||||
|
||||
<event name="themed_icon_name_changed">
|
||||
<description summary="window's icon name changed">
|
||||
This event will be sent whenever the themed icon name changes. May be null.
|
||||
</description>
|
||||
<arg name="name" type="string" summary="the new themed icon name"/>
|
||||
</event>
|
||||
|
||||
<event name="unmapped">
|
||||
<description summary="window's surface was unmapped">
|
||||
This event will be sent immediately after the window is closed
|
||||
and its surface is unmapped.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="initial_state" since="4">
|
||||
<description summary="All initial known state is submitted">
|
||||
This event will be sent immediately after all initial state been sent to the client.
|
||||
If the Plasma window is already unmapped, the unmapped event will be sent before the
|
||||
initial_state event.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="parent_window" since="5">
|
||||
<description summary="The parent window changed">
|
||||
This event will be sent whenever the parent window of this org_kde_plasma_window changes.
|
||||
The passed parent is another org_kde_plasma_window and this org_kde_plasma_window is a
|
||||
transient window to the parent window. If the parent argument is null, this
|
||||
org_kde_plasma_window does not have a parent window.
|
||||
</description>
|
||||
<arg name="parent" type="object" interface="org_kde_plasma_window" summary="The parent window" allow-null="true"/>
|
||||
</event>
|
||||
|
||||
<event name="geometry" since="6">
|
||||
<description summary="The geometry of this window in absolute coordinates">
|
||||
This event will be sent whenever the window geometry of this org_kde_plasma_window changes.
|
||||
The coordinates are in absolute coordinates of the windowing system.
|
||||
</description>
|
||||
<arg name="x" type="int" summary="x position of the org_kde_plasma_window"/>
|
||||
<arg name="y" type="int" summary="y position of the org_kde_plasma_window"/>
|
||||
<arg name="width" type="uint" summary="width of the org_kde_plasma_window"/>
|
||||
<arg name="height" type="uint" summary="height of the org_kde_plasma_window"/>
|
||||
</event>
|
||||
|
||||
<event name="icon_changed" since="7">
|
||||
<description summary="The icon of the window changed">
|
||||
This event will be sent whenever the icon of the window changes, but there is no themed
|
||||
icon name. Common examples are Xwayland windows which have a pixmap based icon.
|
||||
|
||||
The client can request the icon using get_icon.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="pid_changed">
|
||||
<description summary="process id of application owning the window has changed">
|
||||
This event will be sent when the compositor has set the process id this window belongs to.
|
||||
This should be set once before the initial_state is sent.
|
||||
</description>
|
||||
<arg name="pid" type="uint" summary="process id"/>
|
||||
</event>
|
||||
|
||||
|
||||
|
||||
|
||||
<request name="request_enter_virtual_desktop" since="8">
|
||||
<description summary="map window on a virtual desktop">
|
||||
Make the window enter a virtual desktop. A window can enter more
|
||||
than one virtual desktop. if the id is empty or invalid, no action will be performed.
|
||||
</description>
|
||||
<arg name="id" type="string" summary="desktop id"/>
|
||||
</request>
|
||||
|
||||
<request name="request_enter_new_virtual_desktop" since="8">
|
||||
<description summary="map window on a virtual desktop">RFC: do this with an empty id to request_enter_virtual_desktop?
|
||||
Make the window enter a new virtual desktop. If the server consents the request,
|
||||
it will create a new virtual desktop and assign the window to it.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="request_leave_virtual_desktop" since="8">
|
||||
<description summary="remove a window from a virtual desktop">
|
||||
Make the window exit a virtual desktop. If it exits all desktops it will be considered on all of them.
|
||||
</description>
|
||||
<arg name="id" type="string" summary="desktop id"/>
|
||||
</request>
|
||||
|
||||
<event name="virtual_desktop_entered" since="8">
|
||||
<description summary="the window entered a new virtual desktop">
|
||||
This event will be sent when the window has entered a new virtual desktop. The window can be on more than one desktop, or none: then is considered on all of them.
|
||||
</description>
|
||||
<arg name="id" type="string" summary="desktop id"/>
|
||||
</event>
|
||||
|
||||
<event name="virtual_desktop_left" since="8">
|
||||
<description summary="the window left a virtual desktop">
|
||||
This event will be sent when the window left a virtual desktop. If the window leaves all desktops, it can be considered on all.
|
||||
If the window gets manually added on all desktops, the server has to send virtual_desktop_left for every previous desktop it was in for the window to be really considered on all desktops.
|
||||
</description>
|
||||
<arg name="is" type="string" summary="desktop id"/>
|
||||
</event>
|
||||
|
||||
<!-- Version 10 additions -->
|
||||
|
||||
<event name="application_menu" since="10">
|
||||
<description summary="notify the client that the current appmenu changed">
|
||||
This event will be sent after the application menu
|
||||
for the window has changed.
|
||||
</description>
|
||||
<arg name="service_name" type="string" />
|
||||
<arg name="object_path" type="string" />
|
||||
</event>
|
||||
|
||||
<request name="request_enter_activity" since="14">
|
||||
<description summary="map window on an activity">
|
||||
Make the window enter an activity. A window can enter more activity. If the id is empty or invalid, no action will be performed.
|
||||
</description>
|
||||
<arg name="id" type="string" summary="activity id"/>
|
||||
</request>
|
||||
|
||||
<request name="request_leave_activity" since="14">
|
||||
<description summary="remove a window from an activity">
|
||||
Make the window exit a an activity. If it exits all activities it will be considered on all of them.
|
||||
</description>
|
||||
<arg name="id" type="string" summary="activity id"/>
|
||||
</request>
|
||||
|
||||
<event name="activity_entered" since="14">
|
||||
<description summary="the window entered an activity">
|
||||
This event will be sent when the window has entered an activity. The window can be on more than one activity, or none: then is considered on all of them.
|
||||
</description>
|
||||
<arg name="id" type="string" summary="activity id"/>
|
||||
</event>
|
||||
|
||||
<event name="activity_left" since="14">
|
||||
<description summary="the window left an activity">
|
||||
This event will be sent when the window left an activity. If the window leaves all activities, it will be considered on all.
|
||||
If the window gets manually added on all activities, the server has to send activity_left for every previous activity it was in for the window to be really considered on all activities.
|
||||
</description>
|
||||
<arg name="id" type="string" summary="activity id"/>
|
||||
</event>
|
||||
|
||||
<request name="send_to_output" since="15">
|
||||
<description summary="send window to specified output">
|
||||
Requests this window to be displayed in a specific output.
|
||||
</description>
|
||||
<arg name="output" type="object" interface="wl_output"/>
|
||||
</request>
|
||||
|
||||
<event name="resource_name_changed" since="16">
|
||||
<description summary="X11 resource name has changed">
|
||||
This event will be sent when the X11 resource name of the window has changed.
|
||||
This is only set for XWayland windows.
|
||||
</description>
|
||||
<arg name="resource_name" type="string" summary="resource name"/>
|
||||
</event>
|
||||
|
||||
<event name="client_geometry" since="18">
|
||||
<description summary="The client geometry (i.e. without decorations etc) of this window in absolute coordinates">
|
||||
This event will be sent whenever the window geometry of this org_kde_plasma_window changes.
|
||||
The coordinates are in absolute coordinates of the windowing system.
|
||||
</description>
|
||||
<arg name="x" type="int" summary="x position of the org_kde_plasma_window"/>
|
||||
<arg name="y" type="int" summary="y position of the org_kde_plasma_window"/>
|
||||
<arg name="width" type="uint" summary="width of the org_kde_plasma_window"/>
|
||||
<arg name="height" type="uint" summary="height of the org_kde_plasma_window"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="org_kde_plasma_activation_feedback" version="1">
|
||||
<description summary="activation feedback">
|
||||
The activation manager interface provides a way to get notified
|
||||
when an application is about to be activated.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the activation manager object">
|
||||
Destroy the activation manager object. The activation objects introduced
|
||||
by this manager object will be unaffected.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="activation">
|
||||
<description summary="notify that an app is starting">
|
||||
Will be issued when an app is set to be activated. It offers
|
||||
an instance of org_kde_plasma_activation that will tell us the app_id
|
||||
and the extent of the activation.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="org_kde_plasma_activation"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="org_kde_plasma_activation" version="1">
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the org_kde_plasma_activation object">
|
||||
Notify the compositor that the org_kde_plasma_activation object will no
|
||||
longer be used.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="app_id">
|
||||
<description summary="Offers the app_id"></description>
|
||||
<arg name="app_id" type="string" summary="application id, as described in xdg_activation_v1"/>
|
||||
</event>
|
||||
|
||||
<event name="finished">
|
||||
<description summary="Notifies about activation finished, either by activation or because it got invalidated"></description>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="org_kde_plasma_stacking_order" version="17">
|
||||
<description summary="helper object for sending the stacking order">
|
||||
When this object is created, the compositor sends a window event for
|
||||
each window in the stacking order, and afterwards sends the done event
|
||||
and destroys this object.
|
||||
</description>
|
||||
|
||||
<event name="window">
|
||||
<description summary="a window in the stacking order list"/>
|
||||
<arg name="uuid" type="string" summary="window uuid"/>
|
||||
</event>
|
||||
|
||||
<event name="done" type="destructor">
|
||||
<description summary="marks the end of the list"/>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="remote_access">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2016 Oleg Chernovskiy
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_remote_access_manager" version="1">
|
||||
<description summary="Protocol for managing rendered GBM buffers passing"/>
|
||||
<event name="buffer_ready" since="1">
|
||||
<description summary="Signals about buffer ready to be consumed by clients"/>
|
||||
<arg name="id" type="int" summary="unique id of created buffer (you can use server-side fd number)"/>
|
||||
<arg name="output" type="object" interface="wl_output" summary="screen that this buffer belongs to"/>
|
||||
</event>
|
||||
<request name="get_buffer" since="1">
|
||||
<description summary="Answer on buffer_ready event, retrieves new buffer from server"/>
|
||||
<arg name="buffer" type="new_id" interface="org_kde_kwin_remote_buffer"/>
|
||||
<arg name="internal_buffer_id" type="int" summary="The internal buffer id of the buffer to create"/>
|
||||
</request>
|
||||
<request name="release" type="destructor">
|
||||
<description summary="release org_kde_kwin_remote_access_manager interface"/>
|
||||
</request>
|
||||
</interface>
|
||||
<interface name="org_kde_kwin_remote_buffer" version="1">
|
||||
<description summary="This interface allows finer control of remote buffer lifecycle"/>
|
||||
<event name="gbm_handle" since="1">
|
||||
<description summary="This is sent after binding to remote access manager" />
|
||||
<arg name="fd" type="fd"/>
|
||||
<arg name="width" type="uint"/>
|
||||
<arg name="height" type="uint"/>
|
||||
<arg name="stride" type="uint"/>
|
||||
<arg name="format" type="uint"/>
|
||||
</event>
|
||||
<request name="release" type="destructor" since="1">
|
||||
<description summary="This request comes once client no longer needs this buffer."/>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="server_decoration_palette">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2017 David Edmundson
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_server_decoration_palette_manager" version="1">
|
||||
<description summary="server side decoration palette manager interface">
|
||||
This interface allows a client to alter the palette of a server side decoration.
|
||||
</description>
|
||||
<request name="create">
|
||||
<arg name="id" type="new_id" interface="org_kde_kwin_server_decoration_palette"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
<interface name="org_kde_kwin_server_decoration_palette" version="1">
|
||||
<description summary="server side decoration palette interface">
|
||||
This interface allows a client to alter the palette of a server side decoration.
|
||||
</description>
|
||||
<request name="set_palette">
|
||||
<description summary="Set a on the server side window decoration">
|
||||
Color scheme that should be applied to the window decoration.
|
||||
Absolute file path, or name of palette in the user's config directory.
|
||||
The server may choose not to follow the requested style.
|
||||
</description>
|
||||
<arg name="palette" type="string" summary="Absolute file path, or name of palette in the user's config directory"/>
|
||||
</request>
|
||||
<request name="release" type="destructor">
|
||||
<description summary="release the palette object"/>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="server_decoration">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2015 Martin Gräßlin
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_server_decoration_manager" version="1">
|
||||
<description summary="Server side window decoration manager">
|
||||
This interface allows to coordinate whether the server should create
|
||||
a server-side window decoration around a wl_surface representing a
|
||||
shell surface (wl_shell_surface or similar). By announcing support
|
||||
for this interface the server indicates that it supports server
|
||||
side decorations.
|
||||
|
||||
Use in conjunction with zxdg_decoration_manager_v1 is undefined.
|
||||
</description>
|
||||
<request name="create">
|
||||
<description summary="Create a server-side decoration object for a given surface">
|
||||
When a client creates a server-side decoration object it indicates
|
||||
that it supports the protocol. The client is supposed to tell the
|
||||
server whether it wants server-side decorations or will provide
|
||||
client-side decorations.
|
||||
|
||||
If the client does not create a server-side decoration object for
|
||||
a surface the server interprets this as lack of support for this
|
||||
protocol and considers it as client-side decorated. Nevertheless a
|
||||
client-side decorated surface should use this protocol to indicate
|
||||
to the server that it does not want a server-side deco.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="org_kde_kwin_server_decoration"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
<enum name="mode">
|
||||
<description summary="Possible values to use in request_mode and the event mode."/>
|
||||
<entry name="None" value="0" summary="Undecorated: The surface is not decorated at all, neither server nor client-side. An example is a popup surface which should not be decorated."/>
|
||||
<entry name="Client" value="1" summary="Client-side decoration: The decoration is part of the surface and the client."/>
|
||||
<entry name="Server" value="2" summary="Server-side decoration: The server embeds the surface into a decoration frame."/>
|
||||
</enum>
|
||||
<event name="default_mode">
|
||||
<description summary="The default mode used on the server">
|
||||
This event is emitted directly after binding the interface. It contains
|
||||
the default mode for the decoration. When a new server decoration object
|
||||
is created this new object will be in the default mode until the first
|
||||
request_mode is requested.
|
||||
|
||||
The server may change the default mode at any time.
|
||||
</description>
|
||||
<arg name="mode" type="uint" summary="The default decoration mode applied to newly created server decorations."/>
|
||||
</event>
|
||||
</interface>
|
||||
<interface name="org_kde_kwin_server_decoration" version="1">
|
||||
<request name="release" type="destructor">
|
||||
<description summary="release the server decoration object"/>
|
||||
</request>
|
||||
<enum name="mode">
|
||||
<description summary="Possible values to use in request_mode and the event mode."/>
|
||||
<entry name="None" value="0" summary="Undecorated: The surface is not decorated at all, neither server nor client-side. An example is a popup surface which should not be decorated."/>
|
||||
<entry name="Client" value="1" summary="Client-side decoration: The decoration is part of the surface and the client."/>
|
||||
<entry name="Server" value="2" summary="Server-side decoration: The server embeds the surface into a decoration frame."/>
|
||||
</enum>
|
||||
<request name="request_mode">
|
||||
<description summary="The decoration mode the surface wants to use."/>
|
||||
<arg name="mode" type="uint" summary="The mode this surface wants to use."/>
|
||||
</request>
|
||||
<event name="mode">
|
||||
<description summary="The new decoration mode applied by the server">
|
||||
This event is emitted directly after the decoration is created and
|
||||
represents the base decoration policy by the server. E.g. a server
|
||||
which wants all surfaces to be client-side decorated will send Client,
|
||||
a server which wants server-side decoration will send Server.
|
||||
|
||||
The client can request a different mode through the decoration request.
|
||||
The server will acknowledge this by another event with the same mode. So
|
||||
even if a server prefers server-side decoration it's possible to force a
|
||||
client-side decoration.
|
||||
|
||||
The server may emit this event at any time. In this case the client can
|
||||
again request a different mode. It's the responsibility of the server to
|
||||
prevent a feedback loop.
|
||||
</description>
|
||||
<arg name="mode" type="uint" summary="The decoration mode applied to the surface by the server."/>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="shadow">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2015 Martin Gräßlin
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_shadow_manager" version="2">
|
||||
<request name="create">
|
||||
<arg name="id" type="new_id" interface="org_kde_kwin_shadow"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
<request name="unset">
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
<request name="destroy" type="destructor" since="2">
|
||||
<description summary="Destroy the org_kde_kwin_shadow_manager">
|
||||
Destroy the org_kde_kwin_shadow_manager object.
|
||||
</description>
|
||||
</request>
|
||||
</interface>
|
||||
<interface name="org_kde_kwin_shadow" version="2">
|
||||
<request name="commit">
|
||||
</request>
|
||||
<request name="attach_left">
|
||||
<arg name="buffer" type="object" interface="wl_buffer"/>
|
||||
</request>
|
||||
<request name="attach_top_left">
|
||||
<arg name="buffer" type="object" interface="wl_buffer"/>
|
||||
</request>
|
||||
<request name="attach_top">
|
||||
<arg name="buffer" type="object" interface="wl_buffer"/>
|
||||
</request>
|
||||
<request name="attach_top_right">
|
||||
<arg name="buffer" type="object" interface="wl_buffer"/>
|
||||
</request>
|
||||
<request name="attach_right">
|
||||
<arg name="buffer" type="object" interface="wl_buffer"/>
|
||||
</request>
|
||||
<request name="attach_bottom_right">
|
||||
<arg name="buffer" type="object" interface="wl_buffer"/>
|
||||
</request>
|
||||
<request name="attach_bottom">
|
||||
<arg name="buffer" type="object" interface="wl_buffer"/>
|
||||
</request>
|
||||
<request name="attach_bottom_left">
|
||||
<arg name="buffer" type="object" interface="wl_buffer"/>
|
||||
</request>
|
||||
<request name="set_left_offset">
|
||||
<arg name="offset" type="fixed"/>
|
||||
</request>
|
||||
<request name="set_top_offset">
|
||||
<arg name="offset" type="fixed"/>
|
||||
</request>
|
||||
<request name="set_right_offset">
|
||||
<arg name="offset" type="fixed"/>
|
||||
</request>
|
||||
<request name="set_bottom_offset">
|
||||
<arg name="offset" type="fixed"/>
|
||||
</request>
|
||||
<request name="destroy" type="destructor" since="2">
|
||||
<description summary="Destroy the org_kde_kwin_shadow">
|
||||
Destroy the org_kde_kwin_shadow object. If the org_kde_kwin_shadow is
|
||||
still set on a wl_surface the shadow will be immediately removed.
|
||||
Prefer to first call the request unset on the org_kde_kwin_shadow_manager and
|
||||
commit the wl_surface to apply the change.
|
||||
</description>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="slide">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2015 Martin Gräßlin
|
||||
SPDX-FileCopyrightText: 2015 Marco Martin
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="org_kde_kwin_slide_manager" version="1">
|
||||
<request name="create">
|
||||
<arg name="id" type="new_id" interface="org_kde_kwin_slide"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
<request name="unset">
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
<interface name="org_kde_kwin_slide" version="1">
|
||||
<description summary="slide a surface from a location to another">
|
||||
Ask the compositor to move the surface from a location to another
|
||||
with a slide animation.
|
||||
|
||||
The from argument provides a clue about where the slide animation
|
||||
begins, offset is the distance from screen edge to begin the animation.
|
||||
</description>
|
||||
<enum name="location">
|
||||
<entry name="left" value="0"/>
|
||||
<entry name="top" value="1"/>
|
||||
<entry name="right" value="2"/>
|
||||
<entry name="bottom" value="3"/>
|
||||
</enum>
|
||||
<request name="commit">
|
||||
</request>
|
||||
<request name="set_location">
|
||||
<arg name="location" type="uint"/>
|
||||
</request>
|
||||
<request name="set_offset">
|
||||
<arg name="offset" type="int"/>
|
||||
</request>
|
||||
<request name="release" type="destructor">
|
||||
<description summary="release the slide object"/>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,65 @@
|
||||
<protocol name="surface_extension">
|
||||
|
||||
<copyright>
|
||||
This file is part of the plugins of the Qt Toolkit.
|
||||
SPDX-FileCopyrightText: 2012 Digia Plc and/or its subsidiary(-ies).
|
||||
Contact: http://www.qt-project.org/legal
|
||||
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
</copyright>
|
||||
|
||||
<interface name="qt_surface_extension" version="1">
|
||||
<request name="get_extended_surface">
|
||||
<arg name="id" type="new_id" interface="qt_extended_surface"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="qt_extended_surface" version="1">
|
||||
<event name="onscreen_visibility">
|
||||
<arg name="visible" type="int"/>
|
||||
</event>
|
||||
|
||||
<event name="set_generic_property">
|
||||
<arg name="name" type="string"/>
|
||||
<arg name="value" type="array"/>
|
||||
</event>
|
||||
|
||||
<event name="close">
|
||||
</event>
|
||||
|
||||
<request name="update_generic_property">
|
||||
<arg name="name" type="string"/>
|
||||
<arg name="value" type="array"/>
|
||||
</request>
|
||||
|
||||
<enum name="orientation">
|
||||
<entry name="PrimaryOrientation" value="0"/>
|
||||
<entry name="PortraitOrientation" value="1"/>
|
||||
<entry name="LandscapeOrientation" value="2"/>
|
||||
<entry name="InvertedPortraitOrientation" value="4"/>
|
||||
<entry name="InvertedLandscapeOrientation" value="8"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_content_orientation_mask">
|
||||
<arg name="orientation" type="int"/>
|
||||
</request>
|
||||
|
||||
<enum name="windowflag">
|
||||
<entry name="OverridesSystemGestures" value="1"/>
|
||||
<entry name="StaysOnTop" value="2"/>
|
||||
<entry name="BypassWindowManager" value="4"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_window_flags">
|
||||
<arg name="flags" type="int"/>
|
||||
</request>
|
||||
|
||||
<request name="raise">
|
||||
</request>
|
||||
|
||||
<request name="lower">
|
||||
</request>
|
||||
|
||||
</interface>
|
||||
</protocol>
|
||||
+459
@@ -0,0 +1,459 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<protocol name="text_input_unstable_v2">
|
||||
<copyright>
|
||||
SPDX-FileCopyrightText: 2012, 2013 Intel Corporation
|
||||
SPDX-FileCopyrightText: 2015, 2016 Jan Arne Petersen
|
||||
|
||||
SPDX-License-Identifier: MIT-CMU
|
||||
</copyright>
|
||||
|
||||
<interface name="zwp_text_input_v2" version="1">
|
||||
<description summary="text input">
|
||||
The zwp_text_input_v2 interface represents text input and input methods
|
||||
associated with a seat. It provides enter/leave events to follow the
|
||||
text input focus for a seat.
|
||||
|
||||
Requests are used to enable/disable the text-input object and set
|
||||
state information like surrounding and selected text or the content type.
|
||||
The information about the entered text is sent to the text-input object
|
||||
via the pre-edit and commit events. Using this interface removes the need
|
||||
for applications to directly process hardware key events and compose text
|
||||
out of them.
|
||||
|
||||
Text is valid UTF-8 encoded, indices and lengths are in bytes. Indices
|
||||
have to always point to the first byte of an UTF-8 encoded code point.
|
||||
Lengths are not allowed to contain just a part of an UTF-8 encoded code
|
||||
point.
|
||||
|
||||
State is sent by the state requests (set_surrounding_text,
|
||||
set_content_type, set_cursor_rectangle and set_preferred_language) and
|
||||
an update_state request. After an enter or an input_method_change event
|
||||
all state information is invalidated and needs to be resent from the
|
||||
client. A reset or entering a new widget on client side also
|
||||
invalidates all current state information.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="Destroy the wp_text_input">
|
||||
Destroy the wp_text_input object. Also disables all surfaces enabled
|
||||
through this wp_text_input object
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="enable">
|
||||
<description summary="enable text input for surface">
|
||||
Enable text input in a surface (usually when a text entry inside of it
|
||||
has focus).
|
||||
|
||||
This can be called before or after a surface gets text (or keyboard)
|
||||
focus via the enter event. Text input to a surface is only active
|
||||
when it has the current text (or keyboard) focus and is enabled.
|
||||
</description>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
|
||||
<request name="disable">
|
||||
<description summary="disable text input for surface">
|
||||
Disable text input in a surface (typically when there is no focus on any
|
||||
text entry inside the surface).
|
||||
</description>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
|
||||
<request name="show_input_panel">
|
||||
<description summary="show input panels">
|
||||
Requests input panels (virtual keyboard) to show.
|
||||
|
||||
This should be used for example to show a virtual keyboard again
|
||||
(with a tap) after it was closed by pressing on a close button on the
|
||||
keyboard.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="hide_input_panel">
|
||||
<description summary="hide input panels">
|
||||
Requests input panels (virtual keyboard) to hide.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="set_surrounding_text">
|
||||
<description summary="sets the surrounding text">
|
||||
Sets the plain surrounding text around the input position. Text is
|
||||
UTF-8 encoded. Cursor is the byte offset within the surrounding text.
|
||||
Anchor is the byte offset of the selection anchor within the
|
||||
surrounding text. If there is no selected text, anchor is the same as
|
||||
cursor.
|
||||
|
||||
Make sure to always send some text before and after the cursor
|
||||
except when the cursor is at the beginning or end of text.
|
||||
|
||||
When there was a configure_surrounding_text event take the
|
||||
before_cursor and after_cursor arguments into account for picking how
|
||||
much surrounding text to send.
|
||||
|
||||
There is a maximum length of wayland messages so text can not be
|
||||
longer than 4000 bytes.
|
||||
</description>
|
||||
<arg name="text" type="string"/>
|
||||
<arg name="cursor" type="int"/>
|
||||
<arg name="anchor" type="int"/>
|
||||
</request>
|
||||
|
||||
<enum name="content_hint" bitfield="true">
|
||||
<description summary="content hint">
|
||||
Content hint is a bitmask to allow to modify the behavior of the text
|
||||
input.
|
||||
</description>
|
||||
<entry name="none" value="0x0" summary="no special behaviour"/>
|
||||
<entry name="auto_completion" value="0x1" summary="suggest word completions"/>
|
||||
<entry name="auto_correction" value="0x2" summary="suggest word corrections"/>
|
||||
<entry name="auto_capitalization" value="0x4" summary="switch to uppercase letters at the start of a sentence"/>
|
||||
<entry name="lowercase" value="0x8" summary="prefer lowercase letters"/>
|
||||
<entry name="uppercase" value="0x10" summary="prefer uppercase letters"/>
|
||||
<entry name="titlecase" value="0x20" summary="prefer casing for titles and headings (can be language dependent)"/>
|
||||
<entry name="hidden_text" value="0x40" summary="characters should be hidden"/>
|
||||
<entry name="sensitive_data" value="0x80" summary="typed text should not be stored"/>
|
||||
<entry name="latin" value="0x100" summary="just latin characters should be entered"/>
|
||||
<entry name="multiline" value="0x200" summary="the text input is multiline"/>
|
||||
</enum>
|
||||
|
||||
<enum name="content_purpose">
|
||||
<description summary="content purpose">
|
||||
The content purpose allows to specify the primary purpose of a text
|
||||
input.
|
||||
|
||||
This allows an input method to show special purpose input panels with
|
||||
extra characters or to disallow some characters.
|
||||
</description>
|
||||
<entry name="normal" value="0" summary="default input, allowing all characters"/>
|
||||
<entry name="alpha" value="1" summary="allow only alphabetic characters"/>
|
||||
<entry name="digits" value="2" summary="allow only digits"/>
|
||||
<entry name="number" value="3" summary="input a number (including decimal separator and sign)"/>
|
||||
<entry name="phone" value="4" summary="input a phone number"/>
|
||||
<entry name="url" value="5" summary="input an URL"/>
|
||||
<entry name="email" value="6" summary="input an email address"/>
|
||||
<entry name="name" value="7" summary="input a name of a person"/>
|
||||
<entry name="password" value="8" summary="input a password (combine with password or sensitive_data hint)"/>
|
||||
<entry name="date" value="9" summary="input a date"/>
|
||||
<entry name="time" value="10" summary="input a time"/>
|
||||
<entry name="datetime" value="11" summary="input a date and time"/>
|
||||
<entry name="terminal" value="12" summary="input for a terminal"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_content_type">
|
||||
<description summary="set content purpose and hint">
|
||||
Sets the content purpose and content hint. While the purpose is the
|
||||
basic purpose of an input field, the hint flags allow to modify some
|
||||
of the behavior.
|
||||
|
||||
When no content type is explicitly set, a normal content purpose with
|
||||
none hint should be assumed.
|
||||
</description>
|
||||
<arg name="hint" type="uint" enum="content_hint"/>
|
||||
<arg name="purpose" type="uint" enum="content_purpose"/>
|
||||
</request>
|
||||
|
||||
<request name="set_cursor_rectangle">
|
||||
<description summary="set cursor position">
|
||||
Sets the cursor outline as a x, y, width, height rectangle in surface
|
||||
local coordinates.
|
||||
|
||||
Allows the compositor to put a window with word suggestions near the
|
||||
cursor.
|
||||
</description>
|
||||
<arg name="x" type="int"/>
|
||||
<arg name="y" type="int"/>
|
||||
<arg name="width" type="int"/>
|
||||
<arg name="height" type="int"/>
|
||||
</request>
|
||||
|
||||
<request name="set_preferred_language">
|
||||
<description summary="sets preferred language">
|
||||
Sets a specific language. This allows for example a virtual keyboard to
|
||||
show a language specific layout. The "language" argument is a RFC-3066
|
||||
format language tag.
|
||||
|
||||
It could be used for example in a word processor to indicate language of
|
||||
currently edited document or in an instant message application which
|
||||
tracks languages of contacts.
|
||||
</description>
|
||||
<arg name="language" type="string"/>
|
||||
</request>
|
||||
|
||||
<enum name="update_state">
|
||||
<description summary="update_state flags">
|
||||
Defines the reason for sending an updated state.
|
||||
</description>
|
||||
<entry name="change" value="0" summary="updated state because it changed"/>
|
||||
<entry name="full" value="1" summary="full state after enter or input_method_changed event"/>
|
||||
<entry name="reset" value="2" summary="full state after reset"/>
|
||||
<entry name="enter" value="3" summary="full state after switching focus to a different widget on client side"/>
|
||||
</enum>
|
||||
|
||||
<request name="update_state">
|
||||
<description summary="update state">
|
||||
Allows to atomically send state updates from client.
|
||||
|
||||
This request should follow after a batch of state updating requests
|
||||
like set_surrounding_text, set_content_type, set_cursor_rectangle and
|
||||
set_preferred_language.
|
||||
|
||||
The flags field indicates why an updated state is sent to the input
|
||||
method.
|
||||
|
||||
Reset should be used by an editor widget after the text was changed
|
||||
outside of the normal input method flow.
|
||||
|
||||
For "change" it is enough to send the changed state, else the full
|
||||
state should be send.
|
||||
|
||||
Serial should be set to the serial from the last enter or
|
||||
input_method_changed event.
|
||||
|
||||
To make sure to not receive outdated input method events after a
|
||||
reset or switching to a new widget wl_display_sync() should be used
|
||||
after update_state in these cases.
|
||||
</description>
|
||||
<arg name="serial" type="uint" summary="serial of the enter or input_method_changed event"/>
|
||||
<arg name="reason" type="uint" enum="update_state"/>
|
||||
</request>
|
||||
|
||||
<event name="enter">
|
||||
<description summary="enter event">
|
||||
Notification that this seat's text-input focus is on a certain surface.
|
||||
|
||||
When the seat has the keyboard capability the text-input focus follows
|
||||
the keyboard focus.
|
||||
</description>
|
||||
<arg name="serial" type="uint" summary="serial to be used by update_state"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</event>
|
||||
|
||||
<event name="leave">
|
||||
<description summary="leave event">
|
||||
Notification that this seat's text-input focus is no longer on
|
||||
a certain surface.
|
||||
|
||||
The leave notification is sent before the enter notification
|
||||
for the new focus.
|
||||
|
||||
When the seat has the keyboard capability the text-input focus follows
|
||||
the keyboard focus.
|
||||
</description>
|
||||
<arg name="serial" type="uint"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</event>
|
||||
|
||||
<enum name="input_panel_visibility">
|
||||
<entry name="hidden" value="0"
|
||||
summary="the input panel (virtual keyboard) is hidden"/>
|
||||
<entry name="visible" value="1"
|
||||
summary="the input panel (virtual keyboard) is visible"/>
|
||||
</enum>
|
||||
|
||||
<event name="input_panel_state">
|
||||
<description summary="state of the input panel">
|
||||
Notification that the visibility of the input panel (virtual keyboard)
|
||||
changed.
|
||||
|
||||
The rectangle x, y, width, height defines the area overlapped by the
|
||||
input panel (virtual keyboard) on the surface having the text
|
||||
focus in surface local coordinates.
|
||||
|
||||
That can be used to make sure widgets are visible and not covered by
|
||||
a virtual keyboard.
|
||||
</description>
|
||||
<arg name="state" type="uint" enum="input_panel_visibility"/>
|
||||
<arg name="x" type="int"/>
|
||||
<arg name="y" type="int"/>
|
||||
<arg name="width" type="int"/>
|
||||
<arg name="height" type="int"/>
|
||||
</event>
|
||||
|
||||
<event name="preedit_string">
|
||||
<description summary="pre-edit">
|
||||
Notify when a new composing text (pre-edit) should be set around the
|
||||
current cursor position. Any previously set composing text should
|
||||
be removed.
|
||||
|
||||
The commit text can be used to replace the composing text in some cases
|
||||
(for example when losing focus).
|
||||
|
||||
The text input should also handle all preedit_style and preedit_cursor
|
||||
events occurring directly before preedit_string.
|
||||
</description>
|
||||
<arg name="text" type="string"/>
|
||||
<arg name="commit" type="string"/>
|
||||
</event>
|
||||
|
||||
<enum name="preedit_style">
|
||||
<entry name="default" value="0" summary="default style for composing text"/>
|
||||
<entry name="none" value="1" summary="composing text should be shown the same as non-composing text"/>
|
||||
<entry name="active" value="2" summary="composing text might be bold"/>
|
||||
<entry name="inactive" value="3" summary="composing text might be cursive"/>
|
||||
<entry name="highlight" value="4" summary="composing text might have a different background color"/>
|
||||
<entry name="underline" value="5" summary="composing text might be underlined"/>
|
||||
<entry name="selection" value="6" summary="composing text should be shown the same as selected text"/>
|
||||
<entry name="incorrect" value="7" summary="composing text might be underlined with a red wavy line"/>
|
||||
</enum>
|
||||
|
||||
<event name="preedit_styling">
|
||||
<description summary="pre-edit styling">
|
||||
Sets styling information on composing text. The style is applied for
|
||||
length bytes from index relative to the beginning of the composing
|
||||
text (as byte offset). Multiple styles can be applied to a composing
|
||||
text by sending multiple preedit_styling events.
|
||||
|
||||
This event is handled as part of a following preedit_string event.
|
||||
</description>
|
||||
<arg name="index" type="uint"/>
|
||||
<arg name="length" type="uint"/>
|
||||
<arg name="style" type="uint" enum="preedit_style"/>
|
||||
</event>
|
||||
|
||||
<event name="preedit_cursor">
|
||||
<description summary="pre-edit cursor">
|
||||
Sets the cursor position inside the composing text (as byte
|
||||
offset) relative to the start of the composing text. When index is a
|
||||
negative number no cursor is shown.
|
||||
|
||||
When no preedit_cursor event is sent the cursor will be at the end of
|
||||
the composing text by default.
|
||||
|
||||
This event is handled as part of a following preedit_string event.
|
||||
</description>
|
||||
<arg name="index" type="int"/>
|
||||
</event>
|
||||
|
||||
<event name="commit_string">
|
||||
<description summary="commit">
|
||||
Notify when text should be inserted into the editor widget. The text to
|
||||
commit could be either just a single character after a key press or the
|
||||
result of some composing (pre-edit). It could be also an empty text
|
||||
when some text should be removed (see delete_surrounding_text) or when
|
||||
the input cursor should be moved (see cursor_position).
|
||||
|
||||
Any previously set composing text should be removed.
|
||||
</description>
|
||||
<arg name="text" type="string"/>
|
||||
</event>
|
||||
|
||||
<event name="cursor_position">
|
||||
<description summary="set cursor to new position">
|
||||
Notify when the cursor or anchor position should be modified.
|
||||
|
||||
This event should be handled as part of a following commit_string
|
||||
event.
|
||||
|
||||
The text between anchor and index should be selected.
|
||||
</description>
|
||||
<arg name="index" type="int" summary="position of cursor"/>
|
||||
<arg name="anchor" type="int" summary="position of selection anchor"/>
|
||||
</event>
|
||||
|
||||
<event name="delete_surrounding_text">
|
||||
<description summary="delete surrounding text">
|
||||
Notify when the text around the current cursor position should be
|
||||
deleted. BeforeLength and afterLength is the length (in bytes) of text
|
||||
before and after the current cursor position (excluding the selection)
|
||||
to delete.
|
||||
|
||||
This event should be handled as part of a following commit_string
|
||||
or preedit_string event.
|
||||
</description>
|
||||
<arg name="before_length" type="uint" summary="length of text before current cursor position"/>
|
||||
<arg name="after_length" type="uint" summary="length of text after current cursor position"/>
|
||||
</event>
|
||||
|
||||
<event name="modifiers_map">
|
||||
<description summary="modifiers map">
|
||||
Transfer an array of 0-terminated modifiers names. The position in
|
||||
the array is the index of the modifier as used in the modifiers
|
||||
bitmask in the keysym event.
|
||||
</description>
|
||||
<arg name="map" type="array"/>
|
||||
</event>
|
||||
|
||||
<event name="keysym">
|
||||
<description summary="keysym">
|
||||
Notify when a key event was sent. Key events should not be used
|
||||
for normal text input operations, which should be done with
|
||||
commit_string, delete_surrounding_text, etc. The key event follows
|
||||
the wl_keyboard key event convention. Sym is a XKB keysym, state a
|
||||
wl_keyboard key_state. Modifiers are a mask for effective modifiers
|
||||
(where the modifier indices are set by the modifiers_map event)
|
||||
</description>
|
||||
<arg name="time" type="uint"/>
|
||||
<arg name="sym" type="uint"/>
|
||||
<arg name="state" type="uint"/>
|
||||
<arg name="modifiers" type="uint"/>
|
||||
</event>
|
||||
|
||||
<event name="language">
|
||||
<description summary="language">
|
||||
Sets the language of the input text. The "language" argument is a RFC-3066
|
||||
format language tag.
|
||||
</description>
|
||||
<arg name="language" type="string"/>
|
||||
</event>
|
||||
|
||||
<enum name="text_direction">
|
||||
<entry name="auto" value="0" summary="automatic text direction based on text and language"/>
|
||||
<entry name="ltr" value="1" summary="left-to-right"/>
|
||||
<entry name="rtl" value="2" summary="right-to-left"/>
|
||||
</enum>
|
||||
|
||||
<event name="text_direction">
|
||||
<description summary="text direction">
|
||||
Sets the text direction of input text.
|
||||
|
||||
It is mainly needed for showing input cursor on correct side of the
|
||||
editor when there is no input yet done and making sure neutral
|
||||
direction text is laid out properly.
|
||||
</description>
|
||||
<arg name="direction" type="uint" enum="text_direction"/>
|
||||
</event>
|
||||
|
||||
<event name="configure_surrounding_text">
|
||||
<description summary="configure amount of surrounding text to be sent">
|
||||
Configure what amount of surrounding text is expected by the
|
||||
input method. The surrounding text will be sent in the
|
||||
set_surrounding_text request on the following state information updates.
|
||||
</description>
|
||||
<arg name="before_cursor" type="int"/>
|
||||
<arg name="after_cursor" type="int"/>
|
||||
</event>
|
||||
|
||||
<event name="input_method_changed">
|
||||
<description summary="Notifies about a changed input method">
|
||||
The input method changed on compositor side, which invalidates all
|
||||
current state information. New state information should be sent from
|
||||
the client via state requests (set_surrounding_text,
|
||||
set_content_hint, ...) and update_state.
|
||||
</description>
|
||||
<arg name="serial" type="uint" summary="serial to be used by update_state"/>
|
||||
<arg name="flags" type="uint" summary="currently unused"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="zwp_text_input_manager_v2" version="1">
|
||||
<description summary="text input manager">
|
||||
A factory for text-input objects. This object is a global singleton.
|
||||
</description>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="Destroy the wp_text_input_manager">
|
||||
Destroy the wp_text_input_manager object.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="get_text_input">
|
||||
<description summary="create a new text input object">
|
||||
Creates a new text-input object for a given seat.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="zwp_text_input_v2"/>
|
||||
<arg name="seat" type="object" interface="wl_seat"/>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
@@ -0,0 +1,327 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="text">
|
||||
|
||||
<copyright>
|
||||
SPDX-FileCopyrightText: 2012, 2013 Intel Corporation
|
||||
|
||||
SPDX-License-Identifier: MIT-CMU
|
||||
</copyright>
|
||||
|
||||
<interface name="wl_text_input" version="1">
|
||||
<description summary="text input">
|
||||
An object used for text input. Adds support for text input and input
|
||||
methods to applications. A text-input object is created from a
|
||||
wl_text_input_manager and corresponds typically to a text entry in an
|
||||
application.
|
||||
Requests are used to activate/deactivate the text-input object and set
|
||||
state information like surrounding and selected text or the content type.
|
||||
The information about entered text is sent to the text-input object via
|
||||
the pre-edit and commit events. Using this interface removes the need
|
||||
for applications to directly process hardware key events and compose text
|
||||
out of them.
|
||||
|
||||
Text is generally UTF-8 encoded, indices and lengths are in bytes.
|
||||
|
||||
Serials are used to synchronize the state between the text input and
|
||||
an input method. New serials are sent by the text input in the
|
||||
commit_state request and are used by the input method to indicate
|
||||
the known text input state in events like preedit_string, commit_string,
|
||||
and keysym. The text input can then ignore events from the input method
|
||||
which are based on an outdated state (for example after a reset).
|
||||
</description>
|
||||
<request name="activate">
|
||||
<description summary="request activation">
|
||||
Requests the text-input object to be activated (typically when the
|
||||
text entry gets focus).
|
||||
The seat argument is a wl_seat which maintains the focus for this
|
||||
activation. The surface argument is a wl_surface assigned to the
|
||||
text-input object and tracked for focus lost. The enter event
|
||||
is emitted on successful activation.
|
||||
</description>
|
||||
<arg name="seat" type="object" interface="wl_seat"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</request>
|
||||
<request name="deactivate">
|
||||
<description summary="request deactivation">
|
||||
Requests the text-input object to be deactivated (typically when the
|
||||
text entry lost focus). The seat argument is a wl_seat which was used
|
||||
for activation.
|
||||
</description>
|
||||
<arg name="seat" type="object" interface="wl_seat"/>
|
||||
</request>
|
||||
<request name="show_input_panel">
|
||||
<description summary="show input panels">
|
||||
Requests input panels (virtual keyboard) to show.
|
||||
</description>
|
||||
</request>
|
||||
<request name="hide_input_panel">
|
||||
<description summary="hide input panels">
|
||||
Requests input panels (virtual keyboard) to hide.
|
||||
</description>
|
||||
</request>
|
||||
<request name="reset">
|
||||
<description summary="reset">
|
||||
Should be called by an editor widget when the input state should be
|
||||
reset, for example after the text was changed outside of the normal
|
||||
input method flow.
|
||||
</description>
|
||||
</request>
|
||||
<request name="set_surrounding_text">
|
||||
<description summary="sets the surrounding text">
|
||||
Sets the plain surrounding text around the input position. Text is
|
||||
UTF-8 encoded. Cursor is the byte offset within the
|
||||
surrounding text. Anchor is the byte offset of the
|
||||
selection anchor within the surrounding text. If there is no selected
|
||||
text anchor is the same as cursor.
|
||||
</description>
|
||||
<arg name="text" type="string"/>
|
||||
<arg name="cursor" type="uint"/>
|
||||
<arg name="anchor" type="uint"/>
|
||||
</request>
|
||||
<enum name="content_hint">
|
||||
<description summary="content hint">
|
||||
Content hint is a bitmask to allow to modify the behavior of the text
|
||||
input.
|
||||
</description>
|
||||
<entry name="none" value="0x0" summary="no special behaviour"/>
|
||||
<entry name="default" value="0x7" summary="auto completion, correction and capitalization"/>
|
||||
<entry name="password" value="0xc0" summary="hidden and sensitive text"/>
|
||||
<entry name="auto_completion" value="0x1" summary="suggest word completions"/>
|
||||
<entry name="auto_correction" value="0x2" summary="suggest word corrections"/>
|
||||
<entry name="auto_capitalization" value="0x4" summary="switch to uppercase letters at the start of a sentence"/>
|
||||
<entry name="lowercase" value="0x8" summary="prefer lowercase letters"/>
|
||||
<entry name="uppercase" value="0x10" summary="prefer uppercase letters"/>
|
||||
<entry name="titlecase" value="0x20" summary="prefer casing for titles and headings (can be language dependent)"/>
|
||||
<entry name="hidden_text" value="0x40" summary="characters should be hidden"/>
|
||||
<entry name="sensitive_data" value="0x80" summary="typed text should not be stored"/>
|
||||
<entry name="latin" value="0x100" summary="just latin characters should be entered"/>
|
||||
<entry name="multiline" value="0x200" summary="the text input is multiline"/>
|
||||
</enum>
|
||||
<enum name="content_purpose">
|
||||
<description summary="content purpose">
|
||||
The content purpose allows to specify the primary purpose of a text
|
||||
input.
|
||||
|
||||
This allows an input method to show special purpose input panels with
|
||||
extra characters or to disallow some characters.
|
||||
</description>
|
||||
<entry name="normal" value="0" summary="default input, allowing all characters"/>
|
||||
<entry name="alpha" value="1" summary="allow only alphabetic characters"/>
|
||||
<entry name="digits" value="2" summary="allow only digits"/>
|
||||
<entry name="number" value="3" summary="input a number (including decimal separator and sign)"/>
|
||||
<entry name="phone" value="4" summary="input a phone number"/>
|
||||
<entry name="url" value="5" summary="input an URL"/>
|
||||
<entry name="email" value="6" summary="input an email address"/>
|
||||
<entry name="name" value="7" summary="input a name of a person"/>
|
||||
<entry name="password" value="8" summary="input a password (combine with password or sensitive_data hint)"/>
|
||||
<entry name="date" value="9" summary="input a date"/>
|
||||
<entry name="time" value="10" summary="input a time"/>
|
||||
<entry name="datetime" value="11" summary="input a date and time"/>
|
||||
<entry name="terminal" value="12" summary="input for a terminal"/>
|
||||
</enum>
|
||||
<request name="set_content_type">
|
||||
<description summary="set content purpose and hint">
|
||||
Sets the content purpose and content hint. While the purpose is the
|
||||
basic purpose of an input field, the hint flags allow to modify some
|
||||
of the behavior.
|
||||
|
||||
When no content type is explicitly set, a normal content purpose with
|
||||
default hints (auto completion, auto correction, auto capitalization)
|
||||
should be assumed.
|
||||
</description>
|
||||
<arg name="hint" type="uint"/>
|
||||
<arg name="purpose" type="uint"/>
|
||||
</request>
|
||||
<request name="set_cursor_rectangle">
|
||||
<arg name="x" type="int"/>
|
||||
<arg name="y" type="int"/>
|
||||
<arg name="width" type="int"/>
|
||||
<arg name="height" type="int"/>
|
||||
</request>
|
||||
<request name="set_preferred_language">
|
||||
<description summary="sets preferred language">
|
||||
Sets a specific language. This allows for example a virtual keyboard to
|
||||
show a language specific layout. The "language" argument is a RFC-3066
|
||||
format language tag.
|
||||
|
||||
It could be used for example in a word processor to indicate language of
|
||||
currently edited document or in an instant message application which tracks
|
||||
languages of contacts.
|
||||
</description>
|
||||
<arg name="language" type="string"/>
|
||||
</request>
|
||||
<request name="commit_state">
|
||||
<arg name="serial" type="uint" summary="used to identify the known state"/>
|
||||
</request>
|
||||
<request name="invoke_action">
|
||||
<arg name="button" type="uint"/>
|
||||
<arg name="index" type="uint"/>
|
||||
</request>
|
||||
<event name="enter">
|
||||
<description summary="enter event">
|
||||
Notify the text-input object when it received focus. Typically in
|
||||
response to an activate request.
|
||||
</description>
|
||||
<arg name="surface" type="object" interface="wl_surface"/>
|
||||
</event>
|
||||
<event name="leave">
|
||||
<description summary="leave event">
|
||||
Notify the text-input object when it lost focus. Either in response
|
||||
to a deactivate request or when the assigned surface lost focus or was
|
||||
destroyed.
|
||||
</description>
|
||||
</event>
|
||||
<event name="modifiers_map">
|
||||
<description summary="modifiers map">
|
||||
Transfer an array of 0-terminated modifiers names. The position in
|
||||
the array is the index of the modifier as used in the modifiers
|
||||
bitmask in the keysym event.
|
||||
</description>
|
||||
<arg name="map" type="array"/>
|
||||
</event>
|
||||
<event name="input_panel_state">
|
||||
<description summary="state of the input panel">
|
||||
Notify when the visibility state of the input panel changed.
|
||||
</description>
|
||||
<arg name="state" type="uint"/>
|
||||
</event>
|
||||
<event name="preedit_string">
|
||||
<description summary="pre-edit">
|
||||
Notify when a new composing text (pre-edit) should be set around the
|
||||
current cursor position. Any previously set composing text should
|
||||
be removed.
|
||||
|
||||
The commit text can be used to replace the preedit text on reset
|
||||
(for example on unfocus).
|
||||
|
||||
The text input should also handle all preedit_style and preedit_cursor
|
||||
events occurring directly before preedit_string.
|
||||
</description>
|
||||
<arg name="serial" type="uint" summary="serial of the latest known text input state"/>
|
||||
<arg name="text" type="string"/>
|
||||
<arg name="commit" type="string"/>
|
||||
</event>
|
||||
<enum name="preedit_style">
|
||||
<entry name="default" value="0" summary="default style for composing text"/>
|
||||
<entry name="none" value="1" summary="style should be the same as in non-composing text"/>
|
||||
<entry name="active" value="2"/>
|
||||
<entry name="inactive" value="3"/>
|
||||
<entry name="highlight" value="4"/>
|
||||
<entry name="underline" value="5"/>
|
||||
<entry name="selection" value="6"/>
|
||||
<entry name="incorrect" value="7"/>
|
||||
</enum>
|
||||
<event name="preedit_styling">
|
||||
<description summary="pre-edit styling">
|
||||
Sets styling information on composing text. The style is applied for
|
||||
length bytes from index relative to the beginning of the composing
|
||||
text (as byte offset). Multiple styles can
|
||||
be applied to a composing text by sending multiple preedit_styling
|
||||
events.
|
||||
|
||||
This event is handled as part of a following preedit_string event.
|
||||
</description>
|
||||
<arg name="index" type="uint"/>
|
||||
<arg name="length" type="uint"/>
|
||||
<arg name="style" type="uint"/>
|
||||
</event>
|
||||
<event name="preedit_cursor">
|
||||
<description summary="pre-edit cursor">
|
||||
Sets the cursor position inside the composing text (as byte
|
||||
offset) relative to the start of the composing text. When index is a
|
||||
negative number no cursor is shown.
|
||||
|
||||
This event is handled as part of a following preedit_string event.
|
||||
</description>
|
||||
<arg name="index" type="int"/>
|
||||
</event>
|
||||
<event name="commit_string">
|
||||
<description summary="commit">
|
||||
Notify when text should be inserted into the editor widget. The text to
|
||||
commit could be either just a single character after a key press or the
|
||||
result of some composing (pre-edit). It could be also an empty text
|
||||
when some text should be removed (see delete_surrounding_text) or when
|
||||
the input cursor should be moved (see cursor_position).
|
||||
|
||||
Any previously set composing text should be removed.
|
||||
</description>
|
||||
<arg name="serial" type="uint" summary="serial of the latest known text input state"/>
|
||||
<arg name="text" type="string"/>
|
||||
</event>
|
||||
<event name="cursor_position">
|
||||
<description summary="set cursor to new position">
|
||||
Notify when the cursor or anchor position should be modified.
|
||||
|
||||
This event should be handled as part of a following commit_string
|
||||
event.
|
||||
</description>
|
||||
<arg name="index" type="int"/>
|
||||
<arg name="anchor" type="int"/>
|
||||
</event>
|
||||
<event name="delete_surrounding_text">
|
||||
<description summary="delete surrounding text">
|
||||
Notify when the text around the current cursor position should be
|
||||
deleted.
|
||||
|
||||
Index is relative to the current cursor (in bytes).
|
||||
Length is the length of deleted text (in bytes).
|
||||
|
||||
This event should be handled as part of a following commit_string
|
||||
event.
|
||||
</description>
|
||||
<arg name="index" type="int"/>
|
||||
<arg name="length" type="uint"/>
|
||||
</event>
|
||||
<event name="keysym">
|
||||
<description summary="keysym">
|
||||
Notify when a key event was sent. Key events should not be used
|
||||
for normal text input operations, which should be done with
|
||||
commit_string, delete_surrounding_text, etc. The key event follows
|
||||
the wl_keyboard key event convention. Sym is a XKB keysym, state a
|
||||
wl_keyboard key_state. Modifiers are a mask for effective modifiers
|
||||
(where the modifier indices are set by the modifiers_map event)
|
||||
</description>
|
||||
<arg name="serial" type="uint" summary="serial of the latest known text input state"/>
|
||||
<arg name="time" type="uint"/>
|
||||
<arg name="sym" type="uint"/>
|
||||
<arg name="state" type="uint"/>
|
||||
<arg name="modifiers" type="uint"/>
|
||||
</event>
|
||||
<event name="language">
|
||||
<description summary="language">
|
||||
Sets the language of the input text. The "language" argument is a RFC-3066
|
||||
format language tag.
|
||||
</description>
|
||||
<arg name="serial" type="uint" summary="serial of the latest known text input state"/>
|
||||
<arg name="language" type="string"/>
|
||||
</event>
|
||||
<enum name="text_direction">
|
||||
<entry name="auto" value="0" summary="automatic text direction based on text and language"/>
|
||||
<entry name="ltr" value="1" summary="left-to-right"/>
|
||||
<entry name="rtl" value="2" summary="right-to-left"/>
|
||||
</enum>
|
||||
<event name="text_direction">
|
||||
<description summary="text direction">
|
||||
Sets the text direction of input text.
|
||||
|
||||
It is mainly needed for showing input cursor on correct side of the
|
||||
editor when there is no input yet done and making sure neutral
|
||||
direction text is laid out properly.
|
||||
</description>
|
||||
<arg name="serial" type="uint" summary="serial of the latest known text input state"/>
|
||||
<arg name="direction" type="uint"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="wl_text_input_manager" version="1">
|
||||
<description summary="text input manager">
|
||||
A factory for text-input objects. This object is a global singleton.
|
||||
</description>
|
||||
<request name="create_text_input">
|
||||
<description summary="create text input">
|
||||
Creates a new text-input object.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="wl_text_input"/>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="wl_eglstream_controller">
|
||||
<copyright>
|
||||
SPDX-FileCopyrightText: 2017-2018, NVIDIA CORPORATION. All rights reserved.
|
||||
|
||||
SPDX-License-Identifier: MIT
|
||||
</copyright>
|
||||
<interface name="wl_eglstream_controller" version="2">
|
||||
<!-- Present mode types. This enum defines what the present mode given
|
||||
to a attach_eglstream_consumer_attribs request represents -->
|
||||
<enum name="present_mode">
|
||||
<description summary="Stream present mode">
|
||||
- dont_care: Using this enum will tell the server to make its own
|
||||
decisions regarding present mode.
|
||||
|
||||
- fifo: Tells the server to use a fifo present mode. The decision to
|
||||
use fifo synchronous is left up to the server.
|
||||
|
||||
- mailbox: Tells the server to use a mailbox present mode.
|
||||
</description>
|
||||
<entry name="dont_care" value="0" summary="Let the Server decide present mode"/>
|
||||
<entry name="fifo" value="1" summary="Use a fifo present mode"/>
|
||||
<entry name="mailbox" value="2" summary="Use a mailbox mode"/>
|
||||
</enum>
|
||||
|
||||
<enum name="attrib">
|
||||
<description summary="Stream consumer attachment attributes">
|
||||
- present_mode: Must be one of wl_eglstream_controller_present_mode. Tells the
|
||||
server the desired present mode that should be used.
|
||||
|
||||
- fifo_length: Only valid when the present_mode attrib is provided and its
|
||||
value is specified as fifo. Tells the server the desired fifo
|
||||
length to be used when the desired present_mode is fifo.
|
||||
</description>
|
||||
<entry name="present_mode" value="0" summary="Tells the server the desired present mode"/>
|
||||
<entry name="fifo_length" value="1" summary="Tells the server the desired fifo length when the desired presenation_mode is fifo."/>
|
||||
</enum>
|
||||
|
||||
<request name="attach_eglstream_consumer" since="1">
|
||||
<description summary="Create server stream and attach consumer">
|
||||
Creates the corresponding server side EGLStream from the given wl_buffer
|
||||
and attaches a consumer to it.
|
||||
</description>
|
||||
<arg name="wl_surface" type="object" interface="wl_surface"
|
||||
summary="wl_surface corresponds to the client surface associated with
|
||||
newly created eglstream"/>
|
||||
<arg name="wl_resource" type="object" interface="wl_buffer"
|
||||
summary="wl_resource corresponding to an EGLStream"/>
|
||||
</request>
|
||||
|
||||
<request name="attach_eglstream_consumer_attribs" since="2">
|
||||
<description summary="Create server stream and attach consumer using attributes">
|
||||
Creates the corresponding server side EGLStream from the given wl_buffer
|
||||
and attaches a consumer to it using the given attributes.
|
||||
</description>
|
||||
<arg name="wl_surface" type="object" interface="wl_surface"
|
||||
summary="wl_surface corresponds to the client surface associated with
|
||||
newly created eglstream"/>
|
||||
<arg name="wl_resource" type="object" interface="wl_buffer"
|
||||
summary="wl_resource corresponding to an EGLStream"/>
|
||||
<arg name="attribs" type="array"
|
||||
summary="Stream consumer attachment attribs">
|
||||
<description summary="List of attributes with consumer attachment data">
|
||||
It contains key-value pairs compatible with intptr_t type. A key must
|
||||
be one of wl_eglstream_controller_attrib enumeration values. What a value
|
||||
represents is attribute-specific.
|
||||
</description>
|
||||
</arg>
|
||||
</request>
|
||||
</interface>
|
||||
</protocol>
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="zkde_screencast_unstable_v1">
|
||||
<copyright><![CDATA[
|
||||
SPDX-FileCopyrightText: 2020-2021 Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
]]></copyright>
|
||||
<interface name="zkde_screencast_unstable_v1" version="4">
|
||||
<description summary="Protocol for managing PipeWire feeds of the different displays and windows">
|
||||
Warning! The protocol described in this file is a desktop environment
|
||||
implementation detail. Regular clients must not use this protocol.
|
||||
Backward incompatible changes may be added without bumping the major
|
||||
version of the extension.
|
||||
</description>
|
||||
|
||||
<enum name="pointer">
|
||||
<description summary="Stream consumer attachment attributes" />
|
||||
<entry name="hidden" value="1" summary="No cursor"/>
|
||||
<entry name="embedded" value="2" summary="Render the cursor on the stream"/>
|
||||
<entry name="metadata" value="4" summary="Send metadata about where the cursor is through PipeWire"/>
|
||||
</enum>
|
||||
|
||||
<request name="stream_output">
|
||||
<description summary="requests a feed from a given source"/>
|
||||
<arg name="stream" type="new_id" interface="zkde_screencast_stream_unstable_v1"/>
|
||||
<arg name="output" type="object" interface="wl_output"/>
|
||||
<arg name="pointer" type="uint" summary="Requested pointer mode"/>
|
||||
</request>
|
||||
<request name="stream_window">
|
||||
<description summary="requests a feed from a given source"/>
|
||||
<arg name="stream" type="new_id" interface="zkde_screencast_stream_unstable_v1"/>
|
||||
<arg name="window_uuid" type="string" summary="window Identifier"/>
|
||||
<arg name="pointer" type="uint" summary="Requested pointer mode"/>
|
||||
</request>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="Destroy the zkde_screencast_unstable_v1">
|
||||
Destroy the zkde_screencast_unstable_v1 object.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="stream_virtual_output" since="2">
|
||||
<description summary="requests a feed from a new virtual output"/>
|
||||
<arg name="stream" type="new_id" interface="zkde_screencast_stream_unstable_v1"/>
|
||||
<arg name="name" type="string" summary="name of the created output"/>
|
||||
<arg name="width" type="int" summary="Logical width resolution"/>
|
||||
<arg name="height" type="int" summary="Logical height resolution"/>
|
||||
<arg name="scale" type="fixed" summary="Scaling factor of the display where it's to be displayed"/>
|
||||
<arg name="pointer" type="uint" summary="Requested pointer mode"/>
|
||||
</request>
|
||||
|
||||
<request name="stream_region" since="3">
|
||||
<description summary="requests a feed from region in the workspace"/>
|
||||
<arg name="stream" type="new_id" interface="zkde_screencast_stream_unstable_v1"/>
|
||||
|
||||
<arg name="x" type="int" summary="Logical left position"/>
|
||||
<arg name="y" type="int" summary="Logical top position"/>
|
||||
<arg name="width" type="uint" summary="Logical width resolution"/>
|
||||
<arg name="height" type="uint" summary="Logical height resolution"/>
|
||||
<arg name="scale" type="fixed" summary="Scaling factor of the output recording"/>
|
||||
<arg name="pointer" type="uint" summary="Requested pointer mode"/>
|
||||
</request>
|
||||
|
||||
<request name="stream_virtual_output_with_description" since="4">
|
||||
<description summary="requests a feed from a new virtual output"/>
|
||||
<arg name="stream" type="new_id" interface="zkde_screencast_stream_unstable_v1"/>
|
||||
<arg name="name" type="string" summary="name of the created output"/>
|
||||
<arg name="description" type="string" summary="user visible description of the created output"/>
|
||||
<arg name="width" type="int" summary="Logical width resolution"/>
|
||||
<arg name="height" type="int" summary="Logical height resolution"/>
|
||||
<arg name="scale" type="fixed" summary="Scaling factor of the display where it's to be displayed"/>
|
||||
<arg name="pointer" type="uint" summary="Requested pointer mode"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="zkde_screencast_stream_unstable_v1" version="4">
|
||||
<request name="close" type="destructor">
|
||||
<description summary="Indicates we are done with the stream and the communication is over."/>
|
||||
</request>
|
||||
<event name="closed">
|
||||
<description summary="Notifies that the server has stopped the stream. Clients should now call close."/>
|
||||
</event>
|
||||
|
||||
<event name="created">
|
||||
<description summary="Notifies about a pipewire feed being created"/>
|
||||
<arg name="node" type="uint" summary="node of the pipewire buffer"/>
|
||||
</event>
|
||||
<event name="failed">
|
||||
<description summary="Offers an error message so the client knows the created event will not arrive, and the client should close the resource."/>
|
||||
<arg name="error" type="string" summary="A human readable translated error message."/>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
Reference in New Issue
Block a user