summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Jones <philj56@gmail.com>2023-03-06 22:09:44 +0000
committerPhil Jones <philj56@gmail.com>2023-03-06 22:09:44 +0000
commit52ea28acc4b01b221515339ab225cd385abe8b0a (patch)
treea64c19211909f68efdc288974727169a692b6b10
parent254e96fe14cb533851ba824732c0b68300e33733 (diff)
Replace generated protocol code with xml.
I now understand how this was supposed to be done.
-rw-r--r--meson.build4
-rw-r--r--protocols/fractional-scale-v1.xml102
-rw-r--r--protocols/wlr-layer-shell-unstable-v1.xml390
-rw-r--r--src/tofi.h2
-rw-r--r--src/wlr-layer-shell-unstable-v1.c93
-rw-r--r--src/wlr-layer-shell-unstable-v1.h668
-rw-r--r--src/wp-fractional-scale-v1.c73
-rw-r--r--src/wp-fractional-scale-v1.h264
8 files changed, 495 insertions, 1101 deletions
diff --git a/meson.build b/meson.build
index 8eb61a6..1920a16 100644
--- a/meson.build
+++ b/meson.build
@@ -112,8 +112,6 @@ common_sources = files(
'src/string_vec.c',
'src/surface.c',
'src/unicode.c',
- 'src/wlr-layer-shell-unstable-v1.c',
- 'src/wp-fractional-scale-v1.c',
'src/xmalloc.c',
)
@@ -180,6 +178,8 @@ wl_proto_src = []
wl_proto_xml = [
wayland_protocols_dir + '/stable/xdg-shell/xdg-shell.xml',
wayland_protocols_dir + '/stable/viewporter/viewporter.xml',
+ 'protocols/wlr-layer-shell-unstable-v1.xml',
+ 'protocols/fractional-scale-v1.xml'
]
foreach proto : wl_proto_xml
diff --git a/protocols/fractional-scale-v1.xml b/protocols/fractional-scale-v1.xml
new file mode 100644
index 0000000..350bfc0
--- /dev/null
+++ b/protocols/fractional-scale-v1.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="fractional_scale_v1">
+ <copyright>
+ Copyright © 2022 Kenny Levinsen
+
+ 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>
+
+ <description summary="Protocol for requesting fractional surface scales">
+ This protocol allows a compositor to suggest for surfaces to render at
+ fractional scales.
+
+ A client can submit scaled content by utilizing wp_viewport. This is done by
+ creating a wp_viewport object for the surface and setting the destination
+ rectangle to the surface size before the scale factor is applied.
+
+ The buffer size is calculated by multiplying the surface size by the
+ intended scale.
+
+ The wl_surface buffer scale should remain set to 1.
+
+ If a surface has a surface-local size of 100 px by 50 px and wishes to
+ submit buffers with a scale of 1.5, then a buffer of 150px by 75 px should
+ be used and the wp_viewport destination rectangle should be 100 px by 50 px.
+
+ For toplevel surfaces, the size is rounded halfway away from zero. The
+ rounding algorithm for subsurface position and size is not defined.
+ </description>
+
+ <interface name="wp_fractional_scale_manager_v1" version="1">
+ <description summary="fractional surface scale information">
+ A global interface for requesting surfaces to use fractional scales.
+ </description>
+
+ <request name="destroy" type="destructor">
+ <description summary="unbind the fractional surface scale interface">
+ Informs the server that the client will not be using this protocol
+ object anymore. This does not affect any other objects,
+ wp_fractional_scale_v1 objects included.
+ </description>
+ </request>
+
+ <enum name="error">
+ <entry name="fractional_scale_exists" value="0"
+ summary="the surface already has a fractional_scale object associated"/>
+ </enum>
+
+ <request name="get_fractional_scale">
+ <description summary="extend surface interface for scale information">
+ Create an add-on object for the the wl_surface to let the compositor
+ request fractional scales. If the given wl_surface already has a
+ wp_fractional_scale_v1 object associated, the fractional_scale_exists
+ protocol error is raised.
+ </description>
+ <arg name="id" type="new_id" interface="wp_fractional_scale_v1"
+ summary="the new surface scale info interface id"/>
+ <arg name="surface" type="object" interface="wl_surface"
+ summary="the surface"/>
+ </request>
+ </interface>
+
+ <interface name="wp_fractional_scale_v1" version="1">
+ <description summary="fractional scale interface to a wl_surface">
+ An additional interface to a wl_surface object which allows the compositor
+ to inform the client of the preferred scale.
+ </description>
+
+ <request name="destroy" type="destructor">
+ <description summary="remove surface scale information for surface">
+ Destroy the fractional scale object. When this object is destroyed,
+ preferred_scale events will no longer be sent.
+ </description>
+ </request>
+
+ <event name="preferred_scale">
+ <description summary="notify of new preferred scale">
+ Notification of a new preferred scale for this surface that the
+ compositor suggests that the client should use.
+
+ The sent scale is the numerator of a fraction with a denominator of 120.
+ </description>
+ <arg name="scale" type="uint" summary="the new preferred scale"/>
+ </event>
+ </interface>
+</protocol>
diff --git a/protocols/wlr-layer-shell-unstable-v1.xml b/protocols/wlr-layer-shell-unstable-v1.xml
new file mode 100644
index 0000000..d62fd51
--- /dev/null
+++ b/protocols/wlr-layer-shell-unstable-v1.xml
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="wlr_layer_shell_unstable_v1">
+ <copyright>
+ Copyright © 2017 Drew DeVault
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that copyright notice and this permission
+ notice appear in supporting documentation, and that the name of
+ the copyright holders not be used in advertising or publicity
+ pertaining to distribution of the software without specific,
+ written prior permission. The copyright holders make no
+ representations about the suitability of this software for any
+ purpose. It is provided "as is" without express or implied
+ warranty.
+
+ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ THIS SOFTWARE.
+ </copyright>
+
+ <interface name="zwlr_layer_shell_v1" version="4">
+ <description summary="create surfaces that are layers of the desktop">
+ Clients can use this interface to assign the surface_layer role to
+ wl_surfaces. Such surfaces are assigned to a "layer" of the output and
+ rendered with a defined z-depth respective to each other. They may also be
+ anchored to the edges and corners of a screen and specify input handling
+ semantics. This interface should be suitable for the implementation of
+ many desktop shell components, and a broad number of other applications
+ that interact with the desktop.
+ </description>
+
+ <request name="get_layer_surface">
+ <description summary="create a layer_surface from a surface">
+ Create a layer surface for an existing surface. This assigns the role of
+ layer_surface, or raises a protocol error if another role is already
+ assigned.
+
+ Creating a layer surface from a wl_surface which has a buffer attached
+ or committed is a client error, and any attempts by a client to attach
+ or manipulate a buffer prior to the first layer_surface.configure call
+ must also be treated as errors.
+
+ After creating a layer_surface object and setting it up, the client
+ must perform an initial commit without any buffer attached.
+ The compositor will reply with a layer_surface.configure event.
+ The client must acknowledge it and is then allowed to attach a buffer
+ to map the surface.
+
+ You may pass NULL for output to allow the compositor to decide which
+ output to use. Generally this will be the one that the user most
+ recently interacted with.
+
+ Clients can specify a namespace that defines the purpose of the layer
+ surface.
+ </description>
+ <arg name="id" type="new_id" interface="zwlr_layer_surface_v1"/>
+ <arg name="surface" type="object" interface="wl_surface"/>
+ <arg name="output" type="object" interface="wl_output" allow-null="true"/>
+ <arg name="layer" type="uint" enum="layer" summary="layer to add this surface to"/>
+ <arg name="namespace" type="string" summary="namespace for the layer surface"/>
+ </request>
+
+ <enum name="error">
+ <entry name="role" value="0" summary="wl_surface has another role"/>
+ <entry name="invalid_layer" value="1" summary="layer value is invalid"/>
+ <entry name="already_constructed" value="2" summary="wl_surface has a buffer attached or committed"/>
+ </enum>
+
+ <enum name="layer">
+ <description summary="available layers for surfaces">
+ These values indicate which layers a surface can be rendered in. They
+ are ordered by z depth, bottom-most first. Traditional shell surfaces
+ will typically be rendered between the bottom and top layers.
+ Fullscreen shell surfaces are typically rendered at the top layer.
+ Multiple surfaces can share a single layer, and ordering within a
+ single layer is undefined.
+ </description>
+
+ <entry name="background" value="0"/>
+ <entry name="bottom" value="1"/>
+ <entry name="top" value="2"/>
+ <entry name="overlay" value="3"/>
+ </enum>
+
+ <!-- Version 3 additions -->
+
+ <request name="destroy" type="destructor" since="3">
+ <description summary="destroy the layer_shell object">
+ This request indicates that the client will not use the layer_shell
+ object any more. Objects that have been created through this instance
+ are not affected.
+ </description>
+ </request>
+ </interface>
+
+ <interface name="zwlr_layer_surface_v1" version="4">
+ <description summary="layer metadata interface">
+ An interface that may be implemented by a wl_surface, for surfaces that
+ are designed to be rendered as a layer of a stacked desktop-like
+ environment.
+
+ Layer surface state (layer, size, anchor, exclusive zone,
+ margin, interactivity) is double-buffered, and will be applied at the
+ time wl_surface.commit of the corresponding wl_surface is called.
+
+ Attaching a null buffer to a layer surface unmaps it.
+
+ Unmapping a layer_surface means that the surface cannot be shown by the
+ compositor until it is explicitly mapped again. The layer_surface
+ returns to the state it had right after layer_shell.get_layer_surface.
+ The client can re-map the surface by performing a commit without any
+ buffer attached, waiting for a configure event and handling it as usual.
+ </description>
+
+ <request name="set_size">
+ <description summary="sets the size of the surface">
+ Sets the size of the surface in surface-local coordinates. The
+ compositor will display the surface centered with respect to its
+ anchors.
+
+ If you pass 0 for either value, the compositor will assign it and
+ inform you of the assignment in the configure event. You must set your
+ anchor to opposite edges in the dimensions you omit; not doing so is a
+ protocol error. Both values are 0 by default.
+
+ Size is double-buffered, see wl_surface.commit.
+ </description>
+ <arg name="width" type="uint"/>
+ <arg name="height" type="uint"/>
+ </request>
+
+ <request name="set_anchor">
+ <description summary="configures the anchor point of the surface">
+ Requests that the compositor anchor the surface to the specified edges
+ and corners. If two orthogonal edges are specified (e.g. 'top' and
+ 'left'), then the anchor point will be the intersection of the edges
+ (e.g. the top left corner of the output); otherwise the anchor point
+ will be centered on that edge, or in the center if none is specified.
+
+ Anchor is double-buffered, see wl_surface.commit.
+ </description>
+ <arg name="anchor" type="uint" enum="anchor"/>
+ </request>
+
+ <request name="set_exclusive_zone">
+ <description summary="configures the exclusive geometry of this surface">
+ Requests that the compositor avoids occluding an area with other
+ surfaces. The compositor's use of this information is
+ implementation-dependent - do not assume that this region will not
+ actually be occluded.
+
+ A positive value is only meaningful if the surface is anchored to one
+ edge or an edge and both perpendicular edges. If the surface is not
+ anchored, anchored to only two perpendicular edges (a corner), anchored
+ to only two parallel edges or anchored to all edges, a positive value
+ will be treated the same as zero.
+
+ A positive zone is the distance from the edge in surface-local
+ coordinates to consider exclusive.
+
+ Surfaces that do not wish to have an exclusive zone may instead specify
+ how they should interact with surfaces that do. If set to zero, the
+ surface indicates that it would like to be moved to avoid occluding
+ surfaces with a positive exclusive zone. If set to -1, the surface
+ indicates that it would not like to be moved to accommodate for other
+ surfaces, and the compositor should extend it all the way to the edges
+ it is anchored to.
+
+ For example, a panel might set its exclusive zone to 10, so that
+ maximized shell surfaces are not shown on top of it. A notification
+ might set its exclusive zone to 0, so that it is moved to avoid
+ occluding the panel, but shell surfaces are shown underneath it. A
+ wallpaper or lock screen might set their exclusive zone to -1, so that
+ they stretch below or over the panel.
+
+ The default value is 0.
+
+ Exclusive zone is double-buffered, see wl_surface.commit.
+ </description>
+ <arg name="zone" type="int"/>
+ </request>
+
+ <request name="set_margin">
+ <description summary="sets a margin from the anchor point">
+ Requests that the surface be placed some distance away from the anchor
+ point on the output, in surface-local coordinates. Setting this value
+ for edges you are not anchored to has no effect.
+
+ The exclusive zone includes the margin.
+
+ Margin is double-buffered, see wl_surface.commit.
+ </description>
+ <arg name="top" type="int"/>
+ <arg name="right" type="int"/>
+ <arg name="bottom" type="int"/>
+ <arg name="left" type="int"/>
+ </request>
+
+ <enum name="keyboard_interactivity">
+ <description summary="types of keyboard interaction possible for a layer shell surface">
+ Types of keyboard interaction possible for layer shell surfaces. The
+ rationale for this is twofold: (1) some applications are not interested
+ in keyboard events and not allowing them to be focused can improve the
+ desktop experience; (2) some applications will want to take exclusive
+ keyboard focus.
+ </description>
+
+ <entry name="none" value="0">
+ <description summary="no keyboard focus is possible">
+ This value indicates that this surface is not interested in keyboard
+ events and the compositor should never assign it the keyboard focus.
+
+ This is the default value, set for newly created layer shell surfaces.
+
+ This is useful for e.g. desktop widgets that display information or
+ only have interaction with non-keyboard input devices.
+ </description>
+ </entry>
+ <entry name="exclusive" value="1">
+ <description summary="request exclusive keyboard focus">
+ Request exclusive keyboard focus if this surface is above the shell surface layer.
+
+ For the top and overlay layers, the seat will always give
+ exclusive keyboard focus to the top-most layer which has keyboard
+ interactivity set to exclusive. If this layer contains multiple
+ surfaces with keyboard interactivity set to exclusive, the compositor
+ determines the one receiving keyboard events in an implementation-
+ defined manner. In this case, no guarantee is made when this surface
+ will receive keyboard focus (if ever).
+
+ For the bottom and background layers, the compositor is allowed to use
+ normal focus semantics.
+
+ This setting is mainly intended for applications that need to ensure
+ they receive all keyboard events, such as a lock screen or a password
+ prompt.
+ </description>
+ </entry>
+ <entry name="on_demand" value="2" since="4">
+ <description summary="request regular keyboard focus semantics">
+ This requests the compositor to allow this surface to be focused and
+ unfocused by the user in an implementation-defined manner. The user
+ should be able to unfocus this surface even regardless of the layer
+ it is on.
+
+ Typically, the compositor will want to use its normal mechanism to
+ manage keyboard focus between layer shell surfaces with this setting
+ and regular toplevels on the desktop layer (e.g. click to focus).
+ Nevertheless, it is possible for a compositor to require a special
+ interaction to focus or unfocus layer shell surfaces (e.g. requiring
+ a click even if focus follows the mouse normally, or providing a
+ keybinding to switch focus between layers).
+
+ This setting is mainly intended for desktop shell components (e.g.
+ panels) that allow keyboard interaction. Using this option can allow
+ implementing a desktop shell that can be fully usable without the
+ mouse.
+ </description>
+ </entry>
+ </enum>
+
+ <request name="set_keyboard_interactivity">
+ <description summary="requests keyboard events">
+ Set how keyboard events are delivered to this surface. By default,
+ layer shell surfaces do not receive keyboard events; this request can
+ be used to change this.
+
+ This setting is inherited by child surfaces set by the get_popup
+ request.
+
+ Layer surfaces receive pointer, touch, and tablet events normally. If
+ you do not want to receive them, set the input region on your surface
+ to an empty region.
+
+ Keyboard interactivity is double-buffered, see wl_surface.commit.
+ </description>
+ <arg name="keyboard_interactivity" type="uint" enum="keyboard_interactivity"/>
+ </request>
+
+ <request name="get_popup">
+ <description summary="assign this layer_surface as an xdg_popup parent">
+ This assigns an xdg_popup's parent to this layer_surface. This popup
+ should have been created via xdg_surface::get_popup with the parent set
+ to NULL, and this request must be invoked before committing the popup's
+ initial state.
+
+ See the documentation of xdg_popup for more details about what an
+ xdg_popup is and how it is used.
+ </description>
+ <arg name="popup" type="object" interface="xdg_popup"/>
+ </request>
+
+ <request name="ack_configure">
+ <description summary="ack a configure event">
+ When a configure event is received, if a client commits the
+ surface in response to the configure event, then the client
+ must make an ack_configure request sometime before the commit
+ request, passing along the serial of the configure event.
+
+ If the client receives multiple configure events before it
+ can respond to one, it only has to ack the last configure event.
+
+ A client is not required to commit immediately after sending
+ an ack_configure request - it may even ack_configure several times
+ before its next surface commit.
+
+ A client may send multiple ack_configure requests before committing, but
+ only the last request sent before a commit indicates which configure
+ event the client really is responding to.
+ </description>
+ <arg name="serial" type="uint" summary="the serial from the configure event"/>
+ </request>
+
+ <request name="destroy" type="destructor">
+ <description summary="destroy the layer_surface">
+ This request destroys the layer surface.
+ </description>
+ </request>
+
+ <event name="configure">
+ <description summary="suggest a surface change">
+ The configure event asks the client to resize its surface.
+
+ Clients should arrange their surface for the new states, and then send
+ an ack_configure request with the serial sent in this configure event at
+ some point before committing the new surface.
+
+ The client is free to dismiss all but the last configure event it
+ received.
+
+ The width and height arguments specify the size of the window in
+ surface-local coordinates.
+
+ The size is a hint, in the sense that the client is free to ignore it if
+ it doesn't resize, pick a smaller size (to satisfy aspect ratio or
+ resize in steps of NxM pixels). If the client picks a smaller size and
+ is anchored to two opposite anchors (e.g. 'top' and 'bottom'), the
+ surface will be centered on this axis.
+
+ If the width or height arguments are zero, it means the client should
+ decide its own window dimension.
+ </description>
+ <arg name="serial" type="uint"/>
+ <arg name="width" type="uint"/>
+ <arg name="height" type="uint"/>
+ </event>
+
+ <event name="closed">
+ <description summary="surface should be closed">
+ The closed event is sent by the compositor when the surface will no
+ longer be shown. The output may have been destroyed or the user may
+ have asked for it to be removed. Further changes to the surface will be
+ ignored. The client should destroy the resource after receiving this
+ event, and create a new surface if they so choose.
+ </description>
+ </event>
+
+ <enum name="error">
+ <entry name="invalid_surface_state" value="0" summary="provided surface state is invalid"/>
+ <entry name="invalid_size" value="1" summary="size is invalid"/>
+ <entry name="invalid_anchor" value="2" summary="anchor bitfield is invalid"/>
+ <entry name="invalid_keyboard_interactivity" value="3" summary="keyboard interactivity is invalid"/>
+ </enum>
+
+ <enum name="anchor" bitfield="true">
+ <entry name="top" value="1" summary="the top edge of the anchor rectangle"/>
+ <entry name="bottom" value="2" summary="the bottom edge of the anchor rectangle"/>
+ <entry name="left" value="4" summary="the left edge of the anchor rectangle"/>
+ <entry name="right" value="8" summary="the right edge of the anchor rectangle"/>
+ </enum>
+
+ <!-- Version 2 additions -->
+
+ <request name="set_layer" since="2">
+ <description summary="change the layer of the surface">
+ Change the layer that the surface is rendered on.
+
+ Layer is double-buffered, see wl_surface.commit.
+ </description>
+ <arg name="layer" type="uint" enum="zwlr_layer_shell_v1.layer" summary="layer to move this surface to"/>
+ </request>
+ </interface>
+</protocol>
diff --git a/src/tofi.h b/src/tofi.h
index 3e799c7..d2f773c 100644
--- a/src/tofi.h
+++ b/src/tofi.h
@@ -10,7 +10,7 @@
#include "entry.h"
#include "surface.h"
#include "wlr-layer-shell-unstable-v1.h"
-#include "wp-fractional-scale-v1.h"
+#include "fractional-scale-v1.h"
#define MAX_OUTPUT_NAME_LEN 256
#define MAX_TERMINAL_NAME_LEN 256
diff --git a/src/wlr-layer-shell-unstable-v1.c b/src/wlr-layer-shell-unstable-v1.c
deleted file mode 100644
index 95ff317..0000000
--- a/src/wlr-layer-shell-unstable-v1.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Generated by wayland-scanner 1.19.0 */
-
-/*
- * Copyright © 2017 Drew DeVault
- *
- * Permission to use, copy, modify, distribute, and sell this
- * software and its documentation for any purpose is hereby granted
- * without fee, provided that the above copyright notice appear in
- * all copies and that both that copyright notice and this permission
- * notice appear in supporting documentation, and that the name of
- * the copyright holders not be used in advertising or publicity
- * pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- */
-
-#include <stdlib.h>
-#include <stdint.h>
-#include "wayland-util.h"
-
-#ifndef __has_attribute
-# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */
-#endif
-
-#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4)
-#define WL_PRIVATE __attribute__ ((visibility("hidden")))
-#else
-#define WL_PRIVATE
-#endif
-
-extern const struct wl_interface wl_output_interface;
-extern const struct wl_interface wl_surface_interface;
-extern const struct wl_interface xdg_popup_interface;
-extern const struct wl_interface zwlr_layer_surface_v1_interface;
-
-static const struct wl_interface *wlr_layer_shell_unstable_v1_types[] = {
- NULL,
- NULL,
- NULL,
- NULL,
- &zwlr_layer_surface_v1_interface,
- &wl_surface_interface,
- &wl_output_interface,
- NULL,
- NULL,
- &xdg_popup_interface,
-};
-
-static const struct wl_message zwlr_layer_shell_v1_requests[] = {
- { "get_layer_surface", "no?ous", wlr_layer_shell_unstable_v1_types + 4 },
- { "destroy", "3", wlr_layer_shell_unstable_v1_types + 0 },
-};
-
-WL_PRIVATE const struct wl_interface zwlr_layer_shell_v1_interface = {
- "zwlr_layer_shell_v1", 4,
- 2, zwlr_layer_shell_v1_requests,
- 0, NULL,
-};
-
-static const struct wl_message zwlr_layer_surface_v1_requests[] = {
- { "set_size", "uu", wlr_layer_shell_unstable_v1_types + 0 },
- { "set_anchor", "u", wlr_layer_shell_unstable_v1_types + 0 },
- { "set_exclusive_zone", "i", wlr_layer_shell_unstable_v1_types + 0 },
- { "set_margin", "iiii", wlr_layer_shell_unstable_v1_types + 0 },
- { "set_keyboard_interactivity", "u", wlr_layer_shell_unstable_v1_types + 0 },
- { "get_popup", "o", wlr_layer_shell_unstable_v1_types + 9 },
- { "ack_configure", "u", wlr_layer_shell_unstable_v1_types + 0 },
- { "destroy", "", wlr_layer_shell_unstable_v1_types + 0 },
- { "set_layer", "2u", wlr_layer_shell_unstable_v1_types + 0 },
-};
-
-static const struct wl_message zwlr_layer_surface_v1_events[] = {
- { "configure", "uuu", wlr_layer_shell_unstable_v1_types + 0 },
- { "closed", "", wlr_layer_shell_unstable_v1_types + 0 },
-};
-
-WL_PRIVATE const struct wl_interface zwlr_layer_surface_v1_interface = {
- "zwlr_layer_surface_v1", 4,
- 9, zwlr_layer_surface_v1_requests,
- 2, zwlr_layer_surface_v1_events,
-};
-
diff --git a/src/wlr-layer-shell-unstable-v1.h b/src/wlr-layer-shell-unstable-v1.h
deleted file mode 100644
index 3a13f59..0000000
--- a/src/wlr-layer-shell-unstable-v1.h
+++ /dev/null
@@ -1,668 +0,0 @@
-/* Generated by wayland-scanner 1.19.0 */
-
-#ifndef WLR_LAYER_SHELL_UNSTABLE_V1_CLIENT_PROTOCOL_H
-#define WLR_LAYER_SHELL_UNSTABLE_V1_CLIENT_PROTOCOL_H
-
-#include <stdint.h>
-#include <stddef.h>
-#include "wayland-client.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @page page_wlr_layer_shell_unstable_v1 The wlr_layer_shell_unstable_v1 protocol
- * @section page_ifaces_wlr_layer_shell_unstable_v1 Interfaces
- * - @subpage page_iface_zwlr_layer_shell_v1 - create surfaces that are layers of the desktop
- * - @subpage page_iface_zwlr_layer_surface_v1 - layer metadata interface
- * @section page_copyright_wlr_layer_shell_unstable_v1 Copyright
- * <pre>
- *
- * Copyright © 2017 Drew DeVault
- *
- * Permission to use, copy, modify, distribute, and sell this
- * software and its documentation for any purpose is hereby granted
- * without fee, provided that the above copyright notice appear in
- * all copies and that both that copyright notice and this permission
- * notice appear in supporting documentation, and that the name of
- * the copyright holders not be used in advertising or publicity
- * pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- * </pre>
- */
-struct wl_output;
-struct wl_surface;
-struct xdg_popup;
-struct zwlr_layer_shell_v1;
-struct zwlr_layer_surface_v1;
-
-#ifndef ZWLR_LAYER_SHELL_V1_INTERFACE
-#define ZWLR_LAYER_SHELL_V1_INTERFACE
-/**
- * @page page_iface_zwlr_layer_shell_v1 zwlr_layer_shell_v1
- * @section page_iface_zwlr_layer_shell_v1_desc Description
- *
- * Clients can use this interface to assign the surface_layer role to
- * wl_surfaces. Such surfaces are assigned to a "layer" of the output and
- * rendered with a defined z-depth respective to each other. They may also be
- * anchored to the edges and corners of a screen and specify input handling
- * semantics. This interface should be suitable for the implementation of
- * many desktop shell components, and a broad number of other applications
- * that interact with the desktop.
- * @section page_iface_zwlr_layer_shell_v1_api API
- * See @ref iface_zwlr_layer_shell_v1.
- */
-/**
- * @defgroup iface_zwlr_layer_shell_v1 The zwlr_layer_shell_v1 interface
- *
- * Clients can use this interface to assign the surface_layer role to
- * wl_surfaces. Such surfaces are assigned to a "layer" of the output and
- * rendered with a defined z-depth respective to each other. They may also be
- * anchored to the edges and corners of a screen and specify input handling
- * semantics. This interface should be suitable for the implementation of
- * many desktop shell components, and a broad number of other applications
- * that interact with the desktop.
- */
-extern const struct wl_interface zwlr_layer_shell_v1_interface;
-#endif
-#ifndef ZWLR_LAYER_SURFACE_V1_INTERFACE
-#define ZWLR_LAYER_SURFACE_V1_INTERFACE
-/**
- * @page page_iface_zwlr_layer_surface_v1 zwlr_layer_surface_v1
- * @section page_iface_zwlr_layer_surface_v1_desc Description
- *
- * An interface that may be implemented by a wl_surface, for surfaces that
- * are designed to be rendered as a layer of a stacked desktop-like
- * environment.
- *
- * Layer surface state (layer, size, anchor, exclusive zone,
- * margin, interactivity) is double-buffered, and will be applied at the
- * time wl_surface.commit of the corresponding wl_surface is called.
- *
- * Attaching a null buffer to a layer surface unmaps it.
- *
- * Unmapping a layer_surface means that the surface cannot be shown by the
- * compositor until it is explicitly mapped again. The layer_surface
- * returns to the state it had right after layer_shell.get_layer_surface.
- * The client can re-map the surface by performing a commit without any
- * buffer attached, waiting for a configure event and handling it as usual.
- * @section page_iface_zwlr_layer_surface_v1_api API
- * See @ref iface_zwlr_layer_surface_v1.
- */
-/**
- * @defgroup iface_zwlr_layer_surface_v1 The zwlr_layer_surface_v1 interface
- *
- * An interface that may be implemented by a wl_surface, for surfaces that
- * are designed to be rendered as a layer of a stacked desktop-like
- * environment.
- *
- * Layer surface state (layer, size, anchor, exclusive zone,
- * margin, interactivity) is double-buffered, and will be applied at the
- * time wl_surface.commit of the corresponding wl_surface is called.
- *
- * Attaching a null buffer to a layer surface unmaps it.
- *
- * Unmapping a layer_surface means that the surface cannot be shown by the
- * compositor until it is explicitly mapped again. The layer_surface
- * returns to the state it had right after layer_shell.get_layer_surface.
- * The client can re-map the surface by performing a commit without any
- * buffer attached, waiting for a configure event and handling it as usual.
- */
-extern const struct wl_interface zwlr_layer_surface_v1_interface;
-#endif
-
-#ifndef ZWLR_LAYER_SHELL_V1_ERROR_ENUM
-#define ZWLR_LAYER_SHELL_V1_ERROR_ENUM
-enum zwlr_layer_shell_v1_error {
- /**
- * wl_surface has another role
- */
- ZWLR_LAYER_SHELL_V1_ERROR_ROLE = 0,
- /**
- * layer value is invalid
- */
- ZWLR_LAYER_SHELL_V1_ERROR_INVALID_LAYER = 1,
- /**
- * wl_surface has a buffer attached or committed
- */
- ZWLR_LAYER_SHELL_V1_ERROR_ALREADY_CONSTRUCTED = 2,
-};
-#endif /* ZWLR_LAYER_SHELL_V1_ERROR_ENUM */
-
-#ifndef ZWLR_LAYER_SHELL_V1_LAYER_ENUM
-#define ZWLR_LAYER_SHELL_V1_LAYER_ENUM
-/**
- * @ingroup iface_zwlr_layer_shell_v1
- * available layers for surfaces
- *
- * These values indicate which layers a surface can be rendered in. They
- * are ordered by z depth, bottom-most first. Traditional shell surfaces
- * will typically be rendered between the bottom and top layers.
- * Fullscreen shell surfaces are typically rendered at the top layer.
- * Multiple surfaces can share a single layer, and ordering within a
- * single layer is undefined.
- */
-enum zwlr_layer_shell_v1_layer {
- ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND = 0,
- ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM = 1,
- ZWLR_LAYER_SHELL_V1_LAYER_TOP = 2,
- ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY = 3,
-};
-#endif /* ZWLR_LAYER_SHELL_V1_LAYER_ENUM */
-
-#define ZWLR_LAYER_SHELL_V1_GET_LAYER_SURFACE 0
-#define ZWLR_LAYER_SHELL_V1_DESTROY 1
-
-
-/**
- * @ingroup iface_zwlr_layer_shell_v1
- */
-#define ZWLR_LAYER_SHELL_V1_GET_LAYER_SURFACE_SINCE_VERSION 1
-/**
- * @ingroup iface_zwlr_layer_shell_v1
- */
-#define ZWLR_LAYER_SHELL_V1_DESTROY_SINCE_VERSION 3
-
-/** @ingroup iface_zwlr_layer_shell_v1 */
-static inline void
-zwlr_layer_shell_v1_set_user_data(struct zwlr_layer_shell_v1 *zwlr_layer_shell_v1, void *user_data)
-{
- wl_proxy_set_user_data((struct wl_proxy *) zwlr_layer_shell_v1, user_data);
-}
-
-/** @ingroup iface_zwlr_layer_shell_v1 */
-static inline void *
-zwlr_layer_shell_v1_get_user_data(struct zwlr_layer_shell_v1 *zwlr_layer_shell_v1)
-{
- return wl_proxy_get_user_data((struct wl_proxy *) zwlr_layer_shell_v1);
-}
-
-static inline uint32_t
-zwlr_layer_shell_v1_get_version(struct zwlr_layer_shell_v1 *zwlr_layer_shell_v1)
-{
- return wl_proxy_get_version((struct wl_proxy *) zwlr_layer_shell_v1);
-}
-
-/**
- * @ingroup iface_zwlr_layer_shell_v1
- *
- * Create a layer surface for an existing surface. This assigns the role of
- * layer_surface, or raises a protocol error if another role is already
- * assigned.
- *
- * Creating a layer surface from a wl_surface which has a buffer attached
- * or committed is a client error, and any attempts by a client to attach
- * or manipulate a buffer prior to the first layer_surface.configure call
- * must also be treated as errors.
- *
- * After creating a layer_surface object and setting it up, the client
- * must perform an initial commit without any buffer attached.
- * The compositor will reply with a layer_surface.configure event.
- * The client must acknowledge it and is then allowed to attach a buffer
- * to map the surface.
- *
- * You may pass NULL for output to allow the compositor to decide which
- * output to use. Generally this will be the one that the user most
- * recently interacted with.
- *
- * Clients can specify a namespace that defines the purpose of the layer
- * surface.
- */
-static inline struct zwlr_layer_surface_v1 *
-zwlr_layer_shell_v1_get_layer_surface(struct zwlr_layer_shell_v1 *zwlr_layer_shell_v1, struct wl_surface *surface, struct wl_output *output, uint32_t layer, const char *namespace)
-{
- struct wl_proxy *id;
-
- id = wl_proxy_marshal_constructor((struct wl_proxy *) zwlr_layer_shell_v1,
- ZWLR_LAYER_SHELL_V1_GET_LAYER_SURFACE, &zwlr_layer_surface_v1_interface, NULL, surface, output, layer, namespace);
-
- return (struct zwlr_layer_surface_v1 *) id;
-}
-
-/**
- * @ingroup iface_zwlr_layer_shell_v1
- *
- * This request indicates that the client will not use the layer_shell
- * object any more. Objects that have been created through this instance
- * are not affected.
- */
-static inline void
-zwlr_layer_shell_v1_destroy(struct zwlr_layer_shell_v1 *zwlr_layer_shell_v1)
-{
- wl_proxy_marshal((struct wl_proxy *) zwlr_layer_shell_v1,
- ZWLR_LAYER_SHELL_V1_DESTROY);
-
- wl_proxy_destroy((struct wl_proxy *) zwlr_layer_shell_v1);
-}
-
-#ifndef ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ENUM
-#define ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ENUM
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- * request regular keyboard focus semantics
- *
- * This requests the compositor to allow this surface to be focused and
- * unfocused by the user in an implementation-defined manner. The user
- * should be able to unfocus this surface even regardless of the layer
- * it is on.
- *
- * Typically, the compositor will want to use its normal mechanism to
- * manage keyboard focus between layer shell surfaces with this setting
- * and regular toplevels on the desktop layer (e.g. click to focus).
- * Nevertheless, it is possible for a compositor to require a special
- * interaction to focus or unfocus layer shell surfaces (e.g. requiring
- * a click even if focus follows the mouse normally, or providing a
- * keybinding to switch focus between layers).
- *
- * This setting is mainly intended for desktop shell components (e.g.
- * panels) that allow keyboard interaction. Using this option can allow
- * implementing a desktop shell that can be fully usable without the
- * mouse.
- */
-enum zwlr_layer_surface_v1_keyboard_interactivity {
- ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_NONE = 0,
- ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_EXCLUSIVE = 1,
- /**
- * @since 4
- */
- ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND = 2,
-};
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ON_DEMAND_SINCE_VERSION 4
-#endif /* ZWLR_LAYER_SURFACE_V1_KEYBOARD_INTERACTIVITY_ENUM */
-
-#ifndef ZWLR_LAYER_SURFACE_V1_ERROR_ENUM
-#define ZWLR_LAYER_SURFACE_V1_ERROR_ENUM
-enum zwlr_layer_surface_v1_error {
- /**
- * provided surface state is invalid
- */
- ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_SURFACE_STATE = 0,
- /**
- * size is invalid
- */
- ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_SIZE = 1,
- /**
- * anchor bitfield is invalid
- */
- ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_ANCHOR = 2,
- /**
- * keyboard interactivity is invalid
- */
- ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_KEYBOARD_INTERACTIVITY = 3,
-};
-#endif /* ZWLR_LAYER_SURFACE_V1_ERROR_ENUM */
-
-#ifndef ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM
-#define ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM
-enum zwlr_layer_surface_v1_anchor {
- /**
- * the top edge of the anchor rectangle
- */
- ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP = 1,
- /**
- * the bottom edge of the anchor rectangle
- */
- ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM = 2,
- /**
- * the left edge of the anchor rectangle
- */
- ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT = 4,
- /**
- * the right edge of the anchor rectangle
- */
- ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT = 8,
-};
-#endif /* ZWLR_LAYER_SURFACE_V1_ANCHOR_ENUM */
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- * @struct zwlr_layer_surface_v1_listener
- */
-struct zwlr_layer_surface_v1_listener {
- /**
- * suggest a surface change
- *
- * The configure event asks the client to resize its surface.
- *
- * Clients should arrange their surface for the new states, and
- * then send an ack_configure request with the serial sent in this
- * configure event at some point before committing the new surface.
- *
- * The client is free to dismiss all but the last configure event
- * it received.
- *
- * The width and height arguments specify the size of the window in
- * surface-local coordinates.
- *
- * The size is a hint, in the sense that the client is free to
- * ignore it if it doesn't resize, pick a smaller size (to satisfy
- * aspect ratio or resize in steps of NxM pixels). If the client
- * picks a smaller size and is anchored to two opposite anchors
- * (e.g. 'top' and 'bottom'), the surface will be centered on this
- * axis.
- *
- * If the width or height arguments are zero, it means the client
- * should decide its own window dimension.
- */
- void (*configure)(void *data,
- struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1,
- uint32_t serial,
- uint32_t width,
- uint32_t height);
- /**
- * surface should be closed
- *
- * The closed event is sent by the compositor when the surface
- * will no longer be shown. The output may have been destroyed or
- * the user may have asked for it to be removed. Further changes to
- * the surface will be ignored. The client should destroy the
- * resource after receiving this event, and create a new surface if
- * they so choose.
- */
- void (*closed)(void *data,
- struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1);
-};
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-static inline int
-zwlr_layer_surface_v1_add_listener(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1,
- const struct zwlr_layer_surface_v1_listener *listener, void *data)
-{
- return wl_proxy_add_listener((struct wl_proxy *) zwlr_layer_surface_v1,
- (void (**)(void)) listener, data);
-}
-
-#define ZWLR_LAYER_SURFACE_V1_SET_SIZE 0
-#define ZWLR_LAYER_SURFACE_V1_SET_ANCHOR 1
-#define ZWLR_LAYER_SURFACE_V1_SET_EXCLUSIVE_ZONE 2
-#define ZWLR_LAYER_SURFACE_V1_SET_MARGIN 3
-#define ZWLR_LAYER_SURFACE_V1_SET_KEYBOARD_INTERACTIVITY 4
-#define ZWLR_LAYER_SURFACE_V1_GET_POPUP 5
-#define ZWLR_LAYER_SURFACE_V1_ACK_CONFIGURE 6
-#define ZWLR_LAYER_SURFACE_V1_DESTROY 7
-#define ZWLR_LAYER_SURFACE_V1_SET_LAYER 8
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_CONFIGURE_SINCE_VERSION 1
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_CLOSED_SINCE_VERSION 1
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_SET_SIZE_SINCE_VERSION 1
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_SET_ANCHOR_SINCE_VERSION 1
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_SET_EXCLUSIVE_ZONE_SINCE_VERSION 1
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_SET_MARGIN_SINCE_VERSION 1
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_SET_KEYBOARD_INTERACTIVITY_SINCE_VERSION 1
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_GET_POPUP_SINCE_VERSION 1
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_ACK_CONFIGURE_SINCE_VERSION 1
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_DESTROY_SINCE_VERSION 1
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- */
-#define ZWLR_LAYER_SURFACE_V1_SET_LAYER_SINCE_VERSION 2
-
-/** @ingroup iface_zwlr_layer_surface_v1 */
-static inline void
-zwlr_layer_surface_v1_set_user_data(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, void *user_data)
-{
- wl_proxy_set_user_data((struct wl_proxy *) zwlr_layer_surface_v1, user_data);
-}
-
-/** @ingroup iface_zwlr_layer_surface_v1 */
-static inline void *
-zwlr_layer_surface_v1_get_user_data(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1)
-{
- return wl_proxy_get_user_data((struct wl_proxy *) zwlr_layer_surface_v1);
-}
-
-static inline uint32_t
-zwlr_layer_surface_v1_get_version(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1)
-{
- return wl_proxy_get_version((struct wl_proxy *) zwlr_layer_surface_v1);
-}
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- *
- * Sets the size of the surface in surface-local coordinates. The
- * compositor will display the surface centered with respect to its
- * anchors.
- *
- * If you pass 0 for either value, the compositor will assign it and
- * inform you of the assignment in the configure event. You must set your
- * anchor to opposite edges in the dimensions you omit; not doing so is a
- * protocol error. Both values are 0 by default.
- *
- * Size is double-buffered, see wl_surface.commit.
- */
-static inline void
-zwlr_layer_surface_v1_set_size(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, uint32_t width, uint32_t height)
-{
- wl_proxy_marshal((struct wl_proxy *) zwlr_layer_surface_v1,
- ZWLR_LAYER_SURFACE_V1_SET_SIZE, width, height);
-}
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- *
- * Requests that the compositor anchor the surface to the specified edges
- * and corners. If two orthogonal edges are specified (e.g. 'top' and
- * 'left'), then the anchor point will be the intersection of the edges
- * (e.g. the top left corner of the output); otherwise the anchor point
- * will be centered on that edge, or in the center if none is specified.
- *
- * Anchor is double-buffered, see wl_surface.commit.
- */
-static inline void
-zwlr_layer_surface_v1_set_anchor(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, uint32_t anchor)
-{
- wl_proxy_marshal((struct wl_proxy *) zwlr_layer_surface_v1,
- ZWLR_LAYER_SURFACE_V1_SET_ANCHOR, anchor);
-}
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- *
- * Requests that the compositor avoids occluding an area with other
- * surfaces. The compositor's use of this information is
- * implementation-dependent - do not assume that this region will not
- * actually be occluded.
- *
- * A positive value is only meaningful if the surface is anchored to one
- * edge or an edge and both perpendicular edges. If the surface is not
- * anchored, anchored to only two perpendicular edges (a corner), anchored
- * to only two parallel edges or anchored to all edges, a positive value
- * will be treated the same as zero.
- *
- * A positive zone is the distance from the edge in surface-local
- * coordinates to consider exclusive.
- *
- * Surfaces that do not wish to have an exclusive zone may instead specify
- * how they should interact with surfaces that do. If set to zero, the
- * surface indicates that it would like to be moved to avoid occluding
- * surfaces with a positive exclusive zone. If set to -1, the surface
- * indicates that it would not like to be moved to accommodate for other
- * surfaces, and the compositor should extend it all the way to the edges
- * it is anchored to.
- *
- * For example, a panel might set its exclusive zone to 10, so that
- * maximized shell surfaces are not shown on top of it. A notification
- * might set its exclusive zone to 0, so that it is moved to avoid
- * occluding the panel, but shell surfaces are shown underneath it. A
- * wallpaper or lock screen might set their exclusive zone to -1, so that
- * they stretch below or over the panel.
- *
- * The default value is 0.
- *
- * Exclusive zone is double-buffered, see wl_surface.commit.
- */
-static inline void
-zwlr_layer_surface_v1_set_exclusive_zone(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, int32_t zone)
-{
- wl_proxy_marshal((struct wl_proxy *) zwlr_layer_surface_v1,
- ZWLR_LAYER_SURFACE_V1_SET_EXCLUSIVE_ZONE, zone);
-}
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- *
- * Requests that the surface be placed some distance away from the anchor
- * point on the output, in surface-local coordinates. Setting this value
- * for edges you are not anchored to has no effect.
- *
- * The exclusive zone includes the margin.
- *
- * Margin is double-buffered, see wl_surface.commit.
- */
-static inline void
-zwlr_layer_surface_v1_set_margin(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, int32_t top, int32_t right, int32_t bottom, int32_t left)
-{
- wl_proxy_marshal((struct wl_proxy *) zwlr_layer_surface_v1,
- ZWLR_LAYER_SURFACE_V1_SET_MARGIN, top, right, bottom, left);
-}
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- *
- * Set how keyboard events are delivered to this surface. By default,
- * layer shell surfaces do not receive keyboard events; this request can
- * be used to change this.
- *
- * This setting is inherited by child surfaces set by the get_popup
- * request.
- *
- * Layer surfaces receive pointer, touch, and tablet events normally. If
- * you do not want to receive them, set the input region on your surface
- * to an empty region.
- *
- * Keyboard interactivity is double-buffered, see wl_surface.commit.
- */
-static inline void
-zwlr_layer_surface_v1_set_keyboard_interactivity(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, uint32_t keyboard_interactivity)
-{
- wl_proxy_marshal((struct wl_proxy *) zwlr_layer_surface_v1,
- ZWLR_LAYER_SURFACE_V1_SET_KEYBOARD_INTERACTIVITY, keyboard_interactivity);
-}
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- *
- * This assigns an xdg_popup's parent to this layer_surface. This popup
- * should have been created via xdg_surface::get_popup with the parent set
- * to NULL, and this request must be invoked before committing the popup's
- * initial state.
- *
- * See the documentation of xdg_popup for more details about what an
- * xdg_popup is and how it is used.
- */
-static inline void
-zwlr_layer_surface_v1_get_popup(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, struct xdg_popup *popup)
-{
- wl_proxy_marshal((struct wl_proxy *) zwlr_layer_surface_v1,
- ZWLR_LAYER_SURFACE_V1_GET_POPUP, popup);
-}
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- *
- * When a configure event is received, if a client commits the
- * surface in response to the configure event, then the client
- * must make an ack_configure request sometime before the commit
- * request, passing along the serial of the configure event.
- *
- * If the client receives multiple configure events before it
- * can respond to one, it only has to ack the last configure event.
- *
- * A client is not required to commit immediately after sending
- * an ack_configure request - it may even ack_configure several times
- * before its next surface commit.
- *
- * A client may send multiple ack_configure requests before committing, but
- * only the last request sent before a commit indicates which configure
- * event the client really is responding to.
- */
-static inline void
-zwlr_layer_surface_v1_ack_configure(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, uint32_t serial)
-{
- wl_proxy_marshal((struct wl_proxy *) zwlr_layer_surface_v1,
- ZWLR_LAYER_SURFACE_V1_ACK_CONFIGURE, serial);
-}
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- *
- * This request destroys the layer surface.
- */
-static inline void
-zwlr_layer_surface_v1_destroy(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1)
-{
- wl_proxy_marshal((struct wl_proxy *) zwlr_layer_surface_v1,
- ZWLR_LAYER_SURFACE_V1_DESTROY);
-
- wl_proxy_destroy((struct wl_proxy *) zwlr_layer_surface_v1);
-}
-
-/**
- * @ingroup iface_zwlr_layer_surface_v1
- *
- * Change the layer that the surface is rendered on.
- *
- * Layer is double-buffered, see wl_surface.commit.
- */
-static inline void
-zwlr_layer_surface_v1_set_layer(struct zwlr_layer_surface_v1 *zwlr_layer_surface_v1, uint32_t layer)
-{
- wl_proxy_marshal((struct wl_proxy *) zwlr_layer_surface_v1,
- ZWLR_LAYER_SURFACE_V1_SET_LAYER, layer);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/src/wp-fractional-scale-v1.c b/src/wp-fractional-scale-v1.c
deleted file mode 100644
index 0eb72f8..0000000
--- a/src/wp-fractional-scale-v1.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Generated by wayland-scanner 1.21.0 */
-
-/*
- * Copyright © 2022 Kenny Levinsen
- *
- * 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.
- */
-
-#include <stdlib.h>
-#include <stdint.h>
-#include "wayland-util.h"
-
-#ifndef __has_attribute
-# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */
-#endif
-
-#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4)
-#define WL_PRIVATE __attribute__ ((visibility("hidden")))
-#else
-#define WL_PRIVATE
-#endif
-
-extern const struct wl_interface wl_surface_interface;
-extern const struct wl_interface wp_fractional_scale_v1_interface;
-
-static const struct wl_interface *fractional_scale_v1_types[] = {
- NULL,
- &wp_fractional_scale_v1_interface,
- &wl_surface_interface,
-};
-
-static const struct wl_message wp_fractional_scale_manager_v1_requests[] = {
- { "destroy", "", fractional_scale_v1_types + 0 },
- { "get_fractional_scale", "no", fractional_scale_v1_types + 1 },
-};
-
-WL_PRIVATE const struct wl_interface wp_fractional_scale_manager_v1_interface = {
- "wp_fractional_scale_manager_v1", 1,
- 2, wp_fractional_scale_manager_v1_requests,
- 0, NULL,
-};
-
-static const struct wl_message wp_fractional_scale_v1_requests[] = {
- { "destroy", "", fractional_scale_v1_types + 0 },
-};
-
-static const struct wl_message wp_fractional_scale_v1_events[] = {
- { "preferred_scale", "u", fractional_scale_v1_types + 0 },
-};
-
-WL_PRIVATE const struct wl_interface wp_fractional_scale_v1_interface = {
- "wp_fractional_scale_v1", 1,
- 1, wp_fractional_scale_v1_requests,
- 1, wp_fractional_scale_v1_events,
-};
-
diff --git a/src/wp-fractional-scale-v1.h b/src/wp-fractional-scale-v1.h
deleted file mode 100644
index f49178e..0000000
--- a/src/wp-fractional-scale-v1.h
+++ /dev/null
@@ -1,264 +0,0 @@
-/* Generated by wayland-scanner 1.21.0 */
-
-#ifndef FRACTIONAL_SCALE_V1_CLIENT_PROTOCOL_H
-#define FRACTIONAL_SCALE_V1_CLIENT_PROTOCOL_H
-
-#include <stdint.h>
-#include <stddef.h>
-#include "wayland-client.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @page page_fractional_scale_v1 The fractional_scale_v1 protocol
- * Protocol for requesting fractional surface scales
- *
- * @section page_desc_fractional_scale_v1 Description
- *
- * This protocol allows a compositor to suggest for surfaces to render at
- * fractional scales.
- *
- * A client can submit scaled content by utilizing wp_viewport. This is done by
- * creating a wp_viewport object for the surface and setting the destination
- * rectangle to the surface size before the scale factor is applied.
- *
- * The buffer size is calculated by multiplying the surface size by the
- * intended scale.
- *
- * The wl_surface buffer scale should remain set to 1.
- *
- * If a surface has a surface-local size of 100 px by 50 px and wishes to
- * submit buffers with a scale of 1.5, then a buffer of 150px by 75 px should
- * be used and the wp_viewport destination rectangle should be 100 px by 50 px.
- *
- * For toplevel surfaces, the size is rounded halfway away from zero. The
- * rounding algorithm for subsurface position and size is not defined.
- *
- * @section page_ifaces_fractional_scale_v1 Interfaces
- * - @subpage page_iface_wp_fractional_scale_manager_v1 - fractional surface scale information
- * - @subpage page_iface_wp_fractional_scale_v1 - fractional scale interface to a wl_surface
- * @section page_copyright_fractional_scale_v1 Copyright
- * <pre>
- *
- * Copyright © 2022 Kenny Levinsen
- *
- * 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.
- * </pre>
- */
-struct wl_surface;
-struct wp_fractional_scale_manager_v1;
-struct wp_fractional_scale_v1;
-
-#ifndef WP_FRACTIONAL_SCALE_MANAGER_V1_INTERFACE
-#define WP_FRACTIONAL_SCALE_MANAGER_V1_INTERFACE
-/**
- * @page page_iface_wp_fractional_scale_manager_v1 wp_fractional_scale_manager_v1
- * @section page_iface_wp_fractional_scale_manager_v1_desc Description
- *
- * A global interface for requesting surfaces to use fractional scales.
- * @section page_iface_wp_fractional_scale_manager_v1_api API
- * See @ref iface_wp_fractional_scale_manager_v1.
- */
-/**
- * @defgroup iface_wp_fractional_scale_manager_v1 The wp_fractional_scale_manager_v1 interface
- *
- * A global interface for requesting surfaces to use fractional scales.
- */
-extern const struct wl_interface wp_fractional_scale_manager_v1_interface;
-#endif
-#ifndef WP_FRACTIONAL_SCALE_V1_INTERFACE
-#define WP_FRACTIONAL_SCALE_V1_INTERFACE
-/**
- * @page page_iface_wp_fractional_scale_v1 wp_fractional_scale_v1
- * @section page_iface_wp_fractional_scale_v1_desc Description
- *
- * An additional interface to a wl_surface object which allows the compositor
- * to inform the client of the preferred scale.
- * @section page_iface_wp_fractional_scale_v1_api API
- * See @ref iface_wp_fractional_scale_v1.
- */
-/**
- * @defgroup iface_wp_fractional_scale_v1 The wp_fractional_scale_v1 interface
- *
- * An additional interface to a wl_surface object which allows the compositor
- * to inform the client of the preferred scale.
- */
-extern const struct wl_interface wp_fractional_scale_v1_interface;
-#endif
-
-#ifndef WP_FRACTIONAL_SCALE_MANAGER_V1_ERROR_ENUM
-#define WP_FRACTIONAL_SCALE_MANAGER_V1_ERROR_ENUM
-enum wp_fractional_scale_manager_v1_error {
- /**
- * the surface already has a fractional_scale object associated
- */
- WP_FRACTIONAL_SCALE_MANAGER_V1_ERROR_FRACTIONAL_SCALE_EXISTS = 0,
-};
-#endif /* WP_FRACTIONAL_SCALE_MANAGER_V1_ERROR_ENUM */
-
-#define WP_FRACTIONAL_SCALE_MANAGER_V1_DESTROY 0
-#define WP_FRACTIONAL_SCALE_MANAGER_V1_GET_FRACTIONAL_SCALE 1
-
-
-/**
- * @ingroup iface_wp_fractional_scale_manager_v1
- */
-#define WP_FRACTIONAL_SCALE_MANAGER_V1_DESTROY_SINCE_VERSION 1
-/**
- * @ingroup iface_wp_fractional_scale_manager_v1
- */
-#define WP_FRACTIONAL_SCALE_MANAGER_V1_GET_FRACTIONAL_SCALE_SINCE_VERSION 1
-
-/** @ingroup iface_wp_fractional_scale_manager_v1 */
-static inline void
-wp_fractional_scale_manager_v1_set_user_data(struct wp_fractional_scale_manager_v1 *wp_fractional_scale_manager_v1, void *user_data)
-{
- wl_proxy_set_user_data((struct wl_proxy *) wp_fractional_scale_manager_v1, user_data);
-}
-
-/** @ingroup iface_wp_fractional_scale_manager_v1 */
-static inline void *
-wp_fractional_scale_manager_v1_get_user_data(struct wp_fractional_scale_manager_v1 *wp_fractional_scale_manager_v1)
-{
- return wl_proxy_get_user_data((struct wl_proxy *) wp_fractional_scale_manager_v1);
-}
-
-static inline uint32_t
-wp_fractional_scale_manager_v1_get_version(struct wp_fractional_scale_manager_v1 *wp_fractional_scale_manager_v1)
-{
- return wl_proxy_get_version((struct wl_proxy *) wp_fractional_scale_manager_v1);
-}
-
-/**
- * @ingroup iface_wp_fractional_scale_manager_v1
- *
- * Informs the server that the client will not be using this protocol
- * object anymore. This does not affect any other objects,
- * wp_fractional_scale_v1 objects included.
- */
-static inline void
-wp_fractional_scale_manager_v1_destroy(struct wp_fractional_scale_manager_v1 *wp_fractional_scale_manager_v1)
-{
- wl_proxy_marshal_flags((struct wl_proxy *) wp_fractional_scale_manager_v1,
- WP_FRACTIONAL_SCALE_MANAGER_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) wp_fractional_scale_manager_v1), WL_MARSHAL_FLAG_DESTROY);
-}
-
-/**
- * @ingroup iface_wp_fractional_scale_manager_v1
- *
- * Create an add-on object for the the wl_surface to let the compositor
- * request fractional scales. If the given wl_surface already has a
- * wp_fractional_scale_v1 object associated, the fractional_scale_exists
- * protocol error is raised.
- */
-static inline struct wp_fractional_scale_v1 *
-wp_fractional_scale_manager_v1_get_fractional_scale(struct wp_fractional_scale_manager_v1 *wp_fractional_scale_manager_v1, struct wl_surface *surface)
-{
- struct wl_proxy *id;
-
- id = wl_proxy_marshal_flags((struct wl_proxy *) wp_fractional_scale_manager_v1,
- WP_FRACTIONAL_SCALE_MANAGER_V1_GET_FRACTIONAL_SCALE, &wp_fractional_scale_v1_interface, wl_proxy_get_version((struct wl_proxy *) wp_fractional_scale_manager_v1), 0, NULL, surface);
-
- return (struct wp_fractional_scale_v1 *) id;
-}
-
-/**
- * @ingroup iface_wp_fractional_scale_v1
- * @struct wp_fractional_scale_v1_listener
- */
-struct wp_fractional_scale_v1_listener {
- /**
- * notify of new preferred scale
- *
- * Notification of a new preferred scale for this surface that
- * the compositor suggests that the client should use.
- *
- * The sent scale is the numerator of a fraction with a denominator
- * of 120.
- * @param scale the new preferred scale
- */
- void (*preferred_scale)(void *data,
- struct wp_fractional_scale_v1 *wp_fractional_scale_v1,
- uint32_t scale);
-};
-
-/**
- * @ingroup iface_wp_fractional_scale_v1
- */
-static inline int
-wp_fractional_scale_v1_add_listener(struct wp_fractional_scale_v1 *wp_fractional_scale_v1,
- const struct wp_fractional_scale_v1_listener *listener, void *data)
-{
- return wl_proxy_add_listener((struct wl_proxy *) wp_fractional_scale_v1,
- (void (**)(void)) listener, data);
-}
-
-#define WP_FRACTIONAL_SCALE_V1_DESTROY 0
-
-/**
- * @ingroup iface_wp_fractional_scale_v1
- */
-#define WP_FRACTIONAL_SCALE_V1_PREFERRED_SCALE_SINCE_VERSION 1
-
-/**
- * @ingroup iface_wp_fractional_scale_v1
- */
-#define WP_FRACTIONAL_SCALE_V1_DESTROY_SINCE_VERSION 1
-
-/** @ingroup iface_wp_fractional_scale_v1 */
-static inline void
-wp_fractional_scale_v1_set_user_data(struct wp_fractional_scale_v1 *wp_fractional_scale_v1, void *user_data)
-{
- wl_proxy_set_user_data((struct wl_proxy *) wp_fractional_scale_v1, user_data);
-}
-
-/** @ingroup iface_wp_fractional_scale_v1 */
-static inline void *
-wp_fractional_scale_v1_get_user_data(struct wp_fractional_scale_v1 *wp_fractional_scale_v1)
-{
- return wl_proxy_get_user_data((struct wl_proxy *) wp_fractional_scale_v1);
-}
-
-static inline uint32_t
-wp_fractional_scale_v1_get_version(struct wp_fractional_scale_v1 *wp_fractional_scale_v1)
-{
- return wl_proxy_get_version((struct wl_proxy *) wp_fractional_scale_v1);
-}
-
-/**
- * @ingroup iface_wp_fractional_scale_v1
- *
- * Destroy the fractional scale object. When this object is destroyed,
- * preferred_scale events will no longer be sent.
- */
-static inline void
-wp_fractional_scale_v1_destroy(struct wp_fractional_scale_v1 *wp_fractional_scale_v1)
-{
- wl_proxy_marshal_flags((struct wl_proxy *) wp_fractional_scale_v1,
- WP_FRACTIONAL_SCALE_V1_DESTROY, NULL, wl_proxy_get_version((struct wl_proxy *) wp_fractional_scale_v1), WL_MARSHAL_FLAG_DESTROY);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif