diff options
| author | kolunmi <113054217+kolunmi@users.noreply.github.com> | 2023-07-22 07:50:01 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-22 07:50:01 -0700 |
| commit | a5cb279696622d0b4c57611cf442dea5cc51054f (patch) | |
| tree | c13275b5a3460cc0da4e89a607c2ecdf505c5e9a /protocols | |
| parent | 31178baeafb2df71a9ad94dc02aba198dc236370 (diff) | |
| parent | b377ce7317d6a72ef68dc779ca8b46d24fda9df8 (diff) | |
| download | dwlb-a5cb279696622d0b4c57611cf442dea5cc51054f.tar.gz | |
Merge pull request #14 from NikitaIvanovV/dwl-ipc
Add support for dwl ipc patch
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/dwl-ipc-unstable-v2.xml | 181 | ||||
| -rw-r--r-- | protocols/net-tapesoftware-dwl-wm-unstable-v1.xml | 164 |
2 files changed, 181 insertions, 164 deletions
diff --git a/protocols/dwl-ipc-unstable-v2.xml b/protocols/dwl-ipc-unstable-v2.xml new file mode 100644 index 0000000..0a6e7e5 --- /dev/null +++ b/protocols/dwl-ipc-unstable-v2.xml @@ -0,0 +1,181 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +This is largely ripped from somebar's ipc patchset; just with some personal modifications. +I would probably just submit raphi's patchset but I don't think that would be polite. +--> +<protocol name="dwl_ipc_unstable_v2"> + <description summary="inter-proccess-communication about dwl's state"> + This protocol allows clients to update and get updates from dwl. + + Warning! The protocol described in this file is experimental and + backward incompatible changes may be made. Backward compatible + changes may be added together with the corresponding interface + version bump. + Backward incompatible changes are done by bumping the version + number in the protocol and interface names and resetting the + interface version. Once the protocol is to be declared stable, + the 'z' prefix and the version number in the protocol and + interface names are removed and the interface version number is + reset. + </description> + + <interface name="zdwl_ipc_manager_v2" version="2"> + <description summary="manage dwl state"> + This interface is exposed as a global in wl_registry. + + Clients can use this interface to get a dwl_ipc_output. + After binding the client will recieve the dwl_ipc_manager.tags and dwl_ipc_manager.layout events. + The dwl_ipc_manager.tags and dwl_ipc_manager.layout events expose tags and layouts to the client. + </description> + + <request name="release" type="destructor"> + <description summary="release dwl_ipc_manager"> + Indicates that the client will not the dwl_ipc_manager object anymore. + Objects created through this instance are not affected. + </description> + </request> + + <request name="get_output"> + <description summary="get a dwl_ipc_outout for a wl_output"> + Get a dwl_ipc_outout for the specified wl_output. + </description> + <arg name="id" type="new_id" interface="zdwl_ipc_output_v2"/> + <arg name="output" type="object" interface="wl_output"/> + </request> + + <event name="tags"> + <description summary="Announces tag amount"> + This event is sent after binding. + A roundtrip after binding guarantees the client recieved all tags. + </description> + <arg name="amount" type="uint"/> + </event> + + <event name="layout"> + <description summary="Announces a layout"> + This event is sent after binding. + A roundtrip after binding guarantees the client recieved all layouts. + </description> + <arg name="name" type="string"/> + </event> + </interface> + + <interface name="zdwl_ipc_output_v2" version="2"> + <description summary="control dwl output"> + Observe and control a dwl output. + + Events are double-buffered: + Clients should cache events and redraw when a dwl_ipc_output.frame event is sent. + + Request are not double-buffered: + The compositor will update immediately upon request. + </description> + + <enum name="tag_state"> + <entry name="none" value="0" summary="no state"/> + <entry name="active" value="1" summary="tag is active"/> + <entry name="urgent" value="2" summary="tag has at least one urgent client"/> + </enum> + + <request name="release" type="destructor"> + <description summary="release dwl_ipc_outout"> + Indicates to that the client no longer needs this dwl_ipc_output. + </description> + </request> + + <event name="toggle_visibility"> + <description summary="Toggle client visibilty"> + Indicates the client should hide or show themselves. + If the client is visible then hide, if hidden then show. + </description> + </event> + + <event name="active"> + <description summary="Update the selected output."> + Indicates if the output is active. Zero is invalid, nonzero is valid. + </description> + <arg name="active" type="uint"/> + </event> + + <event name="tag"> + <description summary="Update the state of a tag."> + Indicates that a tag has been updated. + </description> + <arg name="tag" type="uint" summary="Index of the tag"/> + <arg name="state" type="uint" enum="tag_state" summary="The state of the tag."/> + <arg name="clients" type="uint" summary="The number of clients in the tag."/> + <arg name="focused" type="uint" summary="If there is a focused client. Nonzero being valid, zero being invalid."/> + </event> + + <event name="layout"> + <description summary="Update the layout."> + Indicates a new layout is selected. + </description> + <arg name="layout" type="uint" summary="Index of the layout."/> + </event> + + <event name="title"> + <description summary="Update the title."> + Indicates the title has changed. + </description> + <arg name="title" type="string" summary="The new title name."/> + </event> + + <event name="appid" since="1"> + <description summary="Update the appid."> + Indicates the appid has changed. + </description> + <arg name="appid" type="string" summary="The new appid."/> + </event> + + <event name="layout_symbol" since="1"> + <description summary="Update the current layout symbol"> + Indicates the layout has changed. Since layout symbols are dynamic. + As opposed to the zdwl_ipc_manager.layout event, this should take precendence when displaying. + You can ignore the zdwl_ipc_output.layout event. + </description> + <arg name="layout" type="string" summary="The new layout"/> + </event> + + <event name="frame"> + <description summary="The update sequence is done."> + Indicates that a sequence of status updates have finished and the client should redraw. + </description> + </event> + + <request name="set_tags"> + <description summary="Set the active tags of this output"/> + <arg name="tagmask" type="uint" summary="bitmask of the tags that should be set."/> + <arg name="toggle_tagset" type="uint" summary="toggle the selected tagset, zero for invalid, nonzero for valid."/> + </request> + + <request name="set_client_tags"> + <description summary="Set the tags of the focused client."> + The tags are updated as follows: + new_tags = (current_tags AND and_tags) XOR xor_tags + </description> + <arg name="and_tags" type="uint"/> + <arg name="xor_tags" type="uint"/> + </request> + + <request name="set_layout"> + <description summary="Set the layout of this output"/> + <arg name="index" type="uint" summary="index of a layout recieved by dwl_ipc_manager.layout"/> + </request> + + <!-- Version 2 --> + <event name="fullscreen" since="2"> + <description summary="Update fullscreen status"> + Indicates if the selected client on this output is fullscreen. + </description> + <arg name="is_fullscreen" type="uint" summary="If the selected client is fullscreen. Nonzero is valid, zero invalid"/> + </event> + + <event name="floating" since="2"> + <description summary="Update the floating status"> + Indicates if the selected client on this output is floating. + </description> + <arg name="is_floating" type="uint" summary="If the selected client is floating. Nonzero is valid, zero invalid"/> + </event> + </interface> +</protocol> diff --git a/protocols/net-tapesoftware-dwl-wm-unstable-v1.xml b/protocols/net-tapesoftware-dwl-wm-unstable-v1.xml deleted file mode 100644 index 4fe5b73..0000000 --- a/protocols/net-tapesoftware-dwl-wm-unstable-v1.xml +++ /dev/null @@ -1,164 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<protocol name="net_tapesoftware_dwl_wm_unstable_v1"> - <copyright> - Copyright (c) 2021 Raphael Robatsch - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice (including the - next paragraph) shall be included in all copies or substantial portions - of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - </copyright> - - <interface name="znet_tapesoftware_dwl_wm_v1" version="1"> - <description summary="control the dwl state"> - This interface is exposed as a global in the wl_registry. - - Clients can use this protocol to receive updates of the window manager - state (active tags, active layout, and focused window). - Clients can also control this state. - - After binding, the client will receive the available tags and layouts - with the 'tag' and 'layout' events. These can be used in subsequent - dwl_wm_monitor_v1.set_tags/set_layout requests, and to interpret the - dwl_wm_monitor_v1.layout/tag events. - </description> - - <request name="release" type="destructor"> - <description summary="release dwl_wm"> - This request indicates that the client will not use the dwl_wm - object any more. Objects that have been created through this instance - are not affected. - </description> - </request> - - <request name="get_monitor"> - <description summary="gets a dwl monitor from an output"> - Gets a dwl monitor for the specified output. The window manager - state on the output can be controlled using the monitor. - </description> - <arg name="id" type="new_id" interface="znet_tapesoftware_dwl_wm_monitor_v1" /> - <arg name="output" type="object" interface="wl_output" /> - </request> - - <event name="tag"> - <description summary="announces the presence of a tag"> - This event is sent immediately after binding. - A roundtrip after binding guarantees that the client has received all tags. - </description> - <arg name="name" type="string"/> - </event> - - <event name="layout"> - <description summary="announces the presence of a layout"> - This event is sent immediately after binding. - A roundtrip after binding guarantees that the client has received all layouts. - </description> - <arg name="name" type="string"/> - </event> - </interface> - - <interface name="znet_tapesoftware_dwl_wm_monitor_v1" version="1"> - <description summary="control one monitor"> - Observes and controls one monitor. - - Events are double-buffered: Clients should cache all events and only - redraw themselves once the 'frame' event is sent. - - Requests are not double-buffered: The compositor will update itself - immediately. - </description> - - <enum name="tag_state"> - <entry name="none" value="0" summary="no state"/> - <entry name="active" value="1" summary="tag is active"/> - <entry name="urgent" value="2" summary="tag has at least one urgent client"/> - </enum> - - <request name="release" type="destructor"> - <description summary="release dwl_monitor"> - This request indicates that the client is done with this dwl_monitor. - All further requests are ignored. - </description> - </request> - - <event name="selected"> - <description summary="updates the selected state of the monitor"> - If 'selected' is nonzero, this monitor is the currently selected one. - </description> - <arg name="selected" type="uint"/> - </event> - - <event name="tag"> - <description summary="updates the state of one tag"> - Announces the update of a tag. num_clients and focused_client can be - used to draw client indicators. - </description> - <arg name="tag" type="uint" summary="index of a tag received by the dwl_wm_v1.tag event." /> - <arg name="state" type="uint" enum="tag_state"/> - <arg name="num_clients" type="uint" summary="number of clients on this tag"/> - <arg name="focused_client" type="int" summary="out of num_clients. -1 if there is no focused client"/> - </event> - - <event name="layout"> - <description summary="updates the selected layout"> - Announces the update of the selected layout. - </description> - <arg name="layout" type="uint" summary="index of a layout received by the dwl_wm_v1.layout event."/> - </event> - - <event name="title"> - <description summary="updates the focused client"> - Announces the update of the selected client. - </description> - <arg name="title" type="string"/> - </event> - - <event name="frame"> - <description summary="end of status update sequence"> - Sent after all other events belonging to the status update has been sent. - Clients should redraw themselves now. - </description> - </event> - - <request name="set_tags"> - <description summary="sets the active tags on this monitor."> - Changes are applied immediately. - </description> - <arg name="tagmask" type="uint" summary="bitmask of the tags that should be set."/> - <arg name="toggle_tagset" type="uint"/> - </request> - - <request name="set_client_tags"> - <description summary="updates the tags of the focused client."> - tags are updated as follows: - new_tags = (current_tags AND and_tags) XOR xor_tags - - Changes are applied immediately. - </description> - <arg name="and_tags" type="uint"/> - <arg name="xor_tags" type="uint"/> - </request> - - <request name="set_layout"> - <description summary="sets the active layout on this monitor."> - Changes are applied immediately. - </description> - <arg name="layout" type="uint" summary="index of a layout received by the dwl_wm_v1.layout event."/> - </request> - </interface> -</protocol> |