From: Matthieu Herrb Subject: Re: Adding wlroots 0.20 To: Volker Schlecht Cc: ports , Robert Lillack , Landry Breuil Date: Wed, 3 Jun 2026 20:13:51 +0200 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 > 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 > 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 > + #include > + #include > ++#include > + #include > + #include > + #include > + #include > + #include > ++#include > + #include > + #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 > + #include > + #include > ++#include > + #include > + #include > + #include > +@@ -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 > 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 > 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 > + #include > + #include > ++#include > + #include > + #include > + #include > + #include > + #include > ++#include > + #include > + #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 > + #include > + #include > ++#include > + #include > + #include > + #include > +@@ -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 > 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 > - #include > - #include > -+#include > - #include > - #include > - #include > - #include > - #include > -+#include > - #include > - #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 > - #include > - #include > -+#include > - #include > - #include > - #include > -@@ -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 > 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