your idea about direct client to client clipboard transfers is doable
with the current X11 clipboard model:
- Clipboard owner advertises that it can convert selection to some
special target type such as "client-to-client-transfer" or
- If the pasting client supports client to client transfer, it can
check the list of supported targets for the
"client-to-client-transfer" target type and request conversion to
- The clipboard owner returns a string containing details of how to
request the data (e.g. hostname/port, or some other scheme that only
works for the local host).
- Pasting application contacts the owner out of band and receives the
Yes, this requires modifications to applications in order to work
correctly, but so would switching to a new clipboard architecture.
With respect to your no-transfer cut/paste of a movie example, that's
more of a component architecture problem than a clipboard issue. In the
context of Bonobo, it can be done provided that the clipboard owner can
provide the data as a Bonobo Embeddable, and the pasting application can
embed Bonobo Embeddables in its documents:
- Clipboard owner advertises that it can convert the selection to the
target "BONOBO_EMBEDDABLE" (or some other agreed upon targer
- Pasting application requests that the selection be converted to
"BONOBO_EMBEDDABLE", and receives an IOR for the component.
Pasting application owns a reference on the component due to the
- Pasting application
queryInterface()'s the component to the
Bonobo::ControlFactory interface, and calls the
method to create a control to embed in the document.
- When it comes time to save the data, the component can be converted
to one of the
Bonobo::Persist interfaces, and written out.
Of course, there are reasons why people don't do this (apart from not
liking Bonobo), including:
- With the classic X selection model, you don't need to special case
local or remote transfer cases.
- Works in cases where the two applications can only communicate via
the X connection (e.g. in the presence of transparent X proxies such
- It delegates all the permissions/authentication issues to the X