kwin/autotests/wayland
Martin Gräßlin 3493e97655 Support for syncing the clipboard from X11 to Wayland and vice versa
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
2016-06-29 09:03:40 +02:00
..
data/anim-data-delete-effect [autotest] Don't crash when cancel animation from animationEnded in scripted effect 2016-02-17 13:59:55 +01:00
helper Support for syncing the clipboard from X11 to Wayland and vice versa 2016-06-29 09:03:40 +02:00
CMakeLists.txt Support for syncing the clipboard from X11 to Wayland and vice versa 2016-06-29 09:03:40 +02:00
debug_console_test.cpp Rename abstract_backend.(h|cpp) to platform.(h|cpp) 2016-04-07 16:18:12 +02:00
decoration_input_test.cpp Support touch events in DecorationEventFilter 2016-05-17 07:33:02 +02:00
dont_crash_aurorae_destroy_deco.cpp Merge branch 'Plasma/5.6' 2016-05-12 16:43:12 +02:00
dont_crash_cancel_animation.cpp Rename abstract_backend.(h|cpp) to platform.(h|cpp) 2016-04-07 16:18:12 +02:00
dont_crash_empty_deco.cpp Merge branch 'Plasma/5.6' 2016-04-26 13:13:17 +02:00
dont_crash_glxgears.cpp Rename abstract_backend.(h|cpp) to platform.(h|cpp) 2016-04-07 16:18:12 +02:00
dont_crash_no_border.cpp Don't crash if a decoration doesn't get created 2016-06-23 11:28:08 +02:00
input_stacking_order.cpp Rename abstract_backend.(h|cpp) to platform.(h|cpp) 2016-04-07 16:18:12 +02:00
internal_window.cpp Support touch events on KWin internal windows 2016-05-23 18:40:06 +02:00
kwin_wayland_test.cpp Connect Application::screensCreated to WaylandServer::initOutputs 2016-05-02 15:52:07 +02:00
kwin_wayland_test.h Fix typo 2016-02-11 09:34:19 +01:00
lockscreen.cpp [autotest/wayland] Force kscreenlocker_greet to QMLSCENE_DEVICE softwarecontext 2016-06-03 14:18:45 +02:00
maximize_test.cpp Introduce a RequestGeometryBlocker in ShellClient 2016-06-14 07:40:14 +02:00
move_resize_window_test.cpp Warp the cursor pos to the specificed global position in a NET::Move request 2016-04-18 07:50:06 +02:00
plasma_surface_test.cpp Add support for new Notification role on PlasmaSurface 2016-06-27 11:47:50 +02:00
plasmawindow_test.cpp Update Keyboard focus when the Surface of the active client changes 2016-06-26 16:07:31 +02:00
platformcursor.cpp Rename abstract_backend.(h|cpp) to platform.(h|cpp) 2016-04-07 16:18:12 +02:00
pointer_input.cpp [autotests/wayland] Try to make PointerInputTest::testMouseActionActiveWindow more robust 2016-05-23 11:19:29 +02:00
quick_tiling_test.cpp Rename abstract_backend.(h|cpp) to platform.(h|cpp) 2016-04-07 16:18:12 +02:00
shade_test.cpp [autotests] Add test case for verifying that (un)shade keeps window geometry 2016-05-11 10:43:27 +02:00
shell_client_test.cpp Handle ShellClient::windowShown in Workspace 2016-06-16 11:13:59 +02:00
start_test.cpp Rename abstract_backend.(h|cpp) to platform.(h|cpp) 2016-04-07 16:18:12 +02:00
struts_test.cpp [autotests] Extend StrutsTests for setup on mobile 2016-06-28 16:53:35 +05:30
touch_input_test.cpp Rename abstract_backend.(h|cpp) to platform.(h|cpp) 2016-04-07 16:18:12 +02:00
transient_no_input_test.cpp Rename abstract_backend.(h|cpp) to platform.(h|cpp) 2016-04-07 16:18:12 +02:00
transient_placement.cpp Rename abstract_backend.(h|cpp) to platform.(h|cpp) 2016-04-07 16:18:12 +02:00
xclipboardsync_test.cpp Support for syncing the clipboard from X11 to Wayland and vice versa 2016-06-29 09:03:40 +02:00