mirror of
https://github.com/WayfireWM/wf-osk.git
synced 2025-04-05 04:46:45 +02:00
169 lines
7.4 KiB
XML
169 lines
7.4 KiB
XML
<protocol name="wayfire_shell">
|
|
<interface name="zwf_shell_manager_v1" version="1">
|
|
<description summary="DE integration">
|
|
The purpose of this protocol is to enable the creation of different
|
|
desktop-interface windows like panels, backgrounds, docks,
|
|
lockscreens, etc. It also aims to allow the creation of full-blown
|
|
DEs using Wayfire.
|
|
|
|
Note that in contrast to some other efforts to create a similar
|
|
protocol, such as wlr-layer-shell, this isn't a new "shell" for
|
|
giving a role to wl_surfaces. This protocol can be used with any
|
|
type of toplevel surface (xdg_toplevel, xdg_toplevel_v6, etc.)
|
|
to give them to the corresponding WM role.
|
|
</description>
|
|
|
|
<request name="get_wf_output">
|
|
<description summary="Create a wf_output from the given output"/>
|
|
<arg name="output" type="object" interface="wl_output"/>
|
|
<arg name="id" type="new_id" interface="zwf_output_v1"/>
|
|
</request>
|
|
|
|
<request name="get_wm_surface">
|
|
<description summary="Assign a role">
|
|
Assign the given role to the given surface and add it to the
|
|
given output. A client can specify a null output, in which case
|
|
the compositor will assign the surface to the focused output,
|
|
if any such output.
|
|
|
|
The role cannot be changed later, and neither can the surface be
|
|
moved to a different output, except by the compositor.
|
|
</description>
|
|
|
|
<arg name="surface" type="object" interface="wl_surface"/>
|
|
<arg name="role" type="uint" enum="zwf_wm_surface_v1.role"/>
|
|
<arg name="output" type="object" interface="wl_output" allow-null="true"/>
|
|
<arg name="id" type="new_id" interface="zwf_wm_surface_v1"/>
|
|
</request>
|
|
</interface>
|
|
|
|
<interface name="zwf_output_v1" version="1">
|
|
<description summary="A wrapper for wl_output">
|
|
Represents a single output.
|
|
Each output is managed independently from the others.
|
|
</description>
|
|
<event name="output_hide_panels">
|
|
<description summary="Autohide/Show signal">
|
|
Panels are always rendered on top, even above fullscreen windows.
|
|
If autohide is 1, the event indicates that the panels should hide
|
|
itself, by for example unmapping or sliding outside of the output.
|
|
If autohide is 0, this means that the reason for the last request
|
|
with autohide == 1 is no longer valid, i.e the panels can show
|
|
themselves.
|
|
|
|
The output_hide_panels can be called multiple times with
|
|
autohide = 1, and the panel should show itself only when
|
|
it has received a matching number of events with autohide = 0
|
|
</description>
|
|
|
|
<arg name="autohide" type="uint"/>
|
|
</event>
|
|
|
|
<request name="inhibit_output">
|
|
<description summary="Don't render the output">
|
|
Request the compositor to not render the output, so
|
|
the output usually is cleared to black color.
|
|
To enable output rendering again, call inhibit_output_done
|
|
</description>
|
|
</request>
|
|
|
|
<request name="inhibit_output_done">
|
|
<description summary="Render the output">
|
|
Stop inhibiting the output. This must be called as many times
|
|
as inhibit_output was called to actually uninhibit rendering.
|
|
|
|
The inhibit/inhibit_done requests can be called multiple times,
|
|
even from different apps, so don't assume that a call to
|
|
inhibit_done would always mean actually starting the rendering process.
|
|
</description>
|
|
</request>
|
|
</interface>
|
|
|
|
<interface name="zwf_wm_surface_v1" version="1">
|
|
<description summary="Surface with a WM role">
|
|
Represents a surface with a specific WM role.
|
|
It belongs to the output which it was created for.
|
|
</description>
|
|
|
|
<enum name="role">
|
|
<entry name="background" value="1"/>
|
|
<entry name="bottom" value="2"/>
|
|
<entry name="panel" value="3"/>
|
|
<entry name="overlay" value="4"/>
|
|
</enum>
|
|
|
|
<request name="configure">
|
|
<description summary="Move the surface to the given output-local coordinates."/>
|
|
|
|
<arg name="x" type="int"/>
|
|
<arg name="y" type="int"/>
|
|
</request>
|
|
|
|
<enum name="anchor_edge">
|
|
<entry name="top" value="1"/>
|
|
<entry name="bottom" value="2"/>
|
|
<entry name="left" value="4"/>
|
|
<entry name="right" value="8"/>
|
|
</enum>
|
|
|
|
<request name="set_anchor">
|
|
<description summary="set anchor position">
|
|
Sets the position on the screen where the compositor should
|
|
position the view. Can be reset by specifying anchor 0. If not
|
|
set, the compositor will assume manual positioning via the
|
|
configure request.
|
|
|
|
If one anchor edge is provided, the wm surface is "stuck" to
|
|
that edge.
|
|
If two anchor edges are provided, the wm surface is considered
|
|
anchored to the corner of the screen between them.
|
|
|
|
Any other anchor edge configuration is considered invalid.
|
|
</description>
|
|
<arg name="anchors" type="uint"/>
|
|
</request>
|
|
|
|
<request name="set_margin">
|
|
<description summary="set margin respective to anchored edges">
|
|
Set the offset from the anchored edges to the wm surface. This
|
|
is an alternative to the configure request. Using both will
|
|
result in undefined results.
|
|
|
|
Margin has effect only for edges the wm surface is anchored to.
|
|
</description>
|
|
|
|
<arg name="top" type="int"/>
|
|
<arg name="bottom" type="int"/>
|
|
<arg name="left" type="int"/>
|
|
<arg name="right" type="int"/>
|
|
</request>
|
|
|
|
<enum name="keyboard_focus_mode">
|
|
<entry name="no_focus" value="0"/>
|
|
<entry name="click_to_focus" value="1"/>
|
|
<entry name="exclusive_focus" value="2"/>
|
|
</enum>
|
|
|
|
<request name="set_keyboard_mode">
|
|
<description summary="Set keyboard focus mode">
|
|
Sets how the wm surface will interact with keyboard focus.
|
|
Setting no_focus means that the surface will never receive
|
|
keyboard focus, click_to_focus means normal focus semantics (i.e
|
|
what you expect from "normal" windows), and exclusive focus means
|
|
that no other window can get keyboard focus.
|
|
</description>
|
|
<arg name="mode" type="uint" enum="keyboard_focus_mode"/>
|
|
</request>
|
|
|
|
<request name="set_exclusive_zone">
|
|
<description summary="Reserve pixels">
|
|
Request the compositor to reserve the given amount of pixels
|
|
for the wm surface(like STRUTS in X11). This has effect only
|
|
if the surface is anchored to a single edge. Margin doesn't
|
|
affect exclusive zone in any way.
|
|
</description>
|
|
<arg name="size" type="uint"/>
|
|
</request>
|
|
</interface>
|
|
</protocol>
|