kwin/autotests
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
..
libinput [libinput] A not valid LibInput::Context should return -1 as filedescriptor 2016-06-02 16:23:23 +02:00
libxrenderutils [libkwinxrenderutils] Clean up static blend picture before going down 2016-06-13 15:29:07 +02:00
wayland Support for syncing the clipboard from X11 to Wayland and vice versa 2016-06-29 09:03:40 +02:00
abstract_client.h [autotests] Adjust to changes regarding AbstractClient 2015-05-08 12:43:47 +02:00
client.h [auto-tests] Add an initial test for Screens 2014-09-17 10:29:03 +02:00
CMakeLists.txt [libkwinxrenderutils] Clean up static blend picture before going down 2016-06-13 15:29:07 +02:00
fakeeffectplugin.cpp
fakeeffectplugin.json PluginEffectLoader doesn't use KPluginTrader any more 2015-07-07 09:36:15 +02:00
fakeeffectplugin_version.cpp [kwin] Adapt to KPluginFactory change 2014-03-28 19:50:46 +00:00
fakeeffectplugin_version.json PluginEffectLoader doesn't use KPluginTrader any more 2015-07-07 09:36:15 +02:00
mock_abstract_client.cpp Add hint similar to autohide to raise/lower a window 2015-10-12 10:37:16 +01:00
mock_abstract_client.h Add hint similar to autohide to raise/lower a window 2015-10-12 10:37:16 +01:00
mock_client.cpp Add hint similar to autohide to raise/lower a window 2015-10-12 10:37:16 +01:00
mock_client.h # This is a combination of 2 commits. 2015-05-15 23:55:26 +02:00
mock_effectshandler.cpp
mock_effectshandler.h support the slide protocol 2015-09-14 16:39:39 +02:00
mock_screens.cpp Warnings--: unused parameters 2015-06-12 17:17:21 +02:00
mock_screens.h add Screens::name(int screen); STUB but for XRandr 2015-05-15 23:55:27 +02:00
mock_workspace.cpp [autotests] Adjust to changes regarding AbstractClient 2015-05-08 12:43:47 +02:00
mock_workspace.h [autotests] Adjust to changes regarding AbstractClient 2015-05-08 12:43:47 +02:00
test_builtin_effectloader.cpp [autotests] Dashboard is no longer available 2015-10-19 14:17:04 +02:00
test_client_machine.cpp Provide x11Connection as a property on the KWin::Application 2015-03-17 09:44:53 +01:00
test_plugin_effectloader.cpp Cancel the EffectLoader query on clear 2016-04-26 15:01:15 +02:00
test_screen_edges.cpp [autotest] Remove workaround in ScreenEdgeTest with Qt 5.6.1 2016-04-26 15:51:16 +02:00
test_screen_paint_data.cpp
test_screens.cpp Port left over qDebug to qCDebug 2015-07-31 13:25:51 +02:00
test_scripted_effectloader.cpp Cancel the EffectLoader query on clear 2016-04-26 15:01:15 +02:00
test_virtual_desktops.cpp Update x11Time when a global shortcut is pressed 2015-02-25 08:15:53 +01:00
test_window_paint_data.cpp Remove the decoration opacity property 2014-08-25 17:25:04 +02:00
test_xcb_size_hints.cpp Provide x11Connection as a property on the KWin::Application 2015-03-17 09:44:53 +01:00
test_xcb_window.cpp Provide x11Connection as a property on the KWin::Application 2015-03-17 09:44:53 +01:00
test_xcb_wrapper.cpp tests test tests, not code 2015-08-27 22:20:16 +02:00
test_xrandr_screens.cpp [autotests] Use -displayfd as argument to start Xephyr 2016-05-03 08:13:04 +02:00
testutils.h
workspace.h [auto-tests] Add an initial test for Screens 2014-09-17 10:29:03 +02:00