[enhancement] Support copy-paste between X and Mir
Bug #1471998 reported by
Robert Ancell
This bug affects 7 people
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Canonical System Image |
Fix Released
|
High
|
Unassigned | |||
Libertine | Status tracked in Devel | |||||
Devel |
Fix Released
|
Medium
|
Christopher Townsend | |||
Trunk |
Fix Released
|
Medium
|
Christopher Townsend | |||
Mir |
Fix Released
|
High
|
Brandon Schaefer | |||
content-hub (Ubuntu) |
Won't Fix
|
Medium
|
Unassigned | |||
libertine (Ubuntu) |
Fix Released
|
Medium
|
Christopher Townsend | |||
mir (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | |||
qtmir (Ubuntu) |
Fix Released
|
High
|
Daniel d'Andrada | |||
qtubuntu (Ubuntu) |
Fix Released
|
High
|
Daniel d'Andrada |
Bug Description
X applications should be able to paste from Mir applications and vice versa.
Related branches
lp://staging/~mir-team/mir/public-cookie-api
- PS Jenkins bot (community): Approve (continuous-integration)
- Alan Griffiths: Abstain
- Mir CI Bot: Approve (continuous-integration)
- Andreas Pokorny (community): Approve
- Alexandros Frantzis (community): Needs Fixing
- Alberto Aguirre (community): Approve
- Chris Halse Rogers: Approve
- Daniel van Vugt: Abstain
- Kevin DuBois (community): Approve
-
Diff: 4380 lines (+1209/-588)103 files modified3rd_party/CMakeLists.txt (+1/-0)
3rd_party/android-input/android/frameworks/base/include/androidfw/Input.h (+8/-6)
3rd_party/android-input/android/frameworks/base/include/androidfw/InputTransport.h (+4/-4)
3rd_party/android-input/android/frameworks/base/services/input/Input.cpp (+6/-6)
3rd_party/android-input/android/frameworks/base/services/input/InputTransport.cpp (+10/-10)
debian/control (+2/-2)
debian/libmircookie2.install (+1/-1)
include/client/mir/events/event_builders.h (+21/-3)
include/client/mir_toolkit/events/event.h (+2/-0)
include/client/mir_toolkit/events/input/input_event.h (+18/-1)
include/client/mir_toolkit/mir_client_library.h (+1/-0)
include/client/mir_toolkit/mir_cookie.h (+71/-0)
include/client/mir_toolkit/mir_surface.h (+9/-0)
include/cookie/mir/cookie/authority.h (+57/-50)
include/cookie/mir/cookie/cookie.h (+57/-0)
include/server/mir/server.h (+4/-4)
include/server/mir/shell/abstract_shell.h (+1/-1)
include/server/mir/shell/shell.h (+1/-1)
include/server/mir/shell/shell_wrapper.h (+1/-1)
src/client/CMakeLists.txt (+3/-1)
src/client/events/event_builders.cpp (+62/-13)
src/client/input/android/android_input_lexicon.cpp (+7/-3)
src/client/input/input_event.cpp (+97/-1)
src/client/mir_cookie.cpp (+49/-0)
src/client/mir_cookie.h (+40/-0)
src/client/mir_surface.cpp (+5/-5)
src/client/mir_surface.h (+1/-2)
src/client/mir_surface_api.cpp (+2/-3)
src/client/rpc/mir_display_server.cpp (+1/-1)
src/client/rpc/mir_display_server.h (+1/-1)
src/client/symbols.map (+7/-0)
src/cookie/CMakeLists.txt (+5/-3)
src/cookie/authority.cpp (+97/-32)
src/cookie/format.h (+35/-0)
src/cookie/hmac_cookie.cpp (+53/-0)
src/cookie/hmac_cookie.h (+51/-0)
src/cookie/symbols.map (+5/-5)
src/include/common/mir/events/event_private.h (+4/-4)
src/include/common/mir/protobuf/display_server.h (+1/-1)
src/include/cookie/mir/cookie/blob.h (+19/-30)
src/include/server/mir/default_server_configuration.h (+3/-3)
src/include/server/mir/frontend/security_check_failed.h (+0/-34)
src/include/server/mir/frontend/shell.h (+1/-1)
src/include/server/mir/frontend/template_protobuf_message_processor.h (+2/-2)
src/include/server/mir/server_configuration.h (+2/-2)
src/protobuf/mir_protobuf.proto (+1/-2)
src/server/CMakeLists.txt (+1/-0)
src/server/default_server_configuration.cpp (+5/-5)
src/server/frontend/CMakeLists.txt (+0/-1)
src/server/frontend/default_configuration.cpp (+1/-1)
src/server/frontend/default_ipc_factory.cpp (+4/-4)
src/server/frontend/default_ipc_factory.h (+3/-3)
src/server/frontend/protobuf_message_processor.cpp (+4/-4)
src/server/frontend/security_check_failed.cpp (+0/-24)
src/server/frontend/session_mediator.cpp (+10/-10)
src/server/frontend/session_mediator.h (+4/-4)
src/server/frontend/shell_wrapper.cpp (+2/-2)
src/server/frontend/shell_wrapper.h (+1/-1)
src/server/input/android/input_sender.cpp (+3/-3)
src/server/input/default_configuration.cpp (+3/-3)
src/server/input/default_event_builder.cpp (+18/-11)
src/server/input/default_event_builder.h (+3/-3)
src/server/input/default_input_device_hub.cpp (+6/-6)
src/server/input/default_input_device_hub.h (+4/-4)
src/server/input/key_repeat_dispatcher.cpp (+7/-4)
src/server/input/key_repeat_dispatcher.h (+3/-3)
src/server/input/surface_input_dispatcher.cpp (+1/-2)
src/server/input/validator.cpp (+1/-1)
src/server/server.cpp (+2/-2)
src/server/shell/abstract_shell.cpp (+1/-1)
src/server/shell/frontend_shell.cpp (+2/-2)
src/server/shell/frontend_shell.h (+1/-1)
src/server/shell/shell_wrapper.cpp (+2/-2)
src/server/symbols.map (+6/-6)
tests/acceptance-tests/test_client_cookie.cpp (+72/-47)
tests/acceptance-tests/test_client_input.cpp (+1/-1)
tests/acceptance-tests/test_surface_modifications.cpp (+3/-4)
tests/acceptance-tests/test_surface_placement.cpp (+1/-2)
tests/acceptance-tests/test_surface_raise.cpp (+83/-54)
tests/acceptance-tests/test_surface_specification.cpp (+3/-4)
tests/include/mir/test/doubles/mock_shell.h (+1/-1)
tests/include/mir/test/doubles/stub_display_server.h (+1/-1)
tests/integration-tests/CMakeLists.txt (+1/-0)
tests/integration-tests/input/test_single_seat_setup.cpp (+3/-3)
tests/mir_test_doubles/CMakeLists.txt (+1/-0)
tests/unit-tests/CMakeLists.txt (+1/-0)
tests/unit-tests/client/input/test_android_input_receiver.cpp (+2/-2)
tests/unit-tests/client/input/test_xkb_mapper.cpp (+1/-2)
tests/unit-tests/frontend/test_event_sender.cpp (+1/-2)
tests/unit-tests/frontend/test_session_mediator.cpp (+10/-11)
tests/unit-tests/input/android/test_android_input_lexicon.cpp (+7/-10)
tests/unit-tests/input/android/test_android_input_sender.cpp (+8/-13)
tests/unit-tests/input/evdev/test_libinput_device.cpp (+3/-3)
tests/unit-tests/input/test_default_input_device_hub.cpp (+3/-3)
tests/unit-tests/input/test_event_builders.cpp (+7/-12)
tests/unit-tests/input/test_event_filter_chain_dispatcher.cpp (+1/-1)
tests/unit-tests/input/test_key_repeat_dispatcher.cpp (+5/-5)
tests/unit-tests/input/test_surface_input_dispatcher.cpp (+10/-10)
tests/unit-tests/input/test_validator.cpp (+1/-1)
tests/unit-tests/input/test_x11_platform.cpp (+2/-2)
tests/unit-tests/scene/test_abstract_shell.cpp (+4/-4)
tests/unit-tests/scene/test_surface.cpp (+2/-2)
tests/unit-tests/test_mir_cookie.cpp (+44/-36)
lp://staging/~ken-vandine/content-hub/pasteboard
- Tyler Hicks: Approve
- system-apps-ci-bot: Needs Fixing (continuous-integration)
- Daniel d'Andrada (community): Approve
- PS Jenkins bot: Pending (continuous-integration) requested
-
Diff: 1711 lines (+1245/-18) (has conflicts)23 files modifiedCMakeLists.txt (+4/-4)
debian/changelog (+9/-0)
examples/CMakeLists.txt (+1/-0)
examples/pasteboard/CMakeLists.txt (+55/-0)
examples/pasteboard/copy.cpp (+56/-0)
examples/pasteboard/paste.cpp (+59/-0)
import/Ubuntu/Content/CMakeLists.txt (+2/-0)
include/com/ubuntu/content/hub.h (+31/-4)
include/com/ubuntu/content/paste.h (+70/-0)
src/com/ubuntu/content/CMakeLists.txt (+12/-0)
src/com/ubuntu/content/detail/com.ubuntu.content.Paste.xml (+22/-0)
src/com/ubuntu/content/detail/com.ubuntu.content.Service.xml (+24/-0)
src/com/ubuntu/content/detail/paste.cpp (+132/-0)
src/com/ubuntu/content/detail/paste.h (+72/-0)
src/com/ubuntu/content/detail/service.cpp (+115/-6)
src/com/ubuntu/content/detail/service.h (+10/-0)
src/com/ubuntu/content/hub.cpp (+98/-2)
src/com/ubuntu/content/paste.cpp (+50/-0)
src/com/ubuntu/content/paste_p.h (+100/-0)
src/com/ubuntu/content/utils.cpp (+120/-2)
tests/acceptance-tests/CMakeLists.txt (+21/-0)
tests/acceptance-tests/app_hub_communication_paste.cpp (+138/-0)
tests/acceptance-tests/mimedata_test.cpp (+44/-0)
lp://staging/~dandrader/qtubuntu/content-hub-clipboard
- Unity8 CI Bot: Needs Fixing (continuous-integration)
- Ken VanDine: Approve
-
Diff: 655 lines (+149/-277)9 files modifieddebian/control (+1/-0)
src/ubuntumirclient/clipboard.cpp (+96/-233)
src/ubuntumirclient/clipboard.h (+23/-22)
src/ubuntumirclient/input.cpp (+0/-1)
src/ubuntumirclient/integration.cpp (+6/-3)
src/ubuntumirclient/integration.h (+0/-2)
src/ubuntumirclient/ubuntumirclient.pro (+1/-1)
src/ubuntumirclient/window.cpp (+20/-11)
src/ubuntumirclient/window.h (+2/-4)
lp://staging/~dandrader/qtmir/content-hub-clipboard
- Michael Terry (community): Approve (testing)
- Unity8 CI Bot (community): Needs Fixing (continuous-integration)
- Gerry Boland: Pending (code) requested
-
Diff: 806 lines (+218/-408)13 files modifiedCMakeLists.txt (+1/-0)
debian/control (+1/-0)
src/modules/Unity/Application/dbusfocusinfo.cpp (+11/-2)
src/platforms/mirserver/CMakeLists.txt (+5/-0)
src/platforms/mirserver/clipboard.cpp (+91/-241)
src/platforms/mirserver/clipboard.h (+36/-53)
src/platforms/mirserver/mirserverintegration.cpp (+5/-4)
src/platforms/mirserver/mirserverintegration.h (+0/-5)
src/platforms/mirserver/shelluuid.cpp (+35/-0)
src/platforms/mirserver/shelluuid.h (+33/-0)
tests/mirserver/CMakeLists.txt (+0/-1)
tests/mirserver/Clipboard/CMakeLists.txt (+0/-27)
tests/mirserver/Clipboard/clipboard_test.cpp (+0/-75)
lp://staging/~townsend/libertine/pasted
- Larry Price: Approve
-
Diff: 437 lines (+326/-7)9 files modifiedCMakeLists.txt (+10/-7)
debian/changelog (+7/-0)
debian/control (+3/-0)
debian/libertine-tools.install (+1/-0)
pasted/CMakeLists.txt (+10/-0)
pasted/pasted.cpp (+214/-0)
pasted/pasted.h (+68/-0)
python/libertine/Libertine.py (+11/-0)
tools/libertine-launch (+2/-0)
Changed in xorg-server (Ubuntu): | |
status: | New → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Robert Ancell (robert-ancell) |
tags: | added: xmir |
Changed in xorg-server (Ubuntu): | |
status: | In Progress → Triaged |
assignee: | Robert Ancell (robert-ancell) → nobody |
Changed in xorg-server (Ubuntu): | |
assignee: | nobody → Robert Ancell (robert-ancell) |
tags: | added: enhancement |
summary: |
- Support copy-paste between X and Mir + [enhancement] Support copy-paste between X and Mir |
Changed in xorg-server (Ubuntu): | |
importance: | Medium → Low |
Changed in mir: | |
status: | New → In Progress |
importance: | Undecided → High |
assignee: | nobody → Brandon Schaefer (brandontschaefer) |
Changed in mir: | |
milestone: | none → 0.19.0 |
Changed in mir: | |
milestone: | 0.19.0 → 0.20.0 |
Changed in mir: | |
milestone: | 0.20.0 → 0.19.0 |
Changed in xorg-server (Ubuntu): | |
status: | Incomplete → Confirmed |
Changed in xorg-server (Ubuntu): | |
status: | Confirmed → Incomplete |
Changed in content-hub (Ubuntu): | |
status: | New → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Ken VanDine (ken-vandine) |
Changed in qtubuntu (Ubuntu): | |
importance: | Undecided → Medium |
status: | New → Triaged |
Changed in unity8 (Ubuntu): | |
importance: | Undecided → Medium |
status: | New → Triaged |
Changed in libertine: | |
milestone: | 1.3 → 1.4 |
Changed in qtubuntu (Ubuntu): | |
status: | Triaged → In Progress |
assignee: | nobody → Daniel d'Andrada (dandrader) |
tags: | removed: xmir |
no longer affects: | xorg-server (Ubuntu) |
no longer affects: | unity8 (Ubuntu) |
Changed in qtmir (Ubuntu): | |
status: | New → In Progress |
importance: | Undecided → High |
Changed in qtubuntu (Ubuntu): | |
importance: | Medium → High |
Changed in qtmir (Ubuntu): | |
assignee: | nobody → Daniel d'Andrada (dandrader) |
Changed in libertine (Ubuntu): | |
status: | Triaged → In Progress |
assignee: | nobody → Christopher Townsend (townsend) |
Changed in canonical-devices-system-image: | |
importance: | Undecided → High |
milestone: | none → 13 |
status: | New → Fix Committed |
Changed in canonical-devices-system-image: | |
status: | Fix Committed → Fix Released |
Changed in content-hub (Ubuntu): | |
assignee: | Ken VanDine (ken-vandine) → nobody |
status: | In Progress → Won't Fix |
To post a comment you must log in.
The Unity 8 interface:
- Use libcontent-hub
- On X selection ownership initiate a transfer to "pasteboard"
- Charge the transfer with content pulled from the X client
- Monitor pasteboard for available content (not implemented yet)
- Pull content from content hub when X client pastes
- Mir will provide cookies for authentication (not implemented yet)