Bug 511511

Summary: wl-copy from wl-clipboard-rs no longer works with KWin 6.5.1
Product: [Plasma] kwin Reporter: BryanLiang <liangrui.ch>
Component: wayland-genericAssignee: KWin default assignee <kwin-bugs-null>
Status: RESOLVED WORKSFORME    
Severity: normal CC: kde
Priority: NOR    
Version First Reported In: 6.5.1   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description BryanLiang 2025-11-02 11:53:26 UTC
SUMMARY
As title,

wl-copy from wl-clipboard-rs no longer works with KWin 6.5.1. It worked correctly in KWin 6.5.0 according to the comment here https://github.com/bugaevc/wl-clipboard/issues/268#issuecomment-3386159882. But after I upgraded KDE Plasma from 6.4.5 to 6.5.1, clipboard copying stopped functioning.

STEPS TO REPRODUCE
1. Install wl-copy from wl-clipboard-rs
2. Run the following command `wl-copy < some_text.txt` in the terminal
3. Check the clipboard widget in the panel

OBSERVED RESULT
The copied text does not appear in the clipboard widget, and cannot be pasted into other applications.

EXPECTED RESULT
Text copied using wl-copy should appear in the clipboard widget and be available for pasting into other applications.

SOFTWARE/OS VERSIONS
Operating System: Arch Linux 
KDE Plasma Version: 6.5.1
KDE Frameworks Version: 6.19.0
Qt Version: 6.10.0
Kernel Version: 6.16.10-arch1-1-cjktty (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 5800H with Radeon Graphics
Memory: 16 GiB of RAM (13.5 GiB usable)
Graphics Processor: AMD Radeon Graphics

ADDITIONAL INFORMATION
Here is the screen record of the situation: https://youtu.be/0vRpUBa7OkU
Comment 1 BryanLiang 2025-11-02 11:54:01 UTC
Here is the log when `WAYLAND_DEBUG=1` set

```
[4108898.484][rs] -> wl_display@1.get_registry(wl_registry@2)
[4108898.514][rs] -> wl_display@1.sync(wl_callback@3)
[4108901.237][rs] <- wl_registry@2.global, (1, Some("wl_compositor"), 6)
[4108901.312][rs] <- wl_registry@2.global, (3, Some("zwp_tablet_manager_v2"), 2)
[4108901.401][rs] <- wl_registry@2.global, (4, Some("zwp_keyboard_shortcuts_inhibit_manager_v1"), 1)
[4108901.482][rs] <- wl_registry@2.global, (5, Some("zxdg_decoration_manager_v1"), 1)
[4108901.545][rs] <- wl_registry@2.global, (6, Some("wp_viewporter"), 1)
[4108901.598][rs] <- wl_registry@2.global, (7, Some("wp_security_context_manager_v1"), 1)
[4108901.666][rs] <- wl_registry@2.global, (8, Some("wp_fractional_scale_manager_v1"), 1)
[4108901.738][rs] <- wl_registry@2.global, (9, Some("wl_shm"), 2)
[4108901.775][rs] <- wl_registry@2.global, (10, Some("wl_seat"), 10)
[4108901.831][rs] <- wl_registry@2.global, (11, Some("zwp_pointer_gestures_v1"), 3)
[4108901.890][rs] <- wl_registry@2.global, (12, Some("zwp_pointer_constraints_v1"), 1)
[4108901.957][rs] <- wl_registry@2.global, (13, Some("zwp_relative_pointer_manager_v1"), 1)
[4108902.047][rs] <- wl_registry@2.global, (14, Some("wl_data_device_manager"), 3)
[4108902.121][rs] <- wl_registry@2.global, (15, Some("ext_data_control_manager_v1"), 1)
[4108902.205][rs] <- wl_registry@2.global, (16, Some("wp_cursor_shape_manager_v1"), 2)
[4108902.286][rs] <- wl_registry@2.global, (17, Some("zwp_primary_selection_device_manager_v1"), 1)
[4108902.395][rs] <- wl_registry@2.global, (18, Some("org_kde_kwin_idle"), 1)
[4108902.473][rs] <- wl_registry@2.global, (19, Some("zwp_idle_inhibit_manager_v1"), 1)
[4108902.555][rs] <- wl_registry@2.global, (20, Some("ext_idle_notifier_v1"), 2)
[4108902.620][rs] <- wl_registry@2.global, (21, Some("org_kde_plasma_shell"), 8)
[4108902.697][rs] <- wl_registry@2.global, (22, Some("org_kde_kwin_appmenu_manager"), 2)
[4108902.779][rs] <- wl_registry@2.global, (23, Some("org_kde_kwin_server_decoration_palette_manager"), 1)
[4108902.905][rs] <- wl_registry@2.global, (25, Some("org_kde_plasma_virtual_desktop_management"), 3)
[4108903.022][rs] <- wl_registry@2.global, (27, Some("org_kde_kwin_shadow_manager"), 2)
[4108903.105][rs] <- wl_registry@2.global, (28, Some("org_kde_kwin_dpms_manager"), 1)
[4108903.188][rs] <- wl_registry@2.global, (29, Some("org_kde_kwin_server_decoration_manager"), 1)
[4108903.279][rs] <- wl_registry@2.global, (30, Some("kde_output_management_v2"), 16)
[4108903.366][rs] <- wl_registry@2.global, (31, Some("zxdg_output_manager_v1"), 3)
[4108903.427][rs] <- wl_registry@2.global, (32, Some("wl_subcompositor"), 1)
[4108903.487][rs] <- wl_registry@2.global, (33, Some("zxdg_exporter_v2"), 1)
[4108903.558][rs] <- wl_registry@2.global, (34, Some("zxdg_importer_v2"), 1)
[4108903.622][rs] <- wl_registry@2.global, (37, Some("xdg_activation_v1"), 1)
[4108903.676][rs] <- wl_registry@2.global, (39, Some("wp_content_type_manager_v1"), 1)
[4108903.758][rs] <- wl_registry@2.global, (40, Some("wp_tearing_control_manager_v1"), 1)
[4108903.851][rs] <- wl_registry@2.global, (41, Some("xdg_toplevel_drag_manager_v1"), 1)
[4108903.930][rs] <- wl_registry@2.global, (42, Some("xdg_toplevel_icon_manager_v1"), 1)
[4108904.019][rs] <- wl_registry@2.global, (43, Some("kde_screen_edge_manager_v1"), 1)
[4108904.107][rs] <- wl_registry@2.global, (44, Some("frog_color_management_factory_v1"), 1)
[4108904.197][rs] <- wl_registry@2.global, (45, Some("wp_presentation"), 2)
[4108904.258][rs] <- wl_registry@2.global, (46, Some("wp_color_manager_v1"), 1)
[4108904.322][rs] <- wl_registry@2.global, (47, Some("xdg_wm_dialog_v1"), 1)
[4108904.374][rs] <- wl_registry@2.global, (48, Some("kde_external_brightness_v1"), 3)
[4108904.470][rs] <- wl_registry@2.global, (49, Some("wp_alpha_modifier_v1"), 1)
[4108904.535][rs] <- wl_registry@2.global, (50, Some("wl_fixes"), 1)
[4108904.576][rs] <- wl_registry@2.global, (51, Some("wp_fifo_manager_v1"), 1)
[4108904.650][rs] <- wl_registry@2.global, (52, Some("wp_single_pixel_buffer_manager_v1"), 1)
[4108904.738][rs] <- wl_registry@2.global, (53, Some("xdg_toplevel_tag_manager_v1"), 1)
[4108904.818][rs] <- wl_registry@2.global, (54, Some("wp_color_representation_manager_v1"), 1)
[4108904.913][rs] <- wl_registry@2.global, (55, Some("wp_pointer_warp_v1"), 1)
[4108904.977][rs] <- wl_registry@2.global, (57, Some("wl_drm"), 2)
[4108905.019][rs] <- wl_registry@2.global, (58, Some("zwp_linux_dmabuf_v1"), 5)
[4108905.098][rs] <- wl_registry@2.global, (59, Some("wp_linux_drm_syncobj_manager_v1"), 1)
[4108905.178][rs] <- wl_registry@2.global, (61, Some("xdg_wm_base"), 6)
[4108905.228][rs] <- wl_registry@2.global, (62, Some("zwlr_layer_shell_v1"), 5)
[4108905.298][rs] <- wl_registry@2.global, (64, Some("kde_output_device_v2"), 16)
[4108905.353][rs] <- wl_registry@2.global, (65, Some("kde_output_device_v2"), 16)
[4108905.416][rs] <- wl_registry@2.global, (66, Some("wl_output"), 4)
[4108905.470][rs] <- wl_registry@2.global, (67, Some("wp_drm_lease_device_v1"), 1)
[4108905.529][rs] <- wl_registry@2.global, (68, Some("kde_output_order_v1"), 1)
[4108905.587][rs] <- wl_registry@2.global, (69, Some("zwp_text_input_manager_v1"), 1)
[4108905.668][rs] <- wl_registry@2.global, (70, Some("zwp_text_input_manager_v2"), 1)
[4108905.757][rs] <- wl_registry@2.global, (71, Some("zwp_text_input_manager_v3"), 1)
[4108905.821][rs] <- wl_registry@2.global, (73, Some("org_kde_kwin_blur_manager"), 1)
[4108905.916][rs] <- wl_registry@2.global, (74, Some("org_kde_kwin_slide_manager"), 1)
[4108906.001][rs] <- wl_registry@2.global, (75, Some("xdg_system_bell_v1"), 1)
[4108906.080][rs] <- wl_callback@3.done, (349094)
[4108906.098][rs] <- wl_display@1.delete_id, (3)
[4108906.132][rs] -> wl_registry@2.bind(15, Some("ext_data_control_manager_v1"), 1, ext_data_control_manager_v1@3)
[4108906.232][rs] -> wl_registry@2.bind(10, Some("wl_seat"), 2, wl_seat@4)
[4108906.288][rs] -> ext_data_control_manager_v1@3.get_data_device(ext_data_control_device_v1@5, wl_seat@4)
[4108906.324][rs] -> wl_display@1.sync(wl_callback@6)
[4108906.408][rs] <- wl_seat@4.name, (Some("seat0"))
[4108906.440][rs] <- wl_seat@4.capabilities, (3)
[4108906.466][rs] <- ext_data_control_device_v1@5.data_offer, (ext_data_control_offer_v1@4278190080)
[4108906.500][rs] <- ext_data_control_offer_v1@4278190080.offer, (Some("application/mbox"))
[4108906.555][rs] <- ext_data_control_device_v1@5.selection, (ext_data_control_offer_v1@4278190080)
[4108906.580][rs] <- ext_data_control_device_v1@5.data_offer, (ext_data_control_offer_v1@4278190081)
[4108906.602][rs] <- ext_data_control_offer_v1@4278190081.offer, (Some("STRING"))
[4108906.651][rs] <- ext_data_control_offer_v1@4278190081.offer, (Some("TEXT"))
[4108906.687][rs] <- ext_data_control_offer_v1@4278190081.offer, (Some("UTF8_STRING"))
[4108906.737][rs] <- ext_data_control_offer_v1@4278190081.offer, (Some("text/plain"))
[4108906.774][rs] <- ext_data_control_offer_v1@4278190081.offer, (Some("text/plain;charset=utf-8"))
[4108906.860][rs] <- ext_data_control_offer_v1@4278190081.offer, (Some("text/plain;charset=utf-8"))
[4108906.915][rs] <- ext_data_control_device_v1@5.primary_selection, (ext_data_control_offer_v1@4278190081)
[4108906.944][rs] <- wl_callback@6.done, (349094)
[4108906.964][rs] <- wl_display@1.delete_id, (6)
[4108906.987][rs] -> ext_data_control_offer_v1@4278190080.destroy()
[4108907.008][rs] -> ext_data_control_offer_v1@4278190081.destroy()
[4108908.141][rs] -> ext_data_control_manager_v1@3.create_data_source(ext_data_control_source_v1@6)
[4108908.175][rs] -> ext_data_control_source_v1@6.offer(Some("application/mbox"))
[4108908.228][rs] -> ext_data_control_device_v1@5.set_selection(ext_data_control_source_v1@6)
[4108908[.597][rs] <- 4108908ext_data_control_source_v1.602@][rs]6 <- .ext_data_control_device_v1cancelled@, (5).
data_offer, (ext_data_control_offer_v1@[42781900814108908).
630][rs][ <- 4108908ext_data_control_device_v1.@6425][rs]. <- data_offerext_data_control_offer_v1, (@ext_data_control_offer_v14278190081@.4278190081offer), (
Some(["4108908a.p676p][rs]l <- iext_data_control_offer_v1c@a4278190081t.ioffero, (nSome/(m"baopxp"l)i)c
at[i4108908o.n733/][rs]m <- bext_data_control_device_v1o@x5".)selection), (
ext_data_control_offer_v1@[42781900814108908).
767][rs] <- ext_data_control_device_v1[@41089085.785][rs] -> ext_data_control_offer_v1.@selection4278190081, (.ext_data_control_offer_v1destroy@(4278190081))

[4108908.835][rs] -> ext_data_control_source_v1@6.destroy()
[4108908.860][rs] -> ext_data_control_offer_v1@4278190081.destroy()
```
Comment 2 BryanLiang 2025-11-02 13:05:34 UTC
It appears to be because KWin removed the support for wlr-data-control in 6.5.1, and wl-clipboard-rs requires that to work properly.
Comment 3 David Edmundson 2025-11-02 23:32:23 UTC
That doesn't sound like the reason as I can see ext_data_control in the logs.