Xpra: Ticket #2338: xpra shadow clipboard not working

After #2284 fixed, I noticed that trying to copy text on a shadow session becomes complicated:

Xpra-Python3-x86_64_3.0-r22922\xpra_cmd" shadow ssh://user@ip/0  --opengl=no --desktop-scaling=0.5 --min-speed=70 --webcam=no --speaker=off --microphone=off
  54   │ 2019-06-19 12:17:04,130 client @28.968  running on Linux Ubuntu 16.04 xenial
  55   │ 2019-06-19 12:17:05,659 Warning: not adding duplicate printer 'Send To OneNote 16'
  56   │ 2019-06-19 12:17:05,661 Warning: not adding duplicate printer 'Microsoft Print to PDF'
  57   │ 2019-06-19 12:17:05,663 Warning: not adding duplicate printer 'OneNote'
  58   │ 2019-06-19 12:20:02,993 client @27.827 server clipboard synchronization changed to PRIMARY selection
  59   │ 2019-06-19 12:20:02,993 ignoring token for disabled clipboard 'CLIPBOARD'
  60   │ 2019-06-19 12:20:25,614 Warning: timeout on screen updates for window 2,
  61   │ 2019-06-19 12:20:25,614  already delayed for more than 15 seconds
  62   │ 2019-06-19 12:20:26,019 client @50.860 server clipboard synchronization changed to SECONDARY selection
  63   │ 2019-06-19 12:20:26,026 ignoring token for disabled clipboard 'CLIPBOARD'
  64   │ 2019-06-19 12:21:37,425 client @02.266 server clipboard synchronization changed to CLIPBOARD selection
  65   │ 2019-06-19 12:22:16,645 New unix-domain connection received on /run/user/1000/xpra/user-precision-t3620-0
  66   │ 2019-06-19 12:22:17,306 New unix-domain connection received on /run/user/1000/xpra/user-precision-t3620-0
  67   │ 2019-06-19 12:22:17,306 New unix-domain connection received on /run/xpra/user-precision-t3620-0
  68   │ 2019-06-19 12:22:34,955 New unix-domain connection received on /run/user/1000/xpra/user-precision-t3620-0
  69   │ 2019-06-19 12:22:35,617 New unix-domain connection received on /run/user/1000/xpra/user-precision-t3620-0
  70   │ 2019-06-19 12:22:35,618 New unix-domain connection received on /run/xpra/user-precision-t3620-0
  71   │ 2019-06-19 12:22:45,818 New unix-domain connection received on /run/user/1000/xpra/user-precision-t3620-0
  72   │ 2019-06-19 12:22:45,821 error processing control command 'clipboard-direction'
  73   │ Traceback (most recent call last):
  74   │   File "/usr/lib/python2.7/dist-packages/xpra/server/server_core.py", line 672, in process_control_command
  75   │     v = command.run(*args[1:])
  76   │   File "/usr/lib/python2.7/dist-packages/xpra/server/control_command.py", line 69, in run
  77   │     return super(ArgsControlCommand, self).run(*args)
  78   │   File "/usr/lib/python2.7/dist-packages/xpra/server/control_command.py", line 31, in run
  79   │     return self.do_run(*args)
  80   │   File "/usr/lib/python2.7/dist-packages/xpra/server/mixins/server_base_controlcommands.py", line 452, in control_command_clipboard_direction
  81   │     assert direction in DIRECTIONS, "invalid direction '%s', must be one of %s" % (direction, csv(DIRECTIONS))
  82   │ AssertionError: invalid direction 'help', must be one of to-server, to-client, both, disabled
  83   │ 2019-06-19 12:22:46,494 New unix-domain connection received on /run/user/1000/xpra/user-precision-t3620-0
  84   │ 2019-06-19 12:22:46,497 New unix-domain connection received on /run/xpra/user-precision-t3620-0
  85   │ 2019-06-19 12:23:03,083 New unix-domain connection received on /run/user/1000/xpra/user-precision-t3620-0
  86   │ 2019-06-19 12:23:03,134 processed structured info request from unix-domain socket:/run/user/1000/xpra/user-precision-t3620-0 in 47ms
  87   │ 2019-06-19 12:23:03,736 New unix-domain connection received on /run/user/1000/xpra/user-precision-t3620-0
  88   │ 2019-06-19 12:23:03,736 New unix-domain connection received on /run/xpra/user-precision-t3620-0
  89   │ 2019-06-19 12:23:56,854 client @20.218 server is not responding, drawing spinners over the windows
  90   │ 2019-06-19 12:23:56,967 client @21.735 server is OK again
  91   │ 2019-06-19 12:23:57,218 New unix-domain connection received on /run/user/1000/xpra/user-precision-t3620-0
  92   │ 2019-06-19 12:24:01,609 New unix-domain connection received on /run/user/1000/xpra/user-precision-t3620-0
  93   │ 2019-06-19 12:24:01,622 client @25.281 server is not responding, drawing spinners over the windows
  94   │ 2019-06-19 12:24:05,836 New unix-domain connection received on /run/xpra/user-precision-t3620-0
  95   │ 2019-06-19 12:24:05,837 client @26.547 server is OK again
  96   │ 2019-06-19 12:24:05,838 client @30.281 server is not responding, drawing spinners over the windows
  97   │ 2019-06-19 12:24:05,912 client @30.750 unknown server setting changed: clipboard_direction="b'both'"
  98   │ 2019-06-19 12:24:05,949 client @30.797 server is OK again
  99   │ 2019-06-19 12:24:13,452 client @35.468 server is not responding, drawing spinners over the windows
 100   │ 2019-06-19 12:24:13,546 Warning: timeout on screen updates for window 1,
 101   │ 2019-06-19 12:24:13,546  already delayed for more than 16 seconds
 102   │ 2019-06-19 12:24:13,690 client @38.516 server is OK again

I tried to play with client's clipboard settings, but no dice

$ xpra info 0 | grep -i clipboard
client.clipboard.contents-slice-fix=True
client.clipboard.enabled=True
client.clipboard.greedy=True
client.clipboard.notifications=True
client.clipboard.selections=('CLIPBOARD',)
client.clipboard.set-enabled=True
client.clipboard.want-targets=False
client.connection.input.count.clipboard-enable-selections=1
client.connection.input.count.clipboard-token=1
client.connection.receive_alias.25=clipboard-token
client.connection.receive_alias.31=clipboard-pending-requests
client.connection.receive_alias.41=set-clipboard-enabled
client.connection.receive_alias.42=clipboard-loop-uuids
client.connection.receive_alias.50=clipboard-contents
client.connection.receive_alias.52=clipboard-enable-selections
client.connection.receive_alias.56=clipboard-contents-none
client.connection.receive_alias.69=clipboard-request
clipboard.CLIPBOARD.blocked_owner_change=False
clipboard.CLIPBOARD.enabled=True
clipboard.CLIPBOARD.event.get_contents=0
clipboard.CLIPBOARD.event.got_token=2
clipboard.CLIPBOARD.event.request_contents=0
clipboard.CLIPBOARD.event.selection_clear=0
clipboard.CLIPBOARD.event.selection_get=0
clipboard.CLIPBOARD.event.selection_request=0
clipboard.CLIPBOARD.event.sent_token=0
clipboard.CLIPBOARD.greedy_client=True
clipboard.CLIPBOARD.have_token=True
clipboard.CLIPBOARD.last-targets=()
clipboard.CLIPBOARD.loop-uuid=Xpra-Clipboard-Loop-Detection:a9fb7402bc5e4a6ca9ca769522f4f3cb
clipboard.PRIMARY.blocked_owner_change=False
clipboard.PRIMARY.enabled=False
clipboard.PRIMARY.event.get_contents=0
clipboard.PRIMARY.event.got_token=0
clipboard.PRIMARY.event.request_contents=0
clipboard.PRIMARY.event.selection_clear=0
clipboard.PRIMARY.event.selection_get=0
clipboard.PRIMARY.event.selection_request=0
clipboard.PRIMARY.event.sent_token=0
clipboard.PRIMARY.greedy_client=True
clipboard.PRIMARY.have_token=False
clipboard.PRIMARY.last-targets=()
clipboard.PRIMARY.loop-uuid=Xpra-Clipboard-Loop-Detection:03e0940f7f89464c8706306c52af32b9
clipboard.SECONDARY.blocked_owner_change=False
clipboard.SECONDARY.enabled=False
clipboard.SECONDARY.event.get_contents=0
clipboard.SECONDARY.event.got_token=0
clipboard.SECONDARY.event.request_contents=0
clipboard.SECONDARY.event.selection_clear=0
clipboard.SECONDARY.event.selection_get=0
clipboard.SECONDARY.event.selection_request=0
clipboard.SECONDARY.event.sent_token=0
clipboard.SECONDARY.greedy_client=True
clipboard.SECONDARY.have_token=False
clipboard.SECONDARY.last-targets=()
clipboard.SECONDARY.loop-uuid=Xpra-Clipboard-Loop-Detection:208b0d63c49645a7956e87bb235ced87
clipboard.can-receive=True
clipboard.can-send=True
clipboard.filters=()
clipboard.max_recv_size=-1
clipboard.max_send_size=-1
clipboard.max_size=4194304
clipboard.pending=()
clipboard.requests=0
clipboard.type=X11Clipboard
clipboard.want_targets=False
features.clipboard=True
features.clipboard-direction=both
features.clipboard.contents-slice-fix=True
features.clipboard.enable-selections=True
features.clipboard.loop-uuids.CLIPBOARD=Xpra-Clipboard-Loop-Detection:a9fb7402bc5e4a6ca9ca769522f4f3cb
features.clipboard.loop-uuids.PRIMARY=Xpra-Clipboard-Loop-Detection:03e0940f7f89464c8706306c52af32b9
features.clipboard.loop-uuids.SECONDARY=Xpra-Clipboard-Loop-Detection:208b0d63c49645a7956e87bb235ced87
features.clipboards=('CLIPBOARD', 'PRIMARY', 'SECONDARY')
network.packet-handlers.ui=('buffer-refresh', 'button-action', 'clipboard-contents', 'clipboard-contents-none', 'clipboard-enable-selections', 'clipboard-loop-uuids', 'clipboard-pending-requests', 'clipboard-request', 'clipboard-token', 'close-window', 'configure-window', 'damage-sequence', 'desktop_size', 'encoding', 'exit-server', 'focus', 'force-ungrab', 'info-request', 'input-devices', 'key-action', 'key-repeat', 'keymap-changed', 'layout-changed', 'map-window', 'min-quality', 'min-speed', 'notification-action', 'notification-close', 'pointer-position', 'quality', 'resume', 'rpc', 'screenshot', 'server-settings', 'set-bell', 'set-clipboard-enabled', 'set-cursors', 'set-keyboard-sync-enabled', 'set-notify', 'set_deflate', 'shutdown-server', 'sound-control', 'sound-data', 'speed', 'start-command', 'suspend', 'unmap-window', 'wheel-motion')
}}


Wed, 19 Jun 2019 09:41:25 GMT - stdedos:

Client: Win10


Wed, 19 Jun 2019 10:07:58 GMT - stdedos:

I also got this from the client:

2019-06-19 12:24:05,877 unknown server setting changed: clipboard_direction="b'both'"

(I don't know if it helps with anything)


Thu, 20 Jun 2019 08:45:46 GMT - Antoine Martin: status changed

unknown server setting changed: clipboard_direction="b'both'"

That's unlikely to cause real problems (just that the tray menu will be out of sync with the real setting), that's fixed in r22993.

With shadow servers, I'm seeing problems copying from server to client with trunk (v2.5.x works fine). This is caused by #812.


Thu, 20 Jun 2019 12:47:34 GMT - Antoine Martin:

The problem with shadow servers:

client is requesting an unknown target: 'text/plain;charset=utf-8'
 valid targets: Coordinate Transformation Matrix, cursor, FLOAT, Button Left, Opaque, Button Wheel Down, Button Horiz Wheel Left, STRING, Button Horiz Wheel Right, Rel X

Clearly those aren't clipboard targets! So maybe we're sending them across as ATOM numbers?


Thu, 20 Jun 2019 15:10:57 GMT - Antoine Martin:

First fix: r23005: the x11 event filter was not initialized for shadow servers.

Full trace of the TARGETS problem, triggered by copying a string from the Terminal (the PRIMARY selection events happened just before that):

2019-06-20 22:07:56,536 client @38.462 do_selection_clear_event(<Gdk.EventSelection object at 0x7fb863768688 (void at 0x7fb8580f6030)>) have_token=True, block_owner_change=False selection=CLIPBOARD
2019-06-20 22:07:56,536 client @38.463 send clipboard token: CLIPBOARD
2019-06-20 22:07:56,536 client @38.464 clipboard_send: clipboard-token
2019-06-20 22:07:56,536 client @38.464 clipboard: CLIPBOARD owner_changed, enabled=True, can-send=True, can-receive=True, have_token=False, greedy_client=False, block_owner_change=True
2019-06-20 22:07:56,536 client @38.465 remove_block: CLIPBOARD
2019-06-20 22:07:56,537 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=X11ClipboardProxy(CLIPBOARD)
2019-06-20 22:07:56,537 got token, selection=CLIPBOARD, targets=None, target data=None, claim=True, can-receive=True
2019-06-20 22:07:56,538 claim_selection: set selection owner returned 1, owner=0x3c0000b
2019-06-20 22:07:56,538 claim_selection: sending message to root window
2019-06-20 22:07:56,538 claim_selection: done, owned=True
2019-06-20 22:07:56,540 do_xpra_xfixes_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x2470', 'delivered_to': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'window': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'subtype': '0', 'owner': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'selection': 'CLIPBOARD', 'timestamp': '221060797', 'selection_timestamp': '221060797'}>)
2019-06-20 22:07:56,540 do_selection_notify_event(<X11:XFSelectionNotify {'send_event': '0', 'serial': '0x2470', 'delivered_to': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'window': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'subtype': '0', 'owner': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'selection': 'CLIPBOARD', 'timestamp': '221060797', 'selection_timestamp': '221060797'}>) owned=True, was True, enabled=True, can-send=True
2019-06-20 22:07:56,540 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x2471', 'delivered_to': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'window': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'requestor': '<GdkX11.X11Window object at 0x7fd3d16761f8 (GdkX11Window at 0x563403a35ca0)>', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '221060798'}>)
2019-06-20 22:07:56,540 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x2471', 'delivered_to': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'window': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'requestor': '<GdkX11.X11Window object at 0x7fd3d16761f8 (GdkX11Window at 0x563403a35ca0)>', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '221060798'}>)
2019-06-20 22:07:56,541 clipboard request for CLIPBOARD from window 0x3600125: 'gedit', target=TARGETS, prop=GDK_SELECTION
2019-06-20 22:07:56,541 send_clipboard_request_handler(X11ClipboardProxy(CLIPBOARD), 'CLIPBOARD', 'TARGETS')
2019-06-20 22:07:56,541 send_clipboard_request id=2
2019-06-20 22:07:56,541 do_xpra_selection_request(<X11:SelectionRequest {'send_event': '0', 'serial': '0x2471', 'delivered_to': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'window': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'requestor': '<GdkX11.X11Window object at 0x7fd3d1676678 (GdkX11Window at 0x563403a35e30)>', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '221060798'}>)
2019-06-20 22:07:56,541 do_selection_request_event(<X11:SelectionRequest {'send_event': '0', 'serial': '0x2471', 'delivered_to': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'window': '<GdkX11.X11Window object at 0x7fd3d1b5e9d8 (GdkX11Window at 0x563403a35b10)>', 'requestor': '<GdkX11.X11Window object at 0x7fd3d1676678 (GdkX11Window at 0x563403a35e30)>', 'selection': 'CLIPBOARD', 'target': 'TARGETS', 'property': 'GDK_SELECTION', 'time': '221060798'}>)
2019-06-20 22:07:56,542 clipboard request for CLIPBOARD from window 0x3800002: 'Terminal', target=TARGETS, prop=GDK_SELECTION
2019-06-20 22:07:56,542 sending clipboard-pending-requests=1 to ClientConnection(1 : Protocol(tcp socket: 192.168.1.7:10000 <- 192.168.1.22:40722))
2019-06-20 22:07:56,658 client @38.532 process_clipboard_packet: clipboard-pending-requests, helper=GDKClipboardProtocolHelper
2019-06-20 22:07:56,658 client @38.533 process clipboard handler(clipboard-pending-requests)=<bound method ClipboardProtocolHelperBase._process_clipboard_pending_requests of GDKClipboardProtocolHelper>
2019-06-20 22:07:56,658 client @38.533 clipboard_progress(None, 1)
2019-06-20 22:07:56,659 client @38.536 clipboard_notify(1) notification timer=None
2019-06-20 22:07:56,840 client @38.735 process_clipboard_packet: clipboard-request, helper=GDKClipboardProtocolHelper
2019-06-20 22:07:56,840 client @38.735 process clipboard handler(clipboard-request)=<bound method ClipboardProtocolHelperBase._process_clipboard_request of GDKClipboardProtocolHelper>
2019-06-20 22:07:56,841 client @38.736 process clipboard request, request_id=2, selection=b'CLIPBOARD', local name=CLIPBOARD, target=b'TARGETS'
2019-06-20 22:07:56,841 client @38.736 get_contents(b'TARGETS', <function ClipboardProtocolHelperBase._process_clipboard_request.<locals>.got_contents at 0x7fb8626ebd08>) selection=CLIPBOARD, enabled=True, can-send=True
2019-06-20 22:07:56,841 client @38.738 unpack <Gtk.Clipboard object at 0x7fb8627481b0 (GtkClipboard at 0x560956569db0)>: <class 'gi.repository.Gtk.SelectionData'>
2019-06-20 22:07:56,841 client @38.738 unpack: <Gtk.SelectionData object at 0x7fb861a6ea68 (GtkSelectionData at 0x7ffe6a474c70)>
2019-06-20 22:07:56,841 client @38.739 unpack(..) type=ATOM, format=32, data=<class 'bytes'>:80
2019-06-20 22:07:56,842 client @38.739 got_contents(ATOM, 32, <class 'bytes'>:80) data=0x9c0000000000000099000000000000009b000000000000009d000000000000004600000000000000a400000000000000a5000000000000001f00000000000000a600000000000000a700000000000000..
2019-06-20 22:07:56,842 client @38.740 perform clipboard limit checking - datasize - 80, -1
2019-06-20 22:07:56,842 client @38.740 _munge_raw_selection_to_wire(b'TARGETS', 'ATOM', 32, b'\x9c\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00F\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00')
2019-06-20 22:07:56,842 client @38.740 _do_munge_raw_selection_to_wire(b'TARGETS', ATOM, 32, <class 'bytes'>:80)
2019-06-20 22:07:56,842 client @38.740 clipboard raw -> wire: ('ATOM', 32, b'\x9c\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00F\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00') -> (b'integers', (156, 153, 155, 157, 70, 164, 165, 31, 166, 167))
2019-06-20 22:07:56,842 client @38.741 clipboard_send: clipboard-contents
2019-06-20 22:07:56,843 process clipboard contents, selection=CLIPBOARD, type=ATOM, format=32
2019-06-20 22:07:56,843 wire selection to raw, encoding=integers, type=ATOM, format=32, len(data)=10
2019-06-20 22:07:56,843 struct.pack(b'@LLLLLLLLLL', (156, 153, 155, 157, 70, 164, 165, 31, 166, 167))
2019-06-20 22:07:56,843 clipboard wire -> raw: ('ATOM', 32, 'integers', "'(156, 153, 155, 157, 70, 164, 165, 31, 166, 167)'") -> "b'\\x9c\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x99 .. 0\\x00\\xa7\\x00\\x00\\x00\\x00\\x00\\x00\\x00'"
2019-06-20 22:07:56,843 clipboard got contents(2, 'ATOM', 32, '"b\'\\\\x9c\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x99 .. 0\\\\x00\\\\xa7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"'): proxy=X11ClipboardProxy(CLIPBOARD) for selection=CLIPBOARD
2019-06-20 22:07:56,843 caching TARGETS: ('Coordinate Transformation Matrix', 'cursor', 'FLOAT', 'Button Left', 'Opaque', 'Rel X', 'Rel Y', 'STRING', 'NumLock', 'Alt')
2019-06-20 22:07:56,843 got_contents('TARGETS', 'ATOM', 32, '"b\'\\\\x9c\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x99 .. 0\\\\x00\\\\xa7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"') pending=(<GdkX11.X11Window object at 0x7fd3d16761f8 (GdkX11Window at 0x563403a35ca0)>, 'GDK_SELECTION', 221060798), (<GdkX11.X11Window object at 0x7fd3d1676678 (GdkX11Window at 0x563403a35e30)>, 'GDK_SELECTION', 221060798)
2019-06-20 22:07:56,843 setting response "b'\\x9c\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x99 .. 0\\x00\\xa7\\x00\\x00\\x00\\x00\\x00\\x00\\x00'" to property GDK_SELECTION of window 'gedit' as ATOM
2019-06-20 22:07:56,843 set_selection_response(<GdkX11.X11Window object at 0x7fd3d16761f8 (GdkX11Window at 0x563403a35ca0)>, TARGETS, GDK_SELECTION, ATOM, 32, '"b\'\\\\x9c\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x99 .. 0\\\\x00\\\\xa7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"', 221060798)
2019-06-20 22:07:56,844 setting response "b'\\x9c\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x99 .. 0\\x00\\xa7\\x00\\x00\\x00\\x00\\x00\\x00\\x00'" to property GDK_SELECTION of window 'Terminal' as ATOM
2019-06-20 22:07:56,844 set_selection_response(<GdkX11.X11Window object at 0x7fd3d1676678 (GdkX11Window at 0x563403a35e30)>, TARGETS, GDK_SELECTION, ATOM, 32, '"b\'\\\\x9c\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x99 .. 0\\\\x00\\\\xa7\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\'"', 221060798)
2019-06-20 22:07:56,944 sending clipboard-pending-requests=0 to ClientConnection(1 : Protocol(tcp socket: 192.168.1.7:10000 <- 192.168.1.22:40722))
2019-06-20 22:07:57,093 client @39.035 process_clipboard_packet: clipboard-pending-requests, helper=GDKClipboardProtocolHelper
2019-06-20 22:07:57,093 client @39.036 process clipboard handler(clipboard-pending-requests)=<bound method ClipboardProtocolHelperBase._process_clipboard_pending_requests of GDKClipboardProtocolHelper>
2019-06-20 22:07:57,095 client @39.037 clipboard_progress(None, 0)
2019-06-20 22:07:57,096 client @39.038 clipboard_notify(0) notification timer=None

Thu, 20 Jun 2019 17:07:59 GMT - Antoine Martin: owner, status changed

That took a while! The bug from comment:5 required a very specific combination to trigger: a python3 v2.5.x xpra client connecting to a v3.0 shadow server! (though at least some of the bugs fixed below may well be triggered with other setups)

New lots of fixes:

@stdedos: this should work much better for you. (new beta builds in progress) There may still be problems with v2.5.x when doing the very first copy, but once the clipboard is properly initialized it should be fine.


Wed, 03 Jul 2019 09:28:11 GMT - stdedos: status changed; resolution set

It seems that clipboard is working now as expected


Sat, 23 Jan 2021 05:48:38 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/2338