aboutsummaryrefslogtreecommitdiff
path: root/x11-wm
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2021-02-23 17:26:36 +0000
committerJan Beich <jbeich@FreeBSD.org>2021-04-07 20:59:00 +0000
commit70148c11889b8de458a1c3ea23c94d05af404296 (patch)
tree62f5db88aeb7ec1249fc064dc965cb38813da479 /x11-wm
parentcdea03ab491cdf68f1e3389c7369b302958f30b5 (diff)
downloadports-70148c11889b8de458a1c3ea23c94d05af404296.tar.gz
ports-70148c11889b8de458a1c3ea23c94d05af404296.zip
x11-toolkits/wlroots: update to 0.13.0
Changes: https://github.com/swaywm/wlroots/releases/tag/0.13.0 Reported by: GitHub (watch releases) Tested by: Evgeniy Khramtsov (via CFT on x11@ list)
Diffstat (limited to 'x11-wm')
-rw-r--r--x11-wm/cage/Makefile10
-rw-r--r--x11-wm/cage/distinfo12
-rw-r--r--x11-wm/gamescope/Makefile3
-rw-r--r--x11-wm/gamescope/distinfo4
-rw-r--r--x11-wm/hikari/Makefile3
-rw-r--r--x11-wm/hikari/files/patch-wlroots-0.13439
-rw-r--r--x11-wm/labwc/Makefile7
-rw-r--r--x11-wm/labwc/distinfo8
-rw-r--r--x11-wm/phoc/Makefile9
-rw-r--r--x11-wm/phoc/distinfo2
-rw-r--r--x11-wm/river/Makefile1
-rw-r--r--x11-wm/river/files/patch-wlroots-0.13373
-rw-r--r--x11-wm/sway/Makefile13
-rw-r--r--x11-wm/sway/distinfo18
-rw-r--r--x11-wm/wayfire-plugins-extra/Makefile1
-rw-r--r--x11-wm/wayfire/Makefile14
-rw-r--r--x11-wm/wayfire/distinfo16
17 files changed, 926 insertions, 7 deletions
diff --git a/x11-wm/cage/Makefile b/x11-wm/cage/Makefile
index 3ba6b07a2358..785db5d30ef0 100644
--- a/x11-wm/cage/Makefile
+++ b/x11-wm/cage/Makefile
@@ -1,11 +1,17 @@
PORTNAME= cage
DISTVERSIONPREFIX= v
DISTVERSION= 0.1.2.1
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= x11-wm
PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
PATCHFILES+= 70ecdcb02ea0.patch:-p1 # https://github.com/Hjdskes/cage/pull/148
+PATCHFILES+= 43f1ea36d669.patch:-p1 # https://github.com/Hjdskes/cage/pull/174
+PATCHFILES+= e3b1a57acaee.patch:-p1 # https://github.com/Hjdskes/cage/pull/174
+PATCHFILES+= 0db62672a4c1.patch:-p1 # https://github.com/Hjdskes/cage/pull/174
+PATCHFILES+= 2852b4e6d024.patch:-p1 # https://github.com/Hjdskes/cage/pull/174
+PATCHFILES+= 956b0cc6a476.patch:-p1 # https://github.com/Hjdskes/cage/pull/174
+PATCHFILES+= e1956ccb723e.patch:-p1 # https://github.com/Hjdskes/cage/pull/174
MAINTAINER= jbeich@FreeBSD.org
COMMENT= Wayland kiosk
@@ -15,7 +21,7 @@ LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto \
wayland-protocols>=1.14:graphics/wayland-protocols \
- wlroots>=0.11.0:x11-toolkits/wlroots
+ wlroots>=0.13.0:x11-toolkits/wlroots
LIB_DEPENDS= libwayland-server.so:graphics/wayland \
libwlroots.so:x11-toolkits/wlroots \
libxkbcommon.so:x11/libxkbcommon
diff --git a/x11-wm/cage/distinfo b/x11-wm/cage/distinfo
index 37e8097a9c86..287d0c9cb86b 100644
--- a/x11-wm/cage/distinfo
+++ b/x11-wm/cage/distinfo
@@ -3,3 +3,15 @@ SHA256 (Hjdskes-cage-v0.1.2.1_GH0.tar.gz) = 38a3e3968f00cc58fe1d9448e972cfac7d1e
SIZE (Hjdskes-cage-v0.1.2.1_GH0.tar.gz) = 24600
SHA256 (70ecdcb02ea0.patch) = 2dd0e99d181986c6b2d5e04e89f692e3d77b8bd2a3a08f94cf8a27b38489eb3c
SIZE (70ecdcb02ea0.patch) = 2137
+SHA256 (43f1ea36d669.patch) = b81ffa42da2ab21d12616315c83c932b7d88c1d365229615c7489ce5129f7010
+SIZE (43f1ea36d669.patch) = 1114
+SHA256 (e3b1a57acaee.patch) = d40a85a5dc75eb0dae37e0f1b9a033d21efa75717177529182e69bd6812bd482
+SIZE (e3b1a57acaee.patch) = 1056
+SHA256 (0db62672a4c1.patch) = 9b7d8a4c3ae8fe10a799b272e3d727bb1c32fc490ad546bc32a6c373c745b556
+SIZE (0db62672a4c1.patch) = 1457
+SHA256 (2852b4e6d024.patch) = 073b0a07897b7f9a134f22c9297dd97fb35233c8265c08b1f3fa54d8bc596cd8
+SIZE (2852b4e6d024.patch) = 7147
+SHA256 (956b0cc6a476.patch) = e77e1266ca9c0e6e119d18ea32669c7494d3d46f71c354c1446014439090f884
+SIZE (956b0cc6a476.patch) = 2993
+SHA256 (e1956ccb723e.patch) = 20cb74a2b070b0b13df437924962dd475afb5510e57fb817b37e999127851ba6
+SIZE (e1956ccb723e.patch) = 1115
diff --git a/x11-wm/gamescope/Makefile b/x11-wm/gamescope/Makefile
index 771958b44ae2..1e5b25601a35 100644
--- a/x11-wm/gamescope/Makefile
+++ b/x11-wm/gamescope/Makefile
@@ -1,5 +1,6 @@
PORTNAME= gamescope
DISTVERSION= 3.7.1
+PORTREVISION= 1
CATEGORIES= x11-wm
PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
@@ -8,6 +9,8 @@ PATCHFILES+= 620f8f5bc530.patch:-p1 # https://github.com/Plagman/gamescope/pull/
PATCHFILES+= 892d79b0f37e.patch:-p1 # https://github.com/Plagman/gamescope/pull/119
PATCHFILES+= ae60c865d9d8.patch:-p1 # https://github.com/Plagman/gamescope/pull/119
PATCHFILES+= d59836199ebe.patch:-p1 # https://github.com/Plagman/gamescope/issues/120
+PATCHFILES+= 9d84b38c9042.patch:-p1 # wlroots 0.13
+PATCHFILES+= a9d8a368d809.patch:-p1 # wlroots 0.13
MAINTAINER= jbeich@FreeBSD.org
COMMENT= Micro-compositor from SteamOS
diff --git a/x11-wm/gamescope/distinfo b/x11-wm/gamescope/distinfo
index 4989ae4c8251..a02bbea2aade 100644
--- a/x11-wm/gamescope/distinfo
+++ b/x11-wm/gamescope/distinfo
@@ -13,3 +13,7 @@ SHA256 (ae60c865d9d8.patch) = 41593e80d11a80c17a173cd03330738fc9deb82626c6788e15
SIZE (ae60c865d9d8.patch) = 1111
SHA256 (d59836199ebe.patch) = 40b519ef847b979ba088325cdd7170bed91936b79d845c65d2126b2b25166a1e
SIZE (d59836199ebe.patch) = 2586
+SHA256 (9d84b38c9042.patch) = 635e87956399b4c82c8d5234e48752537aa4621d24d02dc0923f61ed040ebab0
+SIZE (9d84b38c9042.patch) = 1514
+SHA256 (a9d8a368d809.patch) = b3eb5e323b351870a3c97df610bc27e33713623017e4a219b13dbc8b6df752a5
+SIZE (a9d8a368d809.patch) = 912
diff --git a/x11-wm/hikari/Makefile b/x11-wm/hikari/Makefile
index 213d9bde31d6..31120173e6a6 100644
--- a/x11-wm/hikari/Makefile
+++ b/x11-wm/hikari/Makefile
@@ -1,5 +1,6 @@
PORTNAME= hikari
DISTVERSION= 2.2.3
+PORTREVISION= 1
CATEGORIES= x11-wm
MASTER_SITES= https://hikari.acmelabs.space/releases/
@@ -11,7 +12,7 @@ LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto \
wayland-protocols>=1.14:graphics/wayland-protocols \
- wlroots>=0.9.0<0.13.0:x11-toolkits/wlroots
+ wlroots>=0.13.0<0.14.0:x11-toolkits/wlroots
LIB_DEPENDS= libinput.so:x11/libinput \
libucl.so:textproc/libucl \
libwayland-server.so:graphics/wayland \
diff --git a/x11-wm/hikari/files/patch-wlroots-0.13 b/x11-wm/hikari/files/patch-wlroots-0.13
new file mode 100644
index 000000000000..41ff4f72f408
--- /dev/null
+++ b/x11-wm/hikari/files/patch-wlroots-0.13
@@ -0,0 +1,439 @@
+In file included from src/action.c:7:
+In file included from include/hikari/server.h:29:
+In file included from include/hikari/layer_shell.h:4:
+/usr/local/include/wlr/types/wlr_layer_shell_v1.h:52:52: error: field has incomplete type 'enum zwlr_layer_surface_v1_keyboard_interactivity'
+ enum zwlr_layer_surface_v1_keyboard_interactivity keyboard_interactive;
+ ^
+/usr/local/include/wlr/types/wlr_layer_shell_v1.h:52:7: note: forward declaration of 'enum zwlr_layer_surface_v1_keyboard_interactivity'
+ enum zwlr_layer_surface_v1_keyboard_interactivity keyboard_interactive;
+ ^
+In file included from src/configuration.c:29:
+In file included from include/hikari/server.h:8:
+In file included from /usr/local/include/wlr/types/wlr_virtual_keyboard_v1.h:14:
+In file included from /usr/local/include/wlr/interfaces/wlr_keyboard.h:13:
+/usr/local/include/wlr/types/wlr_keyboard.h:113:10: error: conflicting types for 'wlr_keyboard_get_modifiers'
+uint32_t wlr_keyboard_get_modifiers(struct wlr_keyboard *keyboard);
+ ^
+include/hikari/keyboard.h:61:24: note: previous implicit declaration is here
+ uint32_t modifiers = wlr_keyboard_get_modifiers(keyboard->device->keyboard);
+ ^
+In file included from src/configuration.c:32:
+include/hikari/switch.h:14:25: error: field has incomplete type 'enum wlr_switch_state'
+ enum wlr_switch_state state;
+ ^
+include/hikari/switch.h:14:8: note: forward declaration of 'enum wlr_switch_state'
+ enum wlr_switch_state state;
+ ^
+src/dnd_mode.c:25:23: error: use of undeclared identifier 'WLR_KEY_RELEASED'; did you mean 'WLR_BUTTON_RELEASED'?
+ if (event->state == WLR_KEY_RELEASED) {
+src/group_assign_mode.c:256:23: error: use of undeclared identifier 'WLR_KEY_PRESSED'
+ if (event->state == WLR_KEY_PRESSED) {
+src/input_grab_mode.c:53:23: error: use of undeclared identifier 'WLR_KEY_PRESSED'
+ if (event->state == WLR_KEY_PRESSED) {
+src/layout_select_mode.c:62:23: error: use of undeclared identifier 'WLR_KEY_PRESSED'
+ if (event->state == WLR_KEY_PRESSED) {
+src/lock_mode.c:180:23: error: use of undeclared identifier 'WLR_KEY_PRESSED'
+ if (event->state == WLR_KEY_PRESSED) {
+src/mark_assign_mode.c:164:23: error: use of undeclared identifier 'WLR_KEY_PRESSED'
+ if (event->state == WLR_KEY_PRESSED) {
+src/mark_select_mode.c:40:23: error: use of undeclared identifier 'WLR_KEY_PRESSED'
+ if (event->state == WLR_KEY_PRESSED) {
+src/move_mode.c:35:23: error: use of undeclared identifier 'WLR_KEY_RELEASED'; did you mean 'WLR_BUTTON_RELEASED'?
+ if (event->state == WLR_KEY_RELEASED) {
+src/normal_mode.c:322:23: error: use of undeclared identifier 'WLR_KEY_PRESSED'
+ if (event->state == WLR_KEY_PRESSED) {
+src/resize_mode.c:35:23: error: use of undeclared identifier 'WLR_KEY_RELEASED'; did you mean 'WLR_BUTTON_RELEASED'?
+ if (event->state == WLR_KEY_RELEASED) {
+src/sheet_assign_mode.c:169:23: error: use of undeclared identifier 'WLR_KEY_PRESSED'
+ if (event->state == WLR_KEY_PRESSED) {
+ ^
+
+src/server.c:756:61: error: too many arguments to function call, expected single argument 'display', have 2 arguments
+ server->backend = wlr_backend_autocreate(server->display, NULL);
+ ~~~~~~~~~~~~~~~~~~~~~~ ^~~~
+/usr/include/sys/_null.h:34:14: note: expanded from macro 'NULL'
+#define NULL ((void *)0)
+ ^~~~~~~~~~~
+/usr/local/include/wlr/backend.h:35:21: note: 'wlr_backend_autocreate' declared here
+struct wlr_backend *wlr_backend_autocreate(struct wl_display *display);
+ ^
+
+00:00:00.167 [render/gles2/texture.c:162] Unsupported pixel format 0x0
+
+--- include/hikari/keyboard.h.orig 2020-07-21 06:19:04 UTC
++++ include/hikari/keyboard.h
+@@ -6,6 +6,7 @@
+ #include <xkbcommon/xkbcommon.h>
+
+ #include <wlr/types/wlr_input_device.h>
++#include <wlr/types/wlr_keyboard.h>
+
+ #include <hikari/binding_group.h>
+ #include <hikari/keyboard_config.h>
+--- include/hikari/switch.h.orig 2020-07-21 06:19:04 UTC
++++ include/hikari/switch.h
+@@ -2,6 +2,7 @@
+ #define HIKARI_SWITCH_H
+
+ #include <wlr/types/wlr_input_device.h>
++#include <wlr/types/wlr_switch.h>
+
+ struct hikari_action;
+ struct hikari_switch_config;
+--- protocol/wlr-layer-shell-unstable-v1.xml.orig 2020-05-01 08:37:51 UTC
++++ protocol/wlr-layer-shell-unstable-v1.xml
+@@ -25,7 +25,7 @@
+ THIS SOFTWARE.
+ </copyright>
+
+- <interface name="zwlr_layer_shell_v1" version="2">
++ <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
+@@ -47,6 +47,12 @@
+ 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.
+@@ -82,9 +88,19 @@
+ <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="2">
++ <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
+@@ -93,6 +109,14 @@
+ 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">
+@@ -179,21 +203,85 @@
+ <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 to 1 to request that the seat send keyboard events to this layer
+- surface. For layers below the shell surface layer, the seat will use
+- normal focus semantics. For layers above the shell surface layers, the
+- seat will always give exclusive keyboard focus to the top-most layer
+- which has keyboard interactivity set to true.
++ 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.
+
+- Events is double-buffered, see wl_surface.commit.
++ Keyboard interactivity is double-buffered, see wl_surface.commit.
+ </description>
+- <arg name="keyboard_interactivity" type="uint"/>
++ <arg name="keyboard_interactivity" type="uint" enum="keyboard_interactivity"/>
+ </request>
+
+ <request name="get_popup">
+@@ -278,6 +366,7 @@
+ <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">
+@@ -295,7 +384,7 @@
+
+ Layer is double-buffered, see wl_surface.commit.
+ </description>
+- <arg name="layer" type="uint" enum="layer" summary="layer to move this surface to"/>
++ <arg name="layer" type="uint" enum="zwlr_layer_shell_v1.layer" summary="layer to move this surface to"/>
+ </request>
+ </interface>
+ </protocol>
+--- src/dnd_mode.c.orig 2020-09-08 08:20:26 UTC
++++ src/dnd_mode.c
+@@ -22,7 +22,7 @@ static void
+ key_handler(
+ struct hikari_keyboard *keyboard, struct wlr_event_keyboard_key *event)
+ {
+- if (event->state == WLR_KEY_RELEASED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_RELEASED) {
+ hikari_server_enter_normal_mode(NULL);
+ }
+ }
+--- src/group_assign_mode.c.orig 2020-09-08 08:20:26 UTC
++++ src/group_assign_mode.c
+@@ -253,7 +253,7 @@ static void
+ key_handler(
+ struct hikari_keyboard *keyboard, struct wlr_event_keyboard_key *event)
+ {
+- if (event->state == WLR_KEY_PRESSED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+ uint32_t keycode = event->keycode + 8;
+ hikari_keyboard_for_keysym(keyboard, keycode, handle_keysym);
+ }
+--- src/indicator_bar.c.orig 2020-09-08 08:20:26 UTC
++++ src/indicator_bar.c
+@@ -4,6 +4,7 @@
+ #include <pango/pangocairo.h>
+ #include <string.h>
+
++#include <drm_fourcc.h>
+ #include <wlr/backend.h>
+ #include <wlr/render/wlr_renderer.h>
+ #include <wlr/render/wlr_texture.h>
+@@ -120,7 +121,7 @@ hikari_indicator_bar_update(struct hikari_indicator_ba
+ int stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, width);
+
+ indicator_bar->texture = wlr_texture_from_pixels(
+- wlr_renderer, WL_SHM_FORMAT_ARGB8888, stride, width, height, data);
++ wlr_renderer, DRM_FORMAT_ARGB8888, stride, width, height, data);
+
+ cairo_surface_destroy(surface);
+ g_object_unref(layout);
+--- src/input_grab_mode.c.orig 2020-10-22 15:14:16 UTC
++++ src/input_grab_mode.c
+@@ -50,7 +50,7 @@ key_handler(
+ struct hikari_keyboard *keyboard, struct wlr_event_keyboard_key *event)
+ {
+ struct hikari_workspace *workspace = hikari_server.workspace;
+- if (event->state == WLR_KEY_PRESSED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+ uint32_t modifiers = hikari_server.keyboard_state.modifiers;
+ struct hikari_binding_group *bindings = &keyboard->bindings[modifiers];
+
+--- src/layout_select_mode.c.orig 2020-09-08 08:20:26 UTC
++++ src/layout_select_mode.c
+@@ -59,7 +59,7 @@ static void
+ key_handler(
+ struct hikari_keyboard *keyboard, struct wlr_event_keyboard_key *event)
+ {
+- if (event->state == WLR_KEY_PRESSED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+ apply_layout(hikari_configuration, event, keyboard);
+ }
+ }
+--- src/lock_indicator.c.orig 2020-07-21 06:19:04 UTC
++++ src/lock_indicator.c
+@@ -1,5 +1,6 @@
+ #include <hikari/lock_indicator.h>
+
++#include <drm_fourcc.h>
+ #include <wlr/backend.h>
+ #include <wlr/render/wlr_renderer.h>
+ #include <wlr/types/wlr_matrix.h>
+@@ -45,7 +46,7 @@ init_indicator_circle(float color[static 4])
+ int stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, size);
+
+ texture = wlr_texture_from_pixels(
+- wlr_renderer, WL_SHM_FORMAT_ARGB8888, stride, size, size, data);
++ wlr_renderer, DRM_FORMAT_ARGB8888, stride, size, size, data);
+
+ cairo_surface_destroy(surface);
+ g_object_unref(layout);
+--- src/lock_mode.c.orig 2020-09-08 08:20:26 UTC
++++ src/lock_mode.c
+@@ -177,7 +177,7 @@ key_handler(
+ {
+ struct hikari_lock_mode *mode = get_mode();
+
+- if (event->state == WLR_KEY_PRESSED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+ const xkb_keysym_t *syms;
+ uint32_t keycode = event->keycode + 8;
+ uint32_t codepoint;
+--- src/mark_assign_mode.c.orig 2020-09-08 08:20:26 UTC
++++ src/mark_assign_mode.c
+@@ -161,7 +161,7 @@ static void
+ key_handler(
+ struct hikari_keyboard *keyboard, struct wlr_event_keyboard_key *event)
+ {
+- if (event->state == WLR_KEY_PRESSED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+ assign_mark(event, keyboard);
+ }
+ }
+--- src/mark_select_mode.c.orig 2020-09-08 08:20:26 UTC
++++ src/mark_select_mode.c
+@@ -37,7 +37,7 @@ key_handler(
+ {
+ struct hikari_workspace *workspace = hikari_server.workspace;
+
+- if (event->state == WLR_KEY_PRESSED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+ mark_select(workspace, event, keyboard);
+ }
+ }
+--- src/move_mode.c.orig 2020-09-08 08:20:26 UTC
++++ src/move_mode.c
+@@ -32,7 +32,7 @@ static void
+ key_handler(
+ struct hikari_keyboard *keyboard, struct wlr_event_keyboard_key *event)
+ {
+- if (event->state == WLR_KEY_RELEASED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_RELEASED) {
+ hikari_server_enter_normal_mode(NULL);
+ }
+ }
+--- src/normal_mode.c.orig 2020-09-08 08:20:26 UTC
++++ src/normal_mode.c
+@@ -319,7 +319,7 @@ key_handler(
+ return;
+ }
+
+- if (event->state == WLR_KEY_PRESSED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+ uint32_t modifiers = hikari_server.keyboard_state.modifiers;
+ struct hikari_binding_group *bindings = &keyboard->bindings[modifiers];
+
+--- src/output.c.orig 2020-09-08 08:20:26 UTC
++++ src/output.c
+@@ -1,5 +1,6 @@
+ #include <hikari/output.h>
+
++#include <drm_fourcc.h>
+ #include <wlr/backend.h>
+
+ #include <hikari/memory.h>
+@@ -86,7 +87,7 @@ hikari_output_load_background(struct hikari_output *ou
+ wlr_backend_get_renderer(output->wlr_output->backend);
+
+ output->background = wlr_texture_from_pixels(renderer,
+- WL_SHM_FORMAT_ARGB8888,
++ DRM_FORMAT_ARGB8888,
+ stride,
+ output_width,
+ output_height,
+--- src/resize_mode.c.orig 2020-09-08 08:20:26 UTC
++++ src/resize_mode.c
+@@ -32,7 +32,7 @@ static void
+ key_handler(
+ struct hikari_keyboard *keyboard, struct wlr_event_keyboard_key *event)
+ {
+- if (event->state == WLR_KEY_RELEASED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_RELEASED) {
+ hikari_server_enter_normal_mode(NULL);
+ }
+ }
+--- src/server.c.orig 2020-09-08 08:20:26 UTC
++++ src/server.c
+@@ -753,7 +753,7 @@ hikari_server_prepare_privileged(void)
+ goto done;
+ }
+
+- server->backend = wlr_backend_autocreate(server->display, NULL);
++ server->backend = wlr_backend_autocreate(server->display);
+ if (server->backend == NULL) {
+ fprintf(stderr, "error: could not create backend\n");
+ goto done;
+--- src/sheet_assign_mode.c.orig 2020-09-08 08:20:26 UTC
++++ src/sheet_assign_mode.c
+@@ -166,7 +166,7 @@ static void
+ key_handler(
+ struct hikari_keyboard *keyboard, struct wlr_event_keyboard_key *event)
+ {
+- if (event->state == WLR_KEY_PRESSED) {
++ if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
+ uint32_t keycode = event->keycode + 8;
+ hikari_keyboard_for_keysym(keyboard, keycode, handle_keysym);
+ }
diff --git a/x11-wm/labwc/Makefile b/x11-wm/labwc/Makefile
index e28ef85041e8..0f41419b618d 100644
--- a/x11-wm/labwc/Makefile
+++ b/x11-wm/labwc/Makefile
@@ -1,7 +1,14 @@
PORTNAME= labwc
DISTVERSION= 0.1.0
+PORTREVISION= 1
CATEGORIES= x11-wm
+PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
+PATCHFILES+= 2ee21e9a82d8.patch:-p1 # https://github.com/johanmalm/labwc/pull/26
+PATCHFILES+= ad07acc13cee.patch:-p1 # https://github.com/johanmalm/labwc/pull/26
+PATCHFILES+= c9023dd2c6af.patch:-p1 # https://github.com/johanmalm/labwc/pull/26
+PATCHFILES+= 0ca3eb8f790c.patch:-p1 # https://github.com/johanmalm/labwc/pull/26
+
MAINTAINER= jbeich@FreeBSD.org
COMMENT= Openbox alternative for Wayland
diff --git a/x11-wm/labwc/distinfo b/x11-wm/labwc/distinfo
index 1a39fad6b455..a06d629ec38f 100644
--- a/x11-wm/labwc/distinfo
+++ b/x11-wm/labwc/distinfo
@@ -1,3 +1,11 @@
TIMESTAMP = 1615031145
SHA256 (johanmalm-labwc-0.1.0_GH0.tar.gz) = c3087c0dc846c18499a335fe04c9bc46f014f7421739573636f6f8f746fd3c84
SIZE (johanmalm-labwc-0.1.0_GH0.tar.gz) = 59533
+SHA256 (2ee21e9a82d8.patch) = 2f6a312853a14ceb5853cfd6b59c49b6110f7ee12363b5b0f19eb176471aaa27
+SIZE (2ee21e9a82d8.patch) = 1422
+SHA256 (ad07acc13cee.patch) = e104ba1327136dc22b02ab7475f65f3ff2845fe644fecfd884cfbd6337df6248
+SIZE (ad07acc13cee.patch) = 5132
+SHA256 (c9023dd2c6af.patch) = ac6e04d88c1d7ded9d9a989721ac26f6954ed3d3e1680d90a93d1f04f07adc1d
+SIZE (c9023dd2c6af.patch) = 2465
+SHA256 (0ca3eb8f790c.patch) = 89ce5081ff675e17c308de0bb73ce5439452958d0a803e5c7a7015be177b3e4b
+SIZE (0ca3eb8f790c.patch) = 1715
diff --git a/x11-wm/phoc/Makefile b/x11-wm/phoc/Makefile
index 00f0d178174e..311d6b779146 100644
--- a/x11-wm/phoc/Makefile
+++ b/x11-wm/phoc/Makefile
@@ -1,8 +1,12 @@
PORTNAME= phoc
DISTVERSIONPREFIX= v
DISTVERSION= 0.7.0
+PORTREVISION= 1
CATEGORIES= x11-wm
+PATCH_SITES= ${GL_SITE}/${GL_ACCOUNT}/${GL_PROJECT}/-/commit/
+PATCHFILES+= b37bf15194e6.diff:-p1 # https://source.puri.sm/Librem5/phoc/-/merge_requests/241
+
MAINTAINER= jbeich@FreeBSD.org
COMMENT= Phone compositor
@@ -32,5 +36,10 @@ GLIB_SCHEMAS= sm.puri.phoc.gschema.xml
post-extract:
# Avoid confusing Meson instead of forcing -Dembed-wlroots=disabled
@${RMDIR} ${WRKSRC}/subprojects/wlroots
+.if defined(PATCHFILES) && ${PATCHFILES:Mb37bf15194e6*}
+# Pretend to be a regular file for vendor patch to apply as is
+ @${ECHO_CMD} "Subproject commit 3d227f140e3c4af42d759477fc38e82a4c3dc4ef" \
+ >${WRKSRC}/subprojects/wlroots
+.endif
.include <bsd.port.mk>
diff --git a/x11-wm/phoc/distinfo b/x11-wm/phoc/distinfo
index fe3826d9ede0..7403915ca708 100644
--- a/x11-wm/phoc/distinfo
+++ b/x11-wm/phoc/distinfo
@@ -1,3 +1,5 @@
TIMESTAMP = 1616120558
SHA256 (Librem5-phoc-f26fa0123742ba95d303ad552fc1f8d2d0117288_GL0.tar.gz) = 266c58250ca0f1ef6daf1bdcf5fb30af8fea674a9ee3237b8c9fc0700ebfe320
SIZE (Librem5-phoc-f26fa0123742ba95d303ad552fc1f8d2d0117288_GL0.tar.gz) = 143148
+SHA256 (b37bf15194e6.diff) = 0a0e8652dab5b4fabc751ed1274b7b94575d2f226917392a960f1c4c477b9f93
+SIZE (b37bf15194e6.diff) = 19468
diff --git a/x11-wm/river/Makefile b/x11-wm/river/Makefile
index aa75fb544674..c30da18fbb5e 100644
--- a/x11-wm/river/Makefile
+++ b/x11-wm/river/Makefile
@@ -1,5 +1,6 @@
PORTNAME= river
PORTVERSION= s20210328
+PORTREVISION= 1
CATEGORIES= x11-wm
MAINTAINER= jbeich@FreeBSD.org
diff --git a/x11-wm/river/files/patch-wlroots-0.13 b/x11-wm/river/files/patch-wlroots-0.13
new file mode 100644
index 000000000000..4c8afdd02055
--- /dev/null
+++ b/x11-wm/river/files/patch-wlroots-0.13
@@ -0,0 +1,373 @@
+https://github.com/swaywm/zig-wlroots/commit/4902876cd4f9
+https://github.com/ifreund/river/commit/73594ee57c95
+
+--- deps/zig-wlroots/src/backend.zig.orig 2021-02-15 17:19:02 UTC
++++ deps/zig-wlroots/src/backend.zig
+@@ -15,9 +15,9 @@ pub const Backend = extern struct {
+
+ // backend.h
+
+- extern fn wlr_backend_autocreate(server: *wl.Server, create_renderer_func: ?wlr.Renderer.CreateFn) ?*Backend;
+- pub fn autocreate(server: *wl.Server, create_renderer_func: ?wlr.Renderer.CreateFn) !*Backend {
+- return wlr_backend_autocreate(server, create_renderer_func) orelse error.BackendCreateFailed;
++ extern fn wlr_backend_autocreate(server: *wl.Server) ?*Backend;
++ pub fn autocreate(server: *wl.Server) !*Backend {
++ return wlr_backend_autocreate(server) orelse error.BackendCreateFailed;
+ }
+
+ extern fn wlr_backend_start(backend: *Backend) bool;
+--- deps/zig-wlroots/src/backend/session.zig.orig 2021-02-15 17:19:02 UTC
++++ deps/zig-wlroots/src/backend/session.zig
+@@ -6,17 +6,24 @@ const wl = wayland.server.wl;
+ pub const Device = extern struct {
+ fd: c_int,
+ dev: u64,
+- signal: wl.Signal(*Session),
+-
+ /// Session.devices
+ link: wl.list.Link,
++
++ events: extern struct {
++ change: wl.Signal(void),
++ },
+ };
+
+ pub const Session = extern struct {
+ const Impl = opaque {};
+
++ pub const event = struct {
++ pub const Add = extern struct {
++ path: [*:0]const u8,
++ };
++ };
++
+ impl: *const Impl,
+- session_signal: wl.Signal(*Session),
+ active: bool,
+
+ vtnr: c_uint,
+@@ -29,9 +36,12 @@ pub const Session = extern struct {
+
+ devices: wl.list.Head(Device, "link"),
+
++ server: *wl.Server,
+ server_destroy: wl.Listener(*wl.Server),
+
+ events: extern struct {
++ active: wl.Signal(void),
++ add_drm_card: wl.Signal(*event.Add),
+ destroy: wl.Signal(*Session),
+ },
+
+@@ -43,20 +53,19 @@ pub const Session = extern struct {
+ extern fn wlr_session_destroy(session: *Session) void;
+ pub const destroy = wlr_session_destroy;
+
+- extern fn wlr_session_open_file(session: *Session, path: [*:0]const u8) c_int;
+- pub const openFile = wlr_session_open_file;
++ extern fn wlr_session_open_file(session: *Session, path: [*:0]const u8) ?*Device;
++ pub fn openFile(session: *Session, path: [*:0]const u8) !*Device {
++ return wlr_session_open_file(session, path) orelse error.SessionOpenFileFailed;
++ }
+
+- extern fn wlr_session_close_file(session: *Session, fd: c_int) void;
++ extern fn wlr_session_close_file(session: *Session, device: *Device) void;
+ pub const closeFile = wlr_session_close_file;
+
+- extern fn wlr_session_signal_add(session: *Session, fd: c_int, listener: *wl.Listener(*Session)) void;
+- pub const signalAdd = wlr_session_signal_add;
+-
+ extern fn wlr_session_change_vt(session: *Session, vt: c_uint) bool;
+ pub fn changeVt(session: *Session, vt: c_uint) !void {
+ if (!wlr_session_change_vt(session, vt)) return error.ChangeVtFailed;
+ }
+
+- extern fn wlr_session_find_gpus(session: *Session, ret_len: usize, ret: [*]c_int) usize;
++ extern fn wlr_session_find_gpus(session: *Session, ret_len: usize, ret: [*]*Device) usize;
+ pub const findGpus = wlr_session_find_gpus;
+ };
+--- deps/zig-wlroots/src/render/renderer.zig.orig 2021-02-15 17:19:02 UTC
++++ deps/zig-wlroots/src/render/renderer.zig
+@@ -6,14 +6,6 @@ const wl = wayland.server.wl;
+ pub const Renderer = extern struct {
+ const Impl = opaque {};
+
+- pub const CreateFn = fn (
+- egl: *wlr.Egl,
+- platform: c_uint, // EGLenum
+- remote_display: ?*c_void,
+- config_attribs: *i32, // EGLint
+- visual_id: i32, // EGLint
+- ) callconv(.C) ?*Renderer;
+-
+ impl: *const Impl,
+ rendering: bool,
+ events: extern struct {
+@@ -22,8 +14,7 @@ pub const Renderer = extern struct {
+
+ // wlr_renderer functions:
+
+- // TODO: int types
+- extern fn wlr_renderer_begin(renderer: *Renderer, width: c_int, height: c_int) void;
++ extern fn wlr_renderer_begin(renderer: *Renderer, width: u32, height: u32) void;
+ pub const begin = wlr_renderer_begin;
+
+ pub extern fn wlr_renderer_end(renderer: *Renderer) void;
+@@ -47,8 +38,8 @@ pub const Renderer = extern struct {
+ extern fn wlr_renderer_scissor(renderer: *Renderer, box: *wlr.Box) void;
+ pub const scissor = wlr_renderer_scissor;
+
+- extern fn wlr_renderer_get_formats(renderer: *Renderer, len: *usize) [*]const wl.Shm.Format;
+- pub const getFormats = wlr_renderer_get_formats;
++ extern fn wlr_renderer_get_shm_texture_formats(renderer: *Renderer, len: *usize) [*]const wl.Shm.Format;
++ pub const getShmTextureFormats = wlr_renderer_get_shm_texture_formats;
+
+ extern fn wlr_renderer_resource_is_wl_drm_buffer(renderer: *Renderer, buffer: *wl.Buffer) bool;
+ pub const resourceIsWlDrmBuffer = wlr_renderer_resource_is_wl_drm_buffer;
+@@ -62,7 +53,7 @@ pub const Renderer = extern struct {
+ pub const wlDrmBufferGetSize = wlr_renderer_wl_drm_buffer_get_size;
+
+ // TODO:
+- //extern fn wlr_renderer_get_dmabuf_formats(renderer: *Renderer) [*c]const struct_wlr_drm_format_set;
++ //extern fn wlr_renderer_get_dmabuf_texture_formats(renderer: *Renderer) [*c]const struct_wlr_drm_format_set;
+ //pub const getDmabufFormats = wlr_renderer_get_dmabuf_formats;
+
+ extern fn wlr_renderer_read_pixels(
+@@ -86,9 +77,6 @@ pub const Renderer = extern struct {
+ src: *wlr.DmabufAttributes,
+ ) bool;
+ pub const blitDmabuf = wlr_renderer_blit_dmabuf;
+-
+- extern fn wlr_renderer_format_supported(renderer: *Renderer, fmt: wl.Shm.Format) bool;
+- pub const formatSupported = wlr_renderer_format_supported;
+
+ extern fn wlr_renderer_get_drm_fd(renderer: *Renderer) c_int;
+ pub const getDrmFd = wlr_renderer_get_drm_fd;
+--- deps/zig-wlroots/src/render/texture.zig.orig 2021-03-01 13:53:50 UTC
++++ deps/zig-wlroots/src/render/texture.zig
+@@ -10,7 +10,7 @@ pub const Texture = extern struct {
+ width: u32,
+ height: u32,
+
+- extern fn wlr_texture_from_pixels(renderer: *wlr.Renderer, wl_fmt: wl.Shm.Format, stride: u32, width: u32, height: u32, data: *const c_void) ?*Texture;
++ extern fn wlr_texture_from_pixels(renderer: *wlr.Renderer, fmt: u32, stride: u32, width: u32, height: u32, data: *const c_void) ?*Texture;
+ pub const fromPixels = wlr_texture_from_pixels;
+
+ extern fn wlr_texture_from_wl_drm(renderer: *wlr.Renderer, data: *wl.Drm) ?*Texture;
+--- deps/zig-wlroots/src/types/buffer.zig.orig 2021-02-15 17:19:02 UTC
++++ deps/zig-wlroots/src/types/buffer.zig
+@@ -49,6 +49,9 @@ pub const ClientBuffer = extern struct {
+ resource_destroy: wl.Listener(*wl.Buffer),
+ release: wl.Listener(void),
+
++ extern fn wlr_client_buffer_get(buffer: *wlr.Buffer) ?*ClientBuffer;
++ pub const get = wlr_client_buffer_get;
++
+ extern fn wlr_client_buffer_import(renderer: *wlr.Renderer, resource: *wl.Buffer) ?*ClientBuffer;
+ pub const import = wlr_client_buffer_import;
+
+--- deps/zig-wlroots/src/types/layer_shell_v1.zig.orig 2021-02-15 17:19:02 UTC
++++ deps/zig-wlroots/src/types/layer_shell_v1.zig
+@@ -109,7 +109,7 @@ pub const LayerSurfaceV1 = extern struct {
+ );
+ }
+
+- extern fn wlr_layer_surface_v1_for_each_popup(
++ extern fn wlr_layer_surface_v1_for_each_popup_surface(
+ surface: *LayerSurfaceV1,
+ iterator: fn (*wlr.Surface, c_int, c_int, ?*c_void) callconv(.C) void,
+ user_data: ?*c_void,
+@@ -120,7 +120,7 @@ pub const LayerSurfaceV1 = extern struct {
+ iterator: fn (surface: *wlr.Surface, sx: c_int, sy: c_int, data: T) callconv(.C) void,
+ data: T,
+ ) void {
+- wlr_layer_surface_v1_for_each_popup(
++ wlr_layer_surface_v1_for_each_popup_surface(
+ surface,
+ @ptrCast(fn (*wlr.Surface, c_int, c_int, ?*c_void) callconv(.C) void, iterator),
+ data,
+--- deps/zig-wlroots/src/types/output.zig.orig 2021-02-15 17:19:02 UTC
++++ deps/zig-wlroots/src/types/output.zig
+@@ -105,6 +105,11 @@ pub const Output = extern struct {
+ /// This is a bitfield of Present.flag members
+ flags: u32,
+ };
++
++ pub const Bind = extern struct {
++ output: *wlr.Output,
++ resource: *wl.Output,
++ };
+ };
+
+ const Impl = opaque {};
+@@ -151,10 +156,9 @@ pub const Output = extern struct {
+ precommit: wl.Signal(*event.Precommit),
+ commit: wl.Signal(*event.Commit),
+ present: wl.Signal(*event.Present),
++ bind: wl.Signal(*event.Bind),
+ enable: wl.Signal(*Output),
+ mode: wl.Signal(*Output),
+- scale: wl.Signal(*Output),
+- transform: wl.Signal(*Output),
+ description: wl.Signal(*Output),
+ destroy: wl.Signal(*Output),
+ },
+--- deps/zig-wlroots/src/types/surface.zig.orig 2021-02-15 17:19:02 UTC
++++ deps/zig-wlroots/src/types/surface.zig
+@@ -49,6 +49,9 @@ pub const Surface = extern struct {
+ },
+
+ buffer_destroy: wl.Listener(*wl.Buffer),
++
++ cached_state_locks: usize,
++ cached_state_link: wl.list.Head(Surface, "cached"),
+ };
+
+ pub const Role = extern struct {
+@@ -57,6 +60,16 @@ pub const Surface = extern struct {
+ precommit: ?fn (surface: *Surface) callconv(.C) void,
+ };
+
++ pub const Output = extern struct {
++ surface: *wlr.Surface,
++ output: *wlr.Output,
++
++ // Surface.current_outputs
++ link: wl.list.Link,
++ bind: wl.Listener(*wlr.Output.event.Bind),
++ destroy: wl.Listener(*wlr.Output),
++ };
++
+ resource: *wl.Surface,
+ renderer: *wlr.Renderer,
+
+@@ -73,6 +86,8 @@ pub const Surface = extern struct {
+ pending: State,
+ previous: State,
+
++ cached: wl.list.Head(State, "cached_link"),
++
+ role: ?*const Role,
+ role_data: ?*c_void,
+
+@@ -84,6 +99,8 @@ pub const Surface = extern struct {
+
+ subsurfaces: wl.list.Head(Subsurface, "parent_link"),
+ subsurface_pending_list: wl.list.Head(Subsurface, "parent_pending_link"),
++
++ current_outputs: wl.list.Head(Surface.Output, "link"),
+
+ renderer_destroy: wl.Listener(*wlr.Renderer),
+
+--- deps/zig-wlroots/src/types/xdg_shell.zig.orig 2021-02-15 17:19:02 UTC
++++ deps/zig-wlroots/src/types/xdg_shell.zig
+@@ -311,7 +311,7 @@ pub const XdgSurface = extern struct {
+ extern fn wlr_xdg_surface_schedule_configure(surface: *wlr.XdgSurface) u32;
+ pub const scheduleConfigure = wlr_xdg_surface_schedule_configure;
+
+- extern fn wlr_xdg_surface_for_each_popup(
++ extern fn wlr_xdg_surface_for_each_popup_surface(
+ surface: *wlr.XdgSurface,
+ iterator: fn (surface: *wlr.Surface, sx: c_int, sy: c_int, data: ?*c_void) callconv(.C) void,
+ user_data: ?*c_void,
+@@ -322,7 +322,7 @@ pub const XdgSurface = extern struct {
+ iterator: fn (surface: *wlr.Surface, sx: c_int, sy: c_int, data: T) callconv(.C) void,
+ data: T,
+ ) void {
+- wlr_xdg_surface_for_each_popup(
++ wlr_xdg_surface_for_each_popup_surface(
+ surface,
+ @ptrCast(fn (surface: *wlr.Surface, sx: c_int, sy: c_int, data: ?*c_void) callconv(.C) void, iterator),
+ data,
+--- deps/zig-wlroots/src/xwayland.zig.orig 2021-02-15 17:19:02 UTC
++++ deps/zig-wlroots/src/xwayland.zig
+@@ -13,6 +13,14 @@ const xcb = struct {
+ const Pixmap = u32;
+ const Window = u32;
+ const Atom = u32;
++
++ const StackMode = extern enum {
++ above = 0,
++ below = 1,
++ top_if = 2,
++ bottom_if = 3,
++ opposite = 4,
++ };
+ };
+
+ pub const Xwm = opaque {};
+@@ -33,7 +41,7 @@ pub const XwaylandServer = extern struct {
+
+ pid: os.pid_t,
+ client: ?*wl.Client,
+- sigusr1_source: ?*wl.EventSource,
++ pipe_source: ?*wl.EventSource,
+ wm_fd: [2]c_int,
+ wl_fd: [2]c_int,
+
+@@ -258,6 +266,9 @@ pub const XwaylandSurface = extern struct {
+
+ extern fn wlr_xwayland_surface_activate(surface: *XwaylandSurface, activated: bool) void;
+ pub const activate = wlr_xwayland_surface_activate;
++
++ extern fn wlr_xwayland_surface_restack(surface: *XwaylandSurface, sibling: *XwaylandSurface, mode: xcb.StackMode) void;
++ pub const restack = wlr_xwayland_surface_restack;
+
+ extern fn wlr_xwayland_surface_configure(surface: *XwaylandSurface, x: i16, y: i16, width: u16, height: u16) void;
+ pub const configure = wlr_xwayland_surface_configure;
+--- river/Server.zig.orig 2021-02-22 13:47:31 UTC
++++ river/Server.zig
+@@ -78,7 +78,7 @@ pub fn init(self: *Self) !void {
+ errdefer self.sigterm_source.remove();
+
+ // This frees itself when the wl.Server is destroyed
+- self.backend = try wlr.Backend.autocreate(self.wl_server, null);
++ self.backend = try wlr.Backend.autocreate(self.wl_server);
+
+ // This backend is used to create a noop output for use when no actual
+ // outputs are available. This frees itself when the wl.Server is destroyed.
+@@ -140,7 +140,6 @@ pub fn deinit(self: *Self) void {
+
+ self.root.deinit();
+
+- self.noop_backend.destroy();
+ self.wl_server.destroy();
+
+ self.input_manager.deinit();
+--- river/render.zig.orig 2021-02-22 13:47:31 UTC
++++ river/render.zig
+@@ -54,7 +54,7 @@ pub fn renderOutput(output: *Output) void {
+
+ output.wlr_output.attachRender(null) catch return;
+
+- renderer.begin(output.wlr_output.width, output.wlr_output.height);
++ renderer.begin(@intCast(u32, output.wlr_output.width), @intCast(u32, output.wlr_output.height));
+
+ // Find the first visible fullscreen view in the stack if there is one
+ var it = ViewStack(View).iter(output.views.first, .forward, output.current.tags, renderFilter);
+@@ -227,24 +227,7 @@ fn renderViewPopups(output: *const Output, view: *View
+ .when = now,
+ .opacity = view.opacity,
+ };
+- view.forEachPopup(*SurfaceRenderData, renderPopupSurfaceIterator, &rdata);
+-}
+-
+-// TODO(wlroots): replace with wlr_xdg_surface_for_each_popup_surface()
+-fn renderPopupSurfaceIterator(
+- surface: *wlr.Surface,
+- surface_x: c_int,
+- surface_y: c_int,
+- rdata: *SurfaceRenderData,
+-) callconv(.C) void {
+- var new_rdata = SurfaceRenderData{
+- .output = rdata.output,
+- .output_x = rdata.output_x + surface_x,
+- .output_y = rdata.output_y + surface_y,
+- .when = rdata.when,
+- .opacity = rdata.opacity,
+- };
+- surface.forEachSurface(*SurfaceRenderData, renderSurfaceIterator, &new_rdata);
++ view.forEachPopup(*SurfaceRenderData, renderSurfaceIterator, &rdata);
+ }
+
+ fn renderDragIcons(output: *const Output, now: *os.timespec) void {
diff --git a/x11-wm/sway/Makefile b/x11-wm/sway/Makefile
index b3928eac78f0..8513297ef200 100644
--- a/x11-wm/sway/Makefile
+++ b/x11-wm/sway/Makefile
@@ -1,6 +1,6 @@
PORTNAME= sway
DISTVERSION= 1.5.1
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= x11-wm
PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
@@ -10,6 +10,15 @@ PATCHFILES+= 968c005760b6.patch:-p1 # https://github.com/swaywm/sway/pull/5856
PATCHFILES+= fdbe98512a71.patch:-p1 # https://github.com/swaywm/sway/pull/5856
PATCHFILES+= a52176f83035.patch:-p1 # https://github.com/swaywm/sway/pull/5856
PATCHFILES+= c9fe0626ca73.patch:-p1 # https://github.com/swaywm/sway/pull/5891
+PATCHFILES+= 2c76923282b1.patch:-p1 # wlroots 0.13
+PATCHFILES+= 0d72d6134f5b.patch:-p1 # wlroots 0.13
+PATCHFILES+= a56098a24e43.patch:-p1 # wlroots 0.13
+PATCHFILES+= 53f5197c26f1.patch:-p1 # wlroots 0.13
+PATCHFILES+= 5438cc158a1b.patch:-p1 # wlroots 0.13
+PATCHFILES+= 97adba05162f.patch:-p1 # wlroots 0.13
+PATCHFILES+= 9e4f165b77d6.patch:-p1 # wlroots 0.13
+PATCHFILES+= 87100e44c57b.patch:-p1 # wlroots 0.13
+PATCHFILES+= 6370f225681c.patch:-p1 # wlroots 0.13
MAINTAINER= jbeich@FreeBSD.org
COMMENT= i3-compatible Wayland compositor
@@ -19,7 +28,7 @@ LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto \
wayland-protocols>=1.14:graphics/wayland-protocols \
- wlroots>=0.12.0<0.13.0:x11-toolkits/wlroots
+ wlroots>=0.13.0<0.14.0:x11-toolkits/wlroots
LIB_DEPENDS= libjson-c.so:devel/json-c \
libevdev.so:devel/libevdev \
libpcre.so:devel/pcre \
diff --git a/x11-wm/sway/distinfo b/x11-wm/sway/distinfo
index 8d16ea61f70f..cb42555aeab4 100644
--- a/x11-wm/sway/distinfo
+++ b/x11-wm/sway/distinfo
@@ -13,3 +13,21 @@ SHA256 (a52176f83035.patch) = 503f0ce5699799b82332a414d76b2148d53d1066a1e77ff24b
SIZE (a52176f83035.patch) = 2588
SHA256 (c9fe0626ca73.patch) = 4f6005a1f7c9b454ab6e7c85a01b44c27cc5f2641e58bb220220fdceb7b111cb
SIZE (c9fe0626ca73.patch) = 913
+SHA256 (2c76923282b1.patch) = 7d3170aaff39b984c4341d40ac4ea313c4a12dca901b435f470d7f7ce5ada3b3
+SIZE (2c76923282b1.patch) = 4102
+SHA256 (0d72d6134f5b.patch) = 13d4ac504e250943ba7fe34765f44bb2a3d999dc2f22af6e65d40ea3967a05d9
+SIZE (0d72d6134f5b.patch) = 4970
+SHA256 (a56098a24e43.patch) = f94751bf569aaa024b4eb60ed5d238332e7447ad64a85b30dc40f1ea2af278f4
+SIZE (a56098a24e43.patch) = 1316
+SHA256 (53f5197c26f1.patch) = 9dcc26d0819c39125294efce2ff72ba283362474349b2e1eab3d456617a87a87
+SIZE (53f5197c26f1.patch) = 950
+SHA256 (5438cc158a1b.patch) = 1e9df875e90c3a709537d4c739d778d17a443a9883437c9cb1581696fb567daa
+SIZE (5438cc158a1b.patch) = 6022
+SHA256 (97adba05162f.patch) = 9478ddcf6d71a71517cf07c9d97a79e3efe1bff1188db320a615cbfcd0d608e5
+SIZE (97adba05162f.patch) = 7964
+SHA256 (9e4f165b77d6.patch) = f4e3a1aa73893e6cef7667c7ca8bfe8e7f6bee5149c0c8de25a5f5a153a5ef2c
+SIZE (9e4f165b77d6.patch) = 1361
+SHA256 (87100e44c57b.patch) = f5fc506dbff874f6ce4f720f27123d08ee66251076f4879d486598395c17a4c3
+SIZE (87100e44c57b.patch) = 1590
+SHA256 (6370f225681c.patch) = 094fa94d30245bd658fbb9550f8ef0331dbf554aec0d67de11504274685d2d37
+SIZE (6370f225681c.patch) = 726
diff --git a/x11-wm/wayfire-plugins-extra/Makefile b/x11-wm/wayfire-plugins-extra/Makefile
index f49360e674b0..0986c349434c 100644
--- a/x11-wm/wayfire-plugins-extra/Makefile
+++ b/x11-wm/wayfire-plugins-extra/Makefile
@@ -1,6 +1,7 @@
PORTNAME= wayfire-plugins-extra
DISTVERSIONPREFIX= v
DISTVERSION= 0.7.0
+PORTREVISION= 1
CATEGORIES= x11-wm
MAINTAINER= jbeich@FreeBSD.org
diff --git a/x11-wm/wayfire/Makefile b/x11-wm/wayfire/Makefile
index 0da44dc2098b..90feab932689 100644
--- a/x11-wm/wayfire/Makefile
+++ b/x11-wm/wayfire/Makefile
@@ -1,9 +1,19 @@
PORTNAME= wayfire
DISTVERSIONPREFIX= v
DISTVERSION= 0.7.0
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= x11-wm
+PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
+PATCHFILES+= b2ba1a9de620.patch:-p1 # wlroots 0.13
+PATCHFILES+= b183bcf20a59.patch:-p1 # wlroots 0.13
+PATCHFILES+= aa3e078d830d.patch:-p1 # wlroots 0.13
+PATCHFILES+= 9b4139400ca0.patch:-p1 # wlroots 0.13
+PATCHFILES+= d30d03aa2321.patch:-p1 # wlroots 0.13
+PATCHFILES+= 2a1dacecff3d.patch:-p1 # wlroots 0.13
+PATCHFILES+= 54f116f1ca2e.patch:-p1 # wlroots 0.13
+PATCHFILES+= 30f13ab31cad.patch:-p1 # wlroots 0.13
+
MAINTAINER= jbeich@FreeBSD.org
COMMENT= 3D Wayland compositor
@@ -15,7 +25,7 @@ BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto \
${LOCALBASE}/include/xf86drmMode.h:graphics/libdrm \
wayland-protocols>=1.12:graphics/wayland-protocols \
glm>=0.9.8:math/glm \
- wlroots>=0.12.0<0.13.0:x11-toolkits/wlroots
+ wlroots>=0.13.0<0.14.0:x11-toolkits/wlroots
LIB_DEPENDS= libinotify.so:devel/libinotify \
libwf-config.so:devel/wf-config \
libpng.so:graphics/png \
diff --git a/x11-wm/wayfire/distinfo b/x11-wm/wayfire/distinfo
index 4d47ce42aef2..ea64c6fc6046 100644
--- a/x11-wm/wayfire/distinfo
+++ b/x11-wm/wayfire/distinfo
@@ -5,3 +5,19 @@ SHA256 (WayfireWM-wf-touch-b1075c5_GH0.tar.gz) = 107fd73280e90c1330adc051b4dada1
SIZE (WayfireWM-wf-touch-b1075c5_GH0.tar.gz) = 53883
SHA256 (WayfireWM-wf-utils-f45641b_GH0.tar.gz) = 2f546333d4b1dfa3ed14caee3682dcc4c7e33164cb255991d918f3ace5f51dd7
SIZE (WayfireWM-wf-utils-f45641b_GH0.tar.gz) = 48453
+SHA256 (b2ba1a9de620.patch) = 00c0a4b5e972cbd044864c737ac414b3684579ecaf3447345a8a560695a47ce3
+SIZE (b2ba1a9de620.patch) = 2106
+SHA256 (b183bcf20a59.patch) = 1caa58cd8d19f43717765441c88239eb9b7faa510a9fbe92a15ecff271dad780
+SIZE (b183bcf20a59.patch) = 945
+SHA256 (aa3e078d830d.patch) = 7d9c1b1ff8090c2e829fdff9cccb7ac6308aed34d4d5f42ac2f04c44b40aab50
+SIZE (aa3e078d830d.patch) = 805
+SHA256 (9b4139400ca0.patch) = c7791d482db46cc1ff082ccbe92852b6046091eac61a7771fca46e41babd7b1e
+SIZE (9b4139400ca0.patch) = 2021
+SHA256 (d30d03aa2321.patch) = ad797a4d3366f896667c4825bebbd310c4648d1977d1effac2f68fdb8510ce8e
+SIZE (d30d03aa2321.patch) = 1032
+SHA256 (2a1dacecff3d.patch) = 8b1d5a63d9b7660728e0a7ebf61392d693ed2ef85e0a47d0e73211e8700ba372
+SIZE (2a1dacecff3d.patch) = 1180
+SHA256 (54f116f1ca2e.patch) = cf4848c223823e36f39841ff0a017daac7c73509ba259ba6856f503dce60376c
+SIZE (54f116f1ca2e.patch) = 1037
+SHA256 (30f13ab31cad.patch) = 673eed7ca831b6f6bbb444cd66f4c2169c9d50822846862744413c85e9cb42a7
+SIZE (30f13ab31cad.patch) = 1921