git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commit07b2262bbcc4f3ae06b96d40c80444d786fa54b3
parentdae542bda8
authorIsaac Freund <[email protected]>
date2026-02-24 12:19
river: implement ext-data-control-v1

The wlr-data-control-unstable-v1 protocol is deprecated

 build.zig.zon    | 4 ++--
 river/Server.zig | 7 +++++--
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/build.zig.zon b/build.zig.zon
index e081b0b..12bff77 100644
--- a/build.zig.zon
+++ b/build.zig.zon
@@ -20,8 +20,8 @@
             .hash = "wayland-0.5.0-dev-lQa1kvTUAQCsD8AobfOXJA_-TVG-WTYXju68OZ8L85RM",
         },
         .wlroots = .{
-            .url = "https://codeberg.org/ifreund/zig-wlroots/archive/v0.19.3.tar.gz",
-            .hash = "wlroots-0.19.3-jmOlcuL_AwBHhLCwpFsXbTizE3q9BugFmGX-XIxqcPMc",
+            .url = "git+https://codeberg.org/ifreund/zig-wlroots?ref=master#95c4341e3afe9496331baf2156a3ee15b2cb7bc0",
+            .hash = "wlroots-0.19.4-dev-jmOlcqgMBACgOFbQ0IIFURB7HztxzXL_A_3am6rAioTA",
         },
         .xkbcommon = .{
             .url = "git+https://codeberg.org/ifreund/zig-xkbcommon?ref=main#a10651157cb1545ee3ae3818b4c7437c64d16462",
diff --git a/river/Server.zig b/river/Server.zig
index c11f56d..0b9a252 100644
--- a/river/Server.zig
+++ b/river/Server.zig
@@ -67,7 +67,8 @@ xdg_activation: *wlr.XdgActivationV1,
 
 data_device_manager: *wlr.DataDeviceManager,
 primary_selection_manager: *wlr.PrimarySelectionDeviceManagerV1,
-data_control_manager: *wlr.DataControlManagerV1,
+data_control_manager: *wlr.ExtDataControlManagerV1,
+wlr_data_control_manager: *wlr.DataControlManagerV1,
 
 export_dmabuf_manager: *wlr.ExportDmabufManagerV1,
 screencopy_manager: *wlr.ScreencopyManagerV1,
@@ -140,7 +141,8 @@ pub fn init(server: *Server, runtime_xwayland: bool) !void {
 
         .data_device_manager = try wlr.DataDeviceManager.create(wl_server),
         .primary_selection_manager = try wlr.PrimarySelectionDeviceManagerV1.create(wl_server),
-        .data_control_manager = try wlr.DataControlManagerV1.create(wl_server),
+        .data_control_manager = try wlr.ExtDataControlManagerV1.create(wl_server, 1),
+        .wlr_data_control_manager = try wlr.DataControlManagerV1.create(wl_server),
 
         .export_dmabuf_manager = try wlr.ExportDmabufManagerV1.create(wl_server),
         .screencopy_manager = try wlr.ScreencopyManagerV1.create(wl_server),
@@ -336,6 +338,7 @@ fn blocklist(server: *Server, global: *const wl.Global) bool {
         global == server.foreign_toplevel_list.global or
         global == server.export_dmabuf_manager.global or
         global == server.data_control_manager.global or
+        global == server.wlr_data_control_manager.global or
         global == server.om.wlr_output_manager.global or
         global == server.om.power_manager.global or
         global == server.om.gamma_control_manager.global or