On Wed, Jun 03, 2026 at 07:28:40PM +0200, Volker Schlecht wrote:
> Hi,
>
> picking up the thread started by Robert Lillack, here is the diff I have been
> testing and which so far works fine here.
>
> Any thoughts?
Is it really needed ? When we discussed with Landry it seemed that
most of the code we have in port already had 0.20 supprt in their
main/master branches, and that they do frequent enough releases for us
to wait until all consumers can be updated to a version with 0.20.
But I'm not full opposed to see someone (as long as it's not me, as I
really lack time) maintain 2 versions in parallel. Upstream has
renamed things for that in 0.19 and my work (with much help from other
porters) to make a wlroot module also had that possibility in mind.
So it's your choice...
>
> cheers,
> Volker
> Index: Makefile
> ===================================================================
> RCS file: Makefile
> diff -N Makefile
> --- Makefile 20 Feb 2026 21:35:37 -0000 1.18
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,60 +0,0 @@
> -COMMENT = modular Wayland compositor library
> -
> -V = ${MODWLROOTS_VERSION}.2
> -REVISION = 1
> -EPOCH = 0
> -DISTNAME = wlroots-${V}
> -CATEGORIES = wayland
> -
> -SITES = ${HOMEPAGE}/wlroots/-/releases/${V}/downloads/
> -
> -HOMEPAGE = https://gitlab.freedesktop.org/wlroots
> -
> -# MIT
> -PERMIT_PACKAGE = Yes
> -
> -SHARED_LIBS += wlroots-0.19 0.0 # 0.0
> -
> -COMPILER = base-clang ports-gcc
> -COMPILER_LANGS= c
> -MODULES = devel/meson wayland/wlroots
> -
> -MODWLROOTS_LIBDEP = No
> -
> -WANTLIB += EGL GLESv2 drm gbm m pixman-1
> -WANTLIB += display-info lcms2 liftoff udev
> -WANTLIB += input seat
> -WANTLIB += vulkan wayland-client wayland-server
> -WANTLIB += xcb xcb-composite xcb-dri3 xcb-errors xcb-ewmh
> -WANTLIB += xcb-icccm xcb-present xcb-render xcb-render-util
> -WANTLIB += xcb-res xcb-shm xcb-xfixes xcb-xinput
> -WANTLIB += xkbcommon
> -
> -BUILD_DEPENDS = \
> - graphics/glslang \
> - graphics/vulkan-headers \
> - misc/hwdata \
> - wayland/wayland-protocols \
> - wayland/xwayland
> -
> -LIB_DEPENDS = \
> - graphics/lcms2 \
> - graphics/libliftoff \
> - graphics/vulkan-loader \
> - sysutils/libdisplay-info \
> - sysutils/libudev-openbsd \
> - sysutils/seatd \
> - wayland/libinput-openbsd \
> - wayland/wayland \
> - x11/xcb-util-errors \
> - x11/xkbcommon
> -
> -RUN_DEPENDS = wayland/xwayland
> -
> -CONFIGURE_ARGS = \
> - -Dexamples=false \
> - -Dallocators=gbm
> -
> -DEBUG_PACKAGES = ${BUILD_PACKAGES}
> -
> -.include <bsd.port.mk>
> Index: Makefile.inc
> ===================================================================
> RCS file: Makefile.inc
> diff -N Makefile.inc
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ Makefile.inc 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,55 @@
> +COMMENT ?= modular Wayland compositor library (${MODWLROOTS_VERSION})
> +
> +DISTNAME = wlroots-${V}
> +PKGSTEM ?= wlroots-${MODWLROOTS_VERSION}
> +CATEGORIES = wayland
> +EPOCH = 0
> +
> +SITES = ${HOMEPAGE}/wlroots/-/releases/${V}/downloads/
> +
> +HOMEPAGE = https://gitlab.freedesktop.org/wlroots
> +
> +# MIT
> +PERMIT_PACKAGE = Yes
> +
> +COMPILER = base-clang ports-gcc
> +COMPILER_LANGS= c
> +MODULES = devel/meson wayland/wlroots
> +
> +MODWLROOTS_LIBDEP = No
> +
> +WANTLIB += EGL GLESv2 drm gbm m pixman-1
> +WANTLIB += display-info lcms2 liftoff udev
> +WANTLIB += input seat
> +WANTLIB += vulkan wayland-client wayland-server
> +WANTLIB += xcb xcb-composite xcb-dri3 xcb-errors xcb-ewmh
> +WANTLIB += xcb-icccm xcb-present xcb-render xcb-render-util
> +WANTLIB += xcb-res xcb-shm xcb-xfixes xcb-xinput
> +WANTLIB += xkbcommon
> +
> +BUILD_DEPENDS = \
> + graphics/glslang \
> + graphics/vulkan-headers \
> + misc/hwdata \
> + wayland/wayland-protocols \
> + wayland/xwayland
> +
> +LIB_DEPENDS = \
> + graphics/lcms2 \
> + graphics/libliftoff \
> + graphics/vulkan-loader \
> + sysutils/libdisplay-info \
> + sysutils/libudev-openbsd \
> + sysutils/seatd \
> + wayland/libinput-openbsd \
> + wayland/wayland \
> + x11/xcb-util-errors \
> + x11/xkbcommon
> +
> +RUN_DEPENDS = wayland/xwayland
> +
> +CONFIGURE_ARGS = \
> + -Dexamples=false \
> + -Dallocators=gbm
> +
> +DEBUG_PACKAGES = ${BUILD_PACKAGES}
> Index: distinfo
> ===================================================================
> RCS file: distinfo
> diff -N distinfo
> --- distinfo 19 Nov 2025 08:58:58 -0000 1.10
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,2 +0,0 @@
> -SHA256 (wlroots-0.19.2.tar.gz) = CaCo1gEEyLB3L+5PYLp2qJrtflnf92WdAJYPuga98mc=
> -SIZE (wlroots-0.19.2.tar.gz) = 670983
> Index: wlroots.port.mk
> ===================================================================
> RCS file: /cvs/ports/wayland/wlroots/wlroots.port.mk,v
> retrieving revision 1.2
> diff -u -p -r1.2 wlroots.port.mk
> --- wlroots.port.mk 28 Aug 2025 21:01:27 -0000 1.2
> +++ wlroots.port.mk 3 Jun 2026 17:21:39 -0000
> @@ -1,13 +1,13 @@
> -MODWLROOTS_VERSION = 0.19
> +MODWLROOTS_VERSION ?= 0.19
>
> MODWLROOTS_WANTLIB = wlroots-${MODWLROOTS_VERSION}
> -MODWLROOTS_LIB_DEPENDS = wayland/wlroots
> +MODWLROOTS_LIB_DEPENDS = wayland/wlroots/${MODWLROOTS_VERSION}
>
> MODWLROOTS_LIBDEP?= Yes
>
> .if ${MODWLROOTS_LIBDEP:L} == "yes"
> LIB_DEPENDS += ${MODWLROOTS_LIB_DEPENDS}
> -WANTLIB += ${MODWLROOTS_WANTLIB}
> +WANTLIB += ${MODWLROOTS_WANTLIB}
> .endif
>
> SUBST_VARS += MODWLROOTS_VERSION
> Index: 0.19/Makefile
> ===================================================================
> RCS file: 0.19/Makefile
> diff -N 0.19/Makefile
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/Makefile 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,9 @@
> +MODWLROOTS_VERSION = 0.19
> +
> +V = ${MODWLROOTS_VERSION}.3
> +
> +SHARED_LIBS += wlroots-0.19 0.0 # 0.0
> +
> +PKGSPEC = wlroots->=0.19v0,<0.20v0
> +
> +.include <bsd.port.mk>
> Index: 0.19/distinfo
> ===================================================================
> RCS file: 0.19/distinfo
> diff -N 0.19/distinfo
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/distinfo 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,2 @@
> +SHA256 (wlroots-0.19.3.tar.gz) = XQJpMXXlr9mvXxDj5JdtbpJJ3DmpDrF9I/pfVLElzMU=
> +SIZE (wlroots-0.19.3.tar.gz) = 671529
> Index: 0.19/patches/patch-backend_drm_backend_c
> ===================================================================
> RCS file: 0.19/patches/patch-backend_drm_backend_c
> diff -N 0.19/patches/patch-backend_drm_backend_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/patches/patch-backend_drm_backend_c 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,55 @@
> +Index: backend/drm/backend.c
> +--- backend/drm/backend.c.orig
> ++++ backend/drm/backend.c
> +@@ -3,11 +3,13 @@
> + #include <stdio.h>
> + #include <stdlib.h>
> + #include <string.h>
> ++#include <unistd.h>
> + #include <wayland-server-core.h>
> + #include <wlr/backend/interface.h>
> + #include <wlr/backend/session.h>
> + #include <wlr/interfaces/wlr_output.h>
> + #include <wlr/util/log.h>
> ++#include <sys/event.h>
> + #include <xf86drm.h>
> + #include "backend/drm/drm.h"
> + #include "backend/drm/fb.h"
> +@@ -207,6 +209,8 @@ static bool init_mgpu_renderer(struct wlr_drm_backend
> +
> + struct wlr_backend *wlr_drm_backend_create(struct wlr_session *session,
> + struct wlr_device *dev, struct wlr_backend *parent) {
> ++ int kq;
> ++ struct kevent kev;
> + assert(session && dev);
> + assert(!parent || wlr_backend_is_drm(parent));
> +
> +@@ -283,6 +287,28 @@ struct wlr_backend *wlr_drm_backend_create(struct wlr_
> + drm->session_destroy.notify = handle_session_destroy;
> + wl_signal_add(&session->events.destroy, &drm->session_destroy);
> +
> ++ if ((kq = kqueue()) <= 0)
> ++ goto continue_without_kqueue;
> ++
> ++ EV_SET(&kev, dev->fd, EVFILT_DEVICE, EV_ADD | EV_ENABLE | EV_CLEAR,
> ++ NOTE_CHANGE, 0, NULL);
> ++
> ++ if (kevent(kq, &kev, 1, NULL, 0, NULL) < 0) {
> ++ close(kq);
> ++ goto continue_without_kqueue;
> ++ }
> ++
> ++ drm->drm_kevent = wl_event_loop_add_fd(session->event_loop, kq,
> ++ WL_EVENT_READABLE, handle_drm_kevent, drm);
> ++ if (!drm->drm_kevent) {
> ++ wlr_log(WLR_ERROR, "Failed to create DRM kevent source");
> ++ close(kq);
> ++ goto continue_without_kqueue;
> ++ }
> ++ drm->kq = kq;
> ++ wlr_log(WLR_INFO, "DRM kevent source added");
> ++
> ++continue_without_kqueue:
> + return &drm->backend;
> +
> + error_mgpu_renderer:
> Index: 0.19/patches/patch-backend_drm_drm_c
> ===================================================================
> RCS file: 0.19/patches/patch-backend_drm_drm_c
> diff -N 0.19/patches/patch-backend_drm_drm_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/patches/patch-backend_drm_drm_c 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,40 @@
> +Index: backend/drm/drm.c
> +--- backend/drm/drm.c.orig
> ++++ backend/drm/drm.c
> +@@ -8,6 +8,7 @@
> + #include <stdlib.h>
> + #include <string.h>
> + #include <strings.h>
> ++#include <sys/event.h>
> + #include <time.h>
> + #include <wayland-server-core.h>
> + #include <wayland-util.h>
> +@@ -375,6 +376,9 @@ void finish_drm_resources(struct wlr_drm_backend *drm)
> + return;
> + }
> +
> ++ if (drm->kq)
> ++ close(drm->kq);
> ++
> + if (drm->iface->finish != NULL) {
> + drm->iface->finish(drm);
> + }
> +@@ -2050,6 +2054,18 @@ int handle_drm_event(int fd, uint32_t mask, void *data
> + wlr_log(WLR_ERROR, "drmHandleEvent failed");
> + wlr_backend_destroy(&drm->backend);
> + }
> ++ return 1;
> ++}
> ++
> ++int handle_drm_kevent(int fd, uint32_t mask, void *data) {
> ++ struct kevent kev;
> ++ struct wlr_drm_backend *drm = data;
> ++
> ++ if ((kevent(fd, NULL, 0, &kev, 1, NULL)) && kev.fflags & NOTE_CHANGE) {
> ++ wlr_log(WLR_INFO, "DRM hotplug detected");
> ++ scan_drm_connectors(drm, NULL);
> ++ }
> ++
> + return 1;
> + }
> +
> Index: 0.19/patches/patch-include_backend_drm_drm_h
> ===================================================================
> RCS file: 0.19/patches/patch-include_backend_drm_drm_h
> diff -N 0.19/patches/patch-include_backend_drm_drm_h
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/patches/patch-include_backend_drm_drm_h 3 Jun 2026 17:21:39
> -0000
> @@ -0,0 +1,27 @@
> +Index: include/backend/drm/drm.h
> +--- include/backend/drm/drm.h.orig
> ++++ include/backend/drm/drm.h
> +@@ -92,6 +92,7 @@ struct wlr_drm_backend {
> + bool addfb2_modifiers;
> +
> + int fd;
> ++ int kq;
> + char *name;
> + struct wlr_device *dev;
> + struct liftoff_device *liftoff;
> +@@ -103,6 +104,7 @@ struct wlr_drm_backend {
> + struct wlr_drm_plane *planes;
> +
> + struct wl_event_source *drm_event;
> ++ struct wl_event_source *drm_kevent;
> +
> + struct wl_listener session_destroy;
> + struct wl_listener session_active;
> +@@ -226,6 +228,7 @@ void scan_drm_leases(struct wlr_drm_backend *drm);
> + bool commit_drm_device(struct wlr_drm_backend *drm,
> + const struct wlr_backend_output_state *states, size_t states_len, bool
> test_only);
> + int handle_drm_event(int fd, uint32_t mask, void *data);
> ++int handle_drm_kevent(int fd, uint32_t mask, void *data);
> + void destroy_drm_connector(struct wlr_drm_connector *conn);
> + bool drm_connector_is_cursor_visible(struct wlr_drm_connector *conn);
> + size_t drm_crtc_get_gamma_lut_size(struct wlr_drm_backend *drm,
> Index: 0.19/patches/patch-meson_build
> ===================================================================
> RCS file: 0.19/patches/patch-meson_build
> diff -N 0.19/patches/patch-meson_build
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/patches/patch-meson_build 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,21 @@
> +No librt on OpenBSD
> +
> +Index: meson.build
> +--- meson.build.orig
> ++++ meson.build
> +@@ -121,7 +121,6 @@ pixman = dependency('pixman-1',
> + default_options: ['werror=false'],
> + )
> + math = cc.find_library('m')
> +-rt = cc.find_library('rt')
> +
> + wlr_files = []
> + wlr_deps = [
> +@@ -130,7 +129,6 @@ wlr_deps = [
> + xkbcommon,
> + pixman,
> + math,
> +- rt,
> + ]
> +
> + subdir('protocol')
> Index: 0.19/patches/patch-render_drm_syncobj_c
> ===================================================================
> RCS file: 0.19/patches/patch-render_drm_syncobj_c
> diff -N 0.19/patches/patch-render_drm_syncobj_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/patches/patch-render_drm_syncobj_c 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,14 @@
> +ETIMEDOUT on OpenBSD, not ETIME
> +
> +Index: render/drm_syncobj.c
> +--- render/drm_syncobj.c.orig
> ++++ render/drm_syncobj.c
> +@@ -161,7 +161,7 @@ out:
> + bool wlr_drm_syncobj_timeline_check(struct wlr_drm_syncobj_timeline
> *timeline,
> + uint64_t point, uint32_t flags, bool *result) {
> + int etime;
> +-#if defined(__FreeBSD__)
> ++#if defined(__FreeBSD__) || defined(__OpenBSD__)
> + etime = ETIMEDOUT;
> + #else
> + etime = ETIME;
> Index: 0.19/patches/patch-render_vulkan_vulkan_c
> ===================================================================
> RCS file: 0.19/patches/patch-render_vulkan_vulkan_c
> diff -N 0.19/patches/patch-render_vulkan_vulkan_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/patches/patch-render_vulkan_vulkan_c 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,11 @@
> +otherwise makedev() function isnt found
> +
> +Index: render/vulkan/vulkan.c
> +--- render/vulkan/vulkan.c.orig
> ++++ render/vulkan/vulkan.c
> +@@ -1,4 +1,4 @@
> +-#if defined(__FreeBSD__)
> ++#if defined(__FreeBSD__) || defined(__OpenBSD__)
> + #undef _POSIX_C_SOURCE
> + #endif
> + #include <assert.h>
> Index: 0.19/patches/patch-xcursor_xcursor_c
> ===================================================================
> RCS file: 0.19/patches/patch-xcursor_xcursor_c
> diff -N 0.19/patches/patch-xcursor_xcursor_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/patches/patch-xcursor_xcursor_c 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,12 @@
> +Index: xcursor/xcursor.c
> +--- xcursor/xcursor.c.orig
> ++++ xcursor/xcursor.c
> +@@ -490,7 +490,7 @@ xcursor_xc_file_load_images(FILE *file, int size)
> + #endif
> +
> + #ifndef XCURSORPATH
> +-#define XCURSORPATH
> "~/.icons:/usr/share/icons:/usr/share/pixmaps:~/.cursors:/usr/share/cursors/xorg-x11:"ICONDIR
> ++#define XCURSORPATH
> "~/.icons:/usr/X11R6/include/pixmaps:/usr/local/share/icons:/usr/local/lib/X11/icons:/usr/share/icons:/usr/share/pixmaps:~/.cursors:/usr/share/cursors/xorg-x11:"ICONDIR
> + #endif
> +
> + #define XDG_DATA_HOME_FALLBACK "~/.local/share"
> Index: 0.19/pkg/DESCR
> ===================================================================
> RCS file: 0.19/pkg/DESCR
> diff -N 0.19/pkg/DESCR
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/pkg/DESCR 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,38 @@
> +Pluggable, composable, unopinionated modules for building a Wayland
> +compositor; or about 60,000 lines of code you were going to write
> +anyway.
> +
> + * wlroots provides backends that abstract the underlying display and
> + input hardware, including KMS/DRM, libinput, Wayland, X11, and
> + headless backends, plus any custom backends you choose to write,
> + which can all be created or destroyed at runtime and used in
> + concert with each other.
> +
> + * wlroots provides unopinionated, mostly standalone implementations
> + of many Wayland interfaces, both from wayland.xml and various
> + protocol extensions. We also promote the standardization of
> + portable extensions across many compositors.
> +
> + * wlroots provides several powerful, standalone, and optional tools
> + that implement components common to many compositors, such as the
> + arrangement of outputs in physical space.
> +
> + * wlroots provides an Xwayland abstraction that allows you to have
> + excellent Xwayland support without worrying about writing your own
> + X11 window manager on top of writing your compositor.
> +
> + * wlroots provides a renderer abstraction that simple compositors can
> + use to avoid writing GL code directly, but which steps out of the
> + way when your needs demand custom rendering code.
> +
> +wlroots implements a huge variety of Wayland compositor features and
> +implements them right, so you can focus on the features that make your
> +compositor unique. By using wlroots, you get high performance,
> +excellent hardware compatibility, broad support for many wayland
> +interfaces, and comfortable development tools - or any subset of these
> +features you like, because all of them work independently of one
> +another and freely compose with anything you want to implement
> +yourself.
> +
> +A variety of wrapper libraries are available for using it with your
> +favorite programming language.
> Index: 0.19/pkg/PLIST
> ===================================================================
> RCS file: 0.19/pkg/PLIST
> diff -N 0.19/pkg/PLIST
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.19/pkg/PLIST 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,134 @@
> +@option no-default-conflict
> +@option is-branch
> +@conflict wlroots->=0.19,<0.20
> +@conflict wlroots->=0.19v0,<0.20v0
> +@pkgpath wayland/wlroots
> +include/wlroots-${MODWLROOTS_VERSION}/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/drm.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/headless.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/interface.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/libinput.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/multi.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/session.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/wayland.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/x11.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/config.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_buffer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_ext_image_capture_source_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_keyboard.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_output.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_pointer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_switch.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_tablet_pad.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_tablet_tool.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_touch.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/allocator.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/color.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/dmabuf.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/drm_format_set.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/drm_syncobj.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/egl.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/gles2.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/interface.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/pass.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/pixman.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/swapchain.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/vulkan.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/wlr_renderer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/wlr_texture.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_alpha_modifier_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_buffer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_color_management_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_compositor.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_content_type_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_cursor.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_cursor_shape_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_damage_ring.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_data_control_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_data_device.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_drm.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_drm_lease_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_export_dmabuf_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_data_control_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_foreign_toplevel_list_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_image_capture_source_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_image_copy_capture_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_foreign_toplevel_management_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_fractional_scale_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_gamma_control_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_idle_inhibit_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_idle_notify_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_input_device.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_input_method_v2.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_keyboard.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_keyboard_group.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_keyboard_shortcuts_inhibit_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_layer_shell_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_linux_dmabuf_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_linux_drm_syncobj_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_layer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_layout.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_management_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_power_management_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_swapchain_manager.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_pointer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_pointer_constraints_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_pointer_gestures_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_presentation_time.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_primary_selection.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_primary_selection_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_relative_pointer_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_scene.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_screencopy_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_seat.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_security_context_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_server_decoration.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_session_lock_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_shm.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_single_pixel_buffer_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_subcompositor.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_switch.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tablet_pad.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tablet_tool.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tablet_v2.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tearing_control_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_text_input_v3.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_touch.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_transient_seat_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_viewporter.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_virtual_keyboard_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_virtual_pointer_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xcursor_manager.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_activation_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_decoration_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_dialog_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_foreign_registry.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_foreign_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_foreign_v2.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_output_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_shell.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_system_bell_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_toplevel_icon_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/addon.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/box.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/edges.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/log.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/region.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/transform.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/version.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xcursor.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/server.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/shell.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/xwayland.h
> +@lib
> lib/libwlroots-${MODWLROOTS_VERSION}.so.${LIBwlroots-${MODWLROOTS_VERSION}_VERSION}
> +lib/pkgconfig/wlroots-${MODWLROOTS_VERSION}.pc
> Index: 0.20/Makefile
> ===================================================================
> RCS file: 0.20/Makefile
> diff -N 0.20/Makefile
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/Makefile 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,9 @@
> +MODWLROOTS_VERSION = 0.20
> +
> +V = ${MODWLROOTS_VERSION}.1
> +
> +SHARED_LIBS += wlroots-0.20 0.0 # 0.0
> +
> +PKGSPEC = wlroots->=0.20v0,<0.21v0
> +
> +.include <bsd.port.mk>
> Index: 0.20/distinfo
> ===================================================================
> RCS file: 0.20/distinfo
> diff -N 0.20/distinfo
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/distinfo 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,2 @@
> +SHA256 (wlroots-0.20.1.tar.gz) = qFQRh7rsqiYgk4r6zeiCZst++lkoywnVedjvsHvEkBs=
> +SIZE (wlroots-0.20.1.tar.gz) = 700814
> Index: 0.20/patches/patch-backend_drm_backend_c
> ===================================================================
> RCS file: 0.20/patches/patch-backend_drm_backend_c
> diff -N 0.20/patches/patch-backend_drm_backend_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/patches/patch-backend_drm_backend_c 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,55 @@
> +Index: backend/drm/backend.c
> +--- backend/drm/backend.c.orig
> ++++ backend/drm/backend.c
> +@@ -3,11 +3,13 @@
> + #include <stdio.h>
> + #include <stdlib.h>
> + #include <string.h>
> ++#include <unistd.h>
> + #include <wayland-server-core.h>
> + #include <wlr/backend/interface.h>
> + #include <wlr/backend/session.h>
> + #include <wlr/interfaces/wlr_output.h>
> + #include <wlr/util/log.h>
> ++#include <sys/event.h>
> + #include <xf86drm.h>
> + #include "backend/drm/drm.h"
> + #include "backend/drm/fb.h"
> +@@ -207,6 +209,8 @@ static bool init_mgpu_renderer(struct wlr_drm_backend
> +
> + struct wlr_backend *wlr_drm_backend_create(struct wlr_session *session,
> + struct wlr_device *dev, struct wlr_backend *parent) {
> ++ int kq;
> ++ struct kevent kev;
> + assert(session && dev);
> + assert(!parent || wlr_backend_is_drm(parent));
> +
> +@@ -283,6 +287,28 @@ struct wlr_backend *wlr_drm_backend_create(struct wlr_
> + drm->session_destroy.notify = handle_session_destroy;
> + wl_signal_add(&session->events.destroy, &drm->session_destroy);
> +
> ++ if ((kq = kqueue()) <= 0)
> ++ goto continue_without_kqueue;
> ++
> ++ EV_SET(&kev, dev->fd, EVFILT_DEVICE, EV_ADD | EV_ENABLE | EV_CLEAR,
> ++ NOTE_CHANGE, 0, NULL);
> ++
> ++ if (kevent(kq, &kev, 1, NULL, 0, NULL) < 0) {
> ++ close(kq);
> ++ goto continue_without_kqueue;
> ++ }
> ++
> ++ drm->drm_kevent = wl_event_loop_add_fd(session->event_loop, kq,
> ++ WL_EVENT_READABLE, handle_drm_kevent, drm);
> ++ if (!drm->drm_kevent) {
> ++ wlr_log(WLR_ERROR, "Failed to create DRM kevent source");
> ++ close(kq);
> ++ goto continue_without_kqueue;
> ++ }
> ++ drm->kq = kq;
> ++ wlr_log(WLR_INFO, "DRM kevent source added");
> ++
> ++continue_without_kqueue:
> + return &drm->backend;
> +
> + error_mgpu_renderer:
> Index: 0.20/patches/patch-backend_drm_drm_c
> ===================================================================
> RCS file: 0.20/patches/patch-backend_drm_drm_c
> diff -N 0.20/patches/patch-backend_drm_drm_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/patches/patch-backend_drm_drm_c 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,40 @@
> +Index: backend/drm/drm.c
> +--- backend/drm/drm.c.orig
> ++++ backend/drm/drm.c
> +@@ -8,6 +8,7 @@
> + #include <stdlib.h>
> + #include <string.h>
> + #include <strings.h>
> ++#include <sys/event.h>
> + #include <time.h>
> + #include <wayland-server-core.h>
> + #include <wayland-util.h>
> +@@ -387,6 +388,9 @@ void finish_drm_resources(struct wlr_drm_backend *drm)
> + return;
> + }
> +
> ++ if (drm->kq)
> ++ close(drm->kq);
> ++
> + if (drm->iface->finish != NULL) {
> + drm->iface->finish(drm);
> + }
> +@@ -2098,6 +2102,18 @@ int handle_drm_event(int fd, uint32_t mask, void *data
> + wlr_log(WLR_ERROR, "drmHandleEvent failed");
> + wlr_backend_destroy(&drm->backend);
> + }
> ++ return 1;
> ++}
> ++
> ++int handle_drm_kevent(int fd, uint32_t mask, void *data) {
> ++ struct kevent kev;
> ++ struct wlr_drm_backend *drm = data;
> ++
> ++ if ((kevent(fd, NULL, 0, &kev, 1, NULL)) && kev.fflags & NOTE_CHANGE) {
> ++ wlr_log(WLR_INFO, "DRM hotplug detected");
> ++ scan_drm_connectors(drm, NULL);
> ++ }
> ++
> + return 1;
> + }
> +
> Index: 0.20/patches/patch-include_backend_drm_drm_h
> ===================================================================
> RCS file: 0.20/patches/patch-include_backend_drm_drm_h
> diff -N 0.20/patches/patch-include_backend_drm_drm_h
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/patches/patch-include_backend_drm_drm_h 3 Jun 2026 17:21:39
> -0000
> @@ -0,0 +1,27 @@
> +Index: include/backend/drm/drm.h
> +--- include/backend/drm/drm.h.orig
> ++++ include/backend/drm/drm.h
> +@@ -96,6 +96,7 @@ struct wlr_drm_backend {
> + bool addfb2_modifiers;
> +
> + int fd;
> ++ int kq;
> + char *name;
> + struct wlr_device *dev;
> + struct liftoff_device *liftoff;
> +@@ -107,6 +108,7 @@ struct wlr_drm_backend {
> + struct wlr_drm_plane *planes;
> +
> + struct wl_event_source *drm_event;
> ++ struct wl_event_source *drm_kevent;
> +
> + struct wl_listener session_destroy;
> + struct wl_listener session_active;
> +@@ -236,6 +238,7 @@ void scan_drm_leases(struct wlr_drm_backend *drm);
> + bool commit_drm_device(struct wlr_drm_backend *drm,
> + const struct wlr_backend_output_state *states, size_t states_len, bool
> test_only);
> + int handle_drm_event(int fd, uint32_t mask, void *data);
> ++int handle_drm_kevent(int fd, uint32_t mask, void *data);
> + void destroy_drm_connector(struct wlr_drm_connector *conn);
> + bool drm_connector_is_cursor_visible(struct wlr_drm_connector *conn);
> + size_t drm_crtc_get_gamma_lut_size(struct wlr_drm_backend *drm,
> Index: 0.20/patches/patch-meson_build
> ===================================================================
> RCS file: 0.20/patches/patch-meson_build
> diff -N 0.20/patches/patch-meson_build
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/patches/patch-meson_build 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,21 @@
> +No librt on OpenBSD
> +
> +Index: meson.build
> +--- meson.build.orig
> ++++ meson.build
> +@@ -121,7 +121,6 @@ pixman = dependency('pixman-1',
> + default_options: ['werror=false'],
> + )
> + math = cc.find_library('m')
> +-rt = cc.find_library('rt')
> +
> + wlr_files = []
> + wlr_deps = [
> +@@ -130,7 +129,6 @@ wlr_deps = [
> + xkbcommon,
> + pixman,
> + math,
> +- rt,
> + ]
> +
> + subdir('protocol')
> Index: 0.20/patches/patch-render_drm_syncobj_c
> ===================================================================
> RCS file: 0.20/patches/patch-render_drm_syncobj_c
> diff -N 0.20/patches/patch-render_drm_syncobj_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/patches/patch-render_drm_syncobj_c 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,14 @@
> +ETIMEDOUT on OpenBSD, not ETIME
> +
> +Index: render/drm_syncobj.c
> +--- render/drm_syncobj.c.orig
> ++++ render/drm_syncobj.c
> +@@ -161,7 +161,7 @@ out:
> + bool wlr_drm_syncobj_timeline_check(struct wlr_drm_syncobj_timeline
> *timeline,
> + uint64_t point, uint32_t flags, bool *result) {
> + int etime;
> +-#if defined(__FreeBSD__)
> ++#if defined(__FreeBSD__) || defined(__OpenBSD__)
> + etime = ETIMEDOUT;
> + #else
> + etime = ETIME;
> Index: 0.20/patches/patch-render_vulkan_vulkan_c
> ===================================================================
> RCS file: 0.20/patches/patch-render_vulkan_vulkan_c
> diff -N 0.20/patches/patch-render_vulkan_vulkan_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/patches/patch-render_vulkan_vulkan_c 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,11 @@
> +otherwise makedev() function isnt found
> +
> +Index: render/vulkan/vulkan.c
> +--- render/vulkan/vulkan.c.orig
> ++++ render/vulkan/vulkan.c
> +@@ -1,4 +1,4 @@
> +-#if defined(__FreeBSD__)
> ++#if defined(__FreeBSD__) || defined(__OpenBSD__)
> + #undef _POSIX_C_SOURCE
> + #endif
> + #include <assert.h>
> Index: 0.20/patches/patch-xcursor_xcursor_c
> ===================================================================
> RCS file: 0.20/patches/patch-xcursor_xcursor_c
> diff -N 0.20/patches/patch-xcursor_xcursor_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/patches/patch-xcursor_xcursor_c 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,12 @@
> +Index: xcursor/xcursor.c
> +--- xcursor/xcursor.c.orig
> ++++ xcursor/xcursor.c
> +@@ -490,7 +490,7 @@ xcursor_xc_file_load_images(FILE *file, int size)
> + #endif
> +
> + #ifndef XCURSORPATH
> +-#define XCURSORPATH
> "~/.icons:/usr/share/icons:/usr/share/pixmaps:~/.cursors:/usr/share/cursors/xorg-x11:"ICONDIR
> ++#define XCURSORPATH
> "~/.icons:/usr/X11R6/include/pixmaps:/usr/local/share/icons:/usr/local/lib/X11/icons:/usr/share/icons:/usr/share/pixmaps:~/.cursors:/usr/share/cursors/xorg-x11:"ICONDIR
> + #endif
> +
> + #define XDG_DATA_HOME_FALLBACK "~/.local/share"
> Index: 0.20/pkg/DESCR
> ===================================================================
> RCS file: 0.20/pkg/DESCR
> diff -N 0.20/pkg/DESCR
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/pkg/DESCR 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,38 @@
> +Pluggable, composable, unopinionated modules for building a Wayland
> +compositor; or about 60,000 lines of code you were going to write
> +anyway.
> +
> + * wlroots provides backends that abstract the underlying display and
> + input hardware, including KMS/DRM, libinput, Wayland, X11, and
> + headless backends, plus any custom backends you choose to write,
> + which can all be created or destroyed at runtime and used in
> + concert with each other.
> +
> + * wlroots provides unopinionated, mostly standalone implementations
> + of many Wayland interfaces, both from wayland.xml and various
> + protocol extensions. We also promote the standardization of
> + portable extensions across many compositors.
> +
> + * wlroots provides several powerful, standalone, and optional tools
> + that implement components common to many compositors, such as the
> + arrangement of outputs in physical space.
> +
> + * wlroots provides an Xwayland abstraction that allows you to have
> + excellent Xwayland support without worrying about writing your own
> + X11 window manager on top of writing your compositor.
> +
> + * wlroots provides a renderer abstraction that simple compositors can
> + use to avoid writing GL code directly, but which steps out of the
> + way when your needs demand custom rendering code.
> +
> +wlroots implements a huge variety of Wayland compositor features and
> +implements them right, so you can focus on the features that make your
> +compositor unique. By using wlroots, you get high performance,
> +excellent hardware compatibility, broad support for many wayland
> +interfaces, and comfortable development tools - or any subset of these
> +features you like, because all of them work independently of one
> +another and freely compose with anything you want to implement
> +yourself.
> +
> +A variety of wrapper libraries are available for using it with your
> +favorite programming language.
> Index: 0.20/pkg/PLIST
> ===================================================================
> RCS file: 0.20/pkg/PLIST
> diff -N 0.20/pkg/PLIST
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 0.20/pkg/PLIST 3 Jun 2026 17:21:39 -0000
> @@ -0,0 +1,134 @@
> +@option no-default-conflict
> +@option is-branch
> +@conflict wlroots->=0.20,<0.21
> +@conflict wlroots->=0.20v0,<0.21v0
> +@pkgpath wayland/wlroots
> +include/wlroots-${MODWLROOTS_VERSION}/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/drm.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/headless.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/interface.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/libinput.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/multi.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/session.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/wayland.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/x11.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/config.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_buffer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_ext_image_capture_source_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_keyboard.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_output.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_pointer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_switch.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_tablet_pad.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_tablet_tool.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_touch.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/allocator.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/color.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/dmabuf.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/drm_format_set.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/drm_syncobj.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/egl.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/gles2.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/interface.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/pass.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/pixman.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/swapchain.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/vulkan.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/wlr_renderer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/render/wlr_texture.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_alpha_modifier_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_buffer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_color_management_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_compositor.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_content_type_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_cursor.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_cursor_shape_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_damage_ring.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_data_control_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_data_device.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_drm.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_drm_lease_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_export_dmabuf_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_data_control_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_foreign_toplevel_list_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_image_capture_source_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_image_copy_capture_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_foreign_toplevel_management_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_fractional_scale_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_gamma_control_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_idle_inhibit_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_idle_notify_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_input_device.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_input_method_v2.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_keyboard.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_keyboard_group.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_keyboard_shortcuts_inhibit_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_layer_shell_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_linux_dmabuf_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_linux_drm_syncobj_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_layer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_layout.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_management_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_power_management_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_swapchain_manager.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_pointer.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_pointer_constraints_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_pointer_gestures_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_presentation_time.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_primary_selection.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_primary_selection_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_relative_pointer_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_scene.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_screencopy_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_seat.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_security_context_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_server_decoration.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_session_lock_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_shm.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_single_pixel_buffer_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_subcompositor.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_switch.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tablet_pad.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tablet_tool.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tablet_v2.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tearing_control_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_text_input_v3.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_touch.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_transient_seat_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_viewporter.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_virtual_keyboard_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_virtual_pointer_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xcursor_manager.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_activation_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_decoration_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_dialog_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_foreign_registry.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_foreign_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_foreign_v2.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_output_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_shell.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_system_bell_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_toplevel_icon_v1.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/addon.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/box.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/edges.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/log.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/region.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/util/transform.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/version.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xcursor.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/server.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/shell.h
> +include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/xwayland.h
> +@lib
> lib/libwlroots-${MODWLROOTS_VERSION}.so.${LIBwlroots-${MODWLROOTS_VERSION}_VERSION}
> +lib/pkgconfig/wlroots-${MODWLROOTS_VERSION}.pc
> Index: patches/patch-backend_drm_backend_c
> ===================================================================
> RCS file: patches/patch-backend_drm_backend_c
> diff -N patches/patch-backend_drm_backend_c
> --- patches/patch-backend_drm_backend_c 28 Aug 2025 21:01:27 -0000
> 1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,55 +0,0 @@
> -Index: backend/drm/backend.c
> ---- backend/drm/backend.c.orig
> -+++ backend/drm/backend.c
> -@@ -3,11 +3,13 @@
> - #include <stdio.h>
> - #include <stdlib.h>
> - #include <string.h>
> -+#include <unistd.h>
> - #include <wayland-server-core.h>
> - #include <wlr/backend/interface.h>
> - #include <wlr/backend/session.h>
> - #include <wlr/interfaces/wlr_output.h>
> - #include <wlr/util/log.h>
> -+#include <sys/event.h>
> - #include <xf86drm.h>
> - #include "backend/drm/drm.h"
> - #include "backend/drm/fb.h"
> -@@ -207,6 +209,8 @@ static bool init_mgpu_renderer(struct wlr_drm_backend
> -
> - struct wlr_backend *wlr_drm_backend_create(struct wlr_session *session,
> - struct wlr_device *dev, struct wlr_backend *parent) {
> -+ int kq;
> -+ struct kevent kev;
> - assert(session && dev);
> - assert(!parent || wlr_backend_is_drm(parent));
> -
> -@@ -283,6 +287,28 @@ struct wlr_backend *wlr_drm_backend_create(struct wlr_
> - drm->session_destroy.notify = handle_session_destroy;
> - wl_signal_add(&session->events.destroy, &drm->session_destroy);
> -
> -+ if ((kq = kqueue()) <= 0)
> -+ goto continue_without_kqueue;
> -+
> -+ EV_SET(&kev, dev->fd, EVFILT_DEVICE, EV_ADD | EV_ENABLE | EV_CLEAR,
> -+ NOTE_CHANGE, 0, NULL);
> -+
> -+ if (kevent(kq, &kev, 1, NULL, 0, NULL) < 0) {
> -+ close(kq);
> -+ goto continue_without_kqueue;
> -+ }
> -+
> -+ drm->drm_kevent = wl_event_loop_add_fd(session->event_loop, kq,
> -+ WL_EVENT_READABLE, handle_drm_kevent, drm);
> -+ if (!drm->drm_kevent) {
> -+ wlr_log(WLR_ERROR, "Failed to create DRM kevent source");
> -+ close(kq);
> -+ goto continue_without_kqueue;
> -+ }
> -+ drm->kq = kq;
> -+ wlr_log(WLR_INFO, "DRM kevent source added");
> -+
> -+continue_without_kqueue:
> - return &drm->backend;
> -
> - error_mgpu_renderer:
> Index: patches/patch-backend_drm_drm_c
> ===================================================================
> RCS file: patches/patch-backend_drm_drm_c
> diff -N patches/patch-backend_drm_drm_c
> --- patches/patch-backend_drm_drm_c 28 Aug 2025 21:01:27 -0000 1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,40 +0,0 @@
> -Index: backend/drm/drm.c
> ---- backend/drm/drm.c.orig
> -+++ backend/drm/drm.c
> -@@ -8,6 +8,7 @@
> - #include <stdlib.h>
> - #include <string.h>
> - #include <strings.h>
> -+#include <sys/event.h>
> - #include <time.h>
> - #include <wayland-server-core.h>
> - #include <wayland-util.h>
> -@@ -375,6 +376,9 @@ void finish_drm_resources(struct wlr_drm_backend *drm)
> - return;
> - }
> -
> -+ if (drm->kq)
> -+ close(drm->kq);
> -+
> - if (drm->iface->finish != NULL) {
> - drm->iface->finish(drm);
> - }
> -@@ -2050,6 +2054,18 @@ int handle_drm_event(int fd, uint32_t mask, void *data
> - wlr_log(WLR_ERROR, "drmHandleEvent failed");
> - wlr_backend_destroy(&drm->backend);
> - }
> -+ return 1;
> -+}
> -+
> -+int handle_drm_kevent(int fd, uint32_t mask, void *data) {
> -+ struct kevent kev;
> -+ struct wlr_drm_backend *drm = data;
> -+
> -+ if ((kevent(fd, NULL, 0, &kev, 1, NULL)) && kev.fflags & NOTE_CHANGE) {
> -+ wlr_log(WLR_INFO, "DRM hotplug detected");
> -+ scan_drm_connectors(drm, NULL);
> -+ }
> -+
> - return 1;
> - }
> -
> Index: patches/patch-include_backend_drm_drm_h
> ===================================================================
> RCS file: patches/patch-include_backend_drm_drm_h
> diff -N patches/patch-include_backend_drm_drm_h
> --- patches/patch-include_backend_drm_drm_h 28 Aug 2025 21:01:27 -0000
> 1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,27 +0,0 @@
> -Index: include/backend/drm/drm.h
> ---- include/backend/drm/drm.h.orig
> -+++ include/backend/drm/drm.h
> -@@ -92,6 +92,7 @@ struct wlr_drm_backend {
> - bool addfb2_modifiers;
> -
> - int fd;
> -+ int kq;
> - char *name;
> - struct wlr_device *dev;
> - struct liftoff_device *liftoff;
> -@@ -103,6 +104,7 @@ struct wlr_drm_backend {
> - struct wlr_drm_plane *planes;
> -
> - struct wl_event_source *drm_event;
> -+ struct wl_event_source *drm_kevent;
> -
> - struct wl_listener session_destroy;
> - struct wl_listener session_active;
> -@@ -226,6 +228,7 @@ void scan_drm_leases(struct wlr_drm_backend *drm);
> - bool commit_drm_device(struct wlr_drm_backend *drm,
> - const struct wlr_backend_output_state *states, size_t states_len, bool
> test_only);
> - int handle_drm_event(int fd, uint32_t mask, void *data);
> -+int handle_drm_kevent(int fd, uint32_t mask, void *data);
> - void destroy_drm_connector(struct wlr_drm_connector *conn);
> - bool drm_connector_is_cursor_visible(struct wlr_drm_connector *conn);
> - size_t drm_crtc_get_gamma_lut_size(struct wlr_drm_backend *drm,
> Index: patches/patch-meson_build
> ===================================================================
> RCS file: patches/patch-meson_build
> diff -N patches/patch-meson_build
> --- patches/patch-meson_build 28 Aug 2025 21:01:27 -0000 1.3
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,21 +0,0 @@
> -No librt on OpenBSD
> -
> -Index: meson.build
> ---- meson.build.orig
> -+++ meson.build
> -@@ -121,7 +121,6 @@ pixman = dependency('pixman-1',
> - default_options: ['werror=false'],
> - )
> - math = cc.find_library('m')
> --rt = cc.find_library('rt')
> -
> - wlr_files = []
> - wlr_deps = [
> -@@ -130,7 +129,6 @@ wlr_deps = [
> - xkbcommon,
> - pixman,
> - math,
> -- rt,
> - ]
> -
> - subdir('protocol')
> Index: patches/patch-render_drm_syncobj_c
> ===================================================================
> RCS file: patches/patch-render_drm_syncobj_c
> diff -N patches/patch-render_drm_syncobj_c
> --- patches/patch-render_drm_syncobj_c 28 Aug 2025 21:01:27 -0000
> 1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,14 +0,0 @@
> -ETIMEDOUT on OpenBSD, not ETIME
> -
> -Index: render/drm_syncobj.c
> ---- render/drm_syncobj.c.orig
> -+++ render/drm_syncobj.c
> -@@ -161,7 +161,7 @@ out:
> - bool wlr_drm_syncobj_timeline_check(struct wlr_drm_syncobj_timeline
> *timeline,
> - uint64_t point, uint32_t flags, bool *result) {
> - int etime;
> --#if defined(__FreeBSD__)
> -+#if defined(__FreeBSD__) || defined(__OpenBSD__)
> - etime = ETIMEDOUT;
> - #else
> - etime = ETIME;
> Index: patches/patch-render_vulkan_vulkan_c
> ===================================================================
> RCS file: patches/patch-render_vulkan_vulkan_c
> diff -N patches/patch-render_vulkan_vulkan_c
> --- patches/patch-render_vulkan_vulkan_c 7 Nov 2024 09:44:27 -0000
> 1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,11 +0,0 @@
> -otherwise makedev() function isnt found
> -
> -Index: render/vulkan/vulkan.c
> ---- render/vulkan/vulkan.c.orig
> -+++ render/vulkan/vulkan.c
> -@@ -1,4 +1,4 @@
> --#if defined(__FreeBSD__)
> -+#if defined(__FreeBSD__) || defined(__OpenBSD__)
> - #undef _POSIX_C_SOURCE
> - #endif
> - #include <assert.h>
> Index: patches/patch-xcursor_xcursor_c
> ===================================================================
> RCS file: patches/patch-xcursor_xcursor_c
> diff -N patches/patch-xcursor_xcursor_c
> --- patches/patch-xcursor_xcursor_c 7 Nov 2024 09:44:27 -0000 1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -Index: xcursor/xcursor.c
> ---- xcursor/xcursor.c.orig
> -+++ xcursor/xcursor.c
> -@@ -490,7 +490,7 @@ xcursor_xc_file_load_images(FILE *file, int size)
> - #endif
> -
> - #ifndef XCURSORPATH
> --#define XCURSORPATH
> "~/.icons:/usr/share/icons:/usr/share/pixmaps:~/.cursors:/usr/share/cursors/xorg-x11:"ICONDIR
> -+#define XCURSORPATH
> "~/.icons:/usr/X11R6/include/pixmaps:/usr/local/share/icons:/usr/local/lib/X11/icons:/usr/share/icons:/usr/share/pixmaps:~/.cursors:/usr/share/cursors/xorg-x11:"ICONDIR
> - #endif
> -
> - #define XDG_DATA_HOME_FALLBACK "~/.local/share"
> Index: pkg/DESCR
> ===================================================================
> RCS file: pkg/DESCR
> diff -N pkg/DESCR
> --- pkg/DESCR 5 Jan 2026 07:31:07 -0000 1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,41 +0,0 @@
> -Pluggable, composable, unopinionated modules for building a Wayland
> -compositor; or about 60,000 lines of code you were going to write
> -anyway.
> -
> - * wlroots provides backends that abstract the underlying display and
> - input hardware, including KMS/DRM, libinput, Wayland, X11, and
> - headless backends, plus any custom backends you choose to write,
> - which can all be created or destroyed at runtime and used in
> - concert with each other.
> -
> - * wlroots provides unopinionated, mostly standalone implementations
> - of many Wayland interfaces, both from wayland.xml and various
> - protocol extensions. We also promote the standardization of
> - portable extensions across many compositors.
> -
> - * wlroots provides several powerful, standalone, and optional tools
> - that implement components common to many compositors, such as the
> - arrangement of outputs in physical space.
> -
> - * wlroots provides an Xwayland abstraction that allows you to have
> - excellent Xwayland support without worrying about writing your own
> - X11 window manager on top of writing your compositor.
> -
> - * wlroots provides a renderer abstraction that simple compositors can
> - use to avoid writing GL code directly, but which steps out of the
> - way when your needs demand custom rendering code.
> -
> -wlroots implements a huge variety of Wayland compositor features and
> -implements them right, so you can focus on the features that make your
> -compositor unique. By using wlroots, you get high performance,
> -excellent hardware compatibility, broad support for many wayland
> -interfaces, and comfortable development tools - or any subset of these
> -features you like, because all of them work independently of one
> -another and freely compose with anything you want to implement
> -yourself.
> -
> -Check out our wiki to get started with wlroots. Join our IRC channel:
> -#wlroots on Libera Chat.
> -
> -A variety of wrapper libraries are available for using it with your
> -favorite programming language.
> Index: pkg/PLIST
> ===================================================================
> RCS file: pkg/PLIST
> diff -N pkg/PLIST
> --- pkg/PLIST 28 Aug 2025 21:01:27 -0000 1.6
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,129 +0,0 @@
> -include/wlroots-${MODWLROOTS_VERSION}/
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/backend.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/drm.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/headless.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/interface.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/libinput.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/multi.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/session.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/wayland.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/backend/x11.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/config.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_buffer.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_ext_image_capture_source_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_keyboard.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_output.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_pointer.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_switch.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_tablet_pad.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_tablet_tool.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/interfaces/wlr_touch.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/allocator.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/color.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/dmabuf.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/drm_format_set.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/drm_syncobj.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/egl.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/gles2.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/interface.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/pass.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/pixman.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/swapchain.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/vulkan.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/wlr_renderer.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/render/wlr_texture.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_alpha_modifier_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_buffer.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_color_management_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_compositor.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_content_type_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_cursor.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_cursor_shape_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_damage_ring.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_data_control_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_data_device.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_drm.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_drm_lease_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_export_dmabuf_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_data_control_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_foreign_toplevel_list_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_image_capture_source_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_ext_image_copy_capture_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_foreign_toplevel_management_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_fractional_scale_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_gamma_control_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_idle_inhibit_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_idle_notify_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_input_device.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_input_method_v2.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_keyboard.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_keyboard_group.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_keyboard_shortcuts_inhibit_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_layer_shell_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_linux_dmabuf_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_linux_drm_syncobj_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_layer.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_layout.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_management_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_power_management_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_output_swapchain_manager.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_pointer.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_pointer_constraints_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_pointer_gestures_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_presentation_time.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_primary_selection.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_primary_selection_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_relative_pointer_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_scene.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_screencopy_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_seat.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_security_context_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_server_decoration.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_session_lock_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_shm.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_single_pixel_buffer_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_subcompositor.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_switch.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tablet_pad.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tablet_tool.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tablet_v2.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_tearing_control_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_text_input_v3.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_touch.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_transient_seat_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_viewporter.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_virtual_keyboard_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_virtual_pointer_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xcursor_manager.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_activation_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_decoration_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_dialog_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_foreign_registry.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_foreign_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_foreign_v2.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_output_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_shell.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_system_bell_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/types/wlr_xdg_toplevel_icon_v1.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/util/
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/util/addon.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/util/box.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/util/edges.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/util/log.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/util/region.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/util/transform.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/version.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/xcursor.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/server.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/shell.h
> -include/wlroots-${MODWLROOTS_VERSION}/wlr/xwayland/xwayland.h
> -@lib
> lib/libwlroots-${MODWLROOTS_VERSION}.so.${LIBwlroots-${MODWLROOTS_VERSION}_VERSION}
> -lib/pkgconfig/wlroots-${MODWLROOTS_VERSION}.pc
--
Matthieu Herrb