Bug 511511 - wl-copy from wl-clipboard-rs no longer works with KWin 6.5.1
Summary: wl-copy from wl-clipboard-rs no longer works with KWin 6.5.1
Status: RESOLVED WORKSFORME
Alias: None
Product: kwin
Classification: Plasma
Component: wayland-generic (other bugs)
Version First Reported In: 6.5.1
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-11-02 11:53 UTC by BryanLiang
Modified: 2025-11-04 02:14 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.