Skip to content
  • Martin Flöser's avatar
    Support for syncing the clipboard from X11 to Wayland and vice versa · 3493e976
    Martin Flöser authored
    Summary:
    The clipboard sync is done by a dedicated helper binary launched by
    KWin. This helper binary is forced to xcb platform to piggy-back on
    Qt's implementation of the X11 clipboard. In addition it implements
    the Wayland clipboard - which is much simpler. Reading the Wayland
    clipboard is based on the implementation in QtWayland.
    
    KWin internally knows the DataDeviceInterface belonging to the helper
    application. Whenever an xwayland client is focussed, this DataDevice
    is allowed to set the selection and KWin manually updates the current
    selection in the SeatInterface. By that the sync from X11 to Wayland
    is implemented. When afterwards a Wayland client is selected, it's sent
    the current selection which references the X clipboard and a data
    transfer can be initiated in the normal Wayland way.
    
    For the other direction KWin sends the current selection to the helper's
    DataDevice whenever an xwayland window is focused. The helper application
    reads the Wayland clipboard and sets it on the X11 clipboard. Thus the
    Wayland clipboard is synced to X11.
    
    The approach used here will also be useful for implementing a clipboard
    manager (aka klipper).
    
    Currently the implementation is not yet fully completed. We need to
    make sure that the helper application gets restarted in case of a crash.
    
    Test Plan: See added test case
    
    Reviewers: #plasma_on_wayland, #kwin
    
    Subscribers: plasma-devel, kwin
    
    Tags: #plasma_on_wayland, #kwin
    
    Differential Revision: https://phabricator.kde.org/D1973
    3493e976