With xpra_cmd.exe am able to get bi-directional clipboard working with version 2.4.3-r21365. However, any version beyond this and I can only copy from windows client into the Ubuntu 18.04 server version 2.1.3-r17247, not to. I have tried every client release of v3.0.x, as well as v2.5.x.
Please see the below debug output of an attempted (failed) copy operation from server -> client while using 3.0.5-r24942 :
C:\xpra>.\Xpra_cmd.exe start ssh/testuser:haeWosee7ra7eiSh@192.168.11.1:30000 --start-child="palemoon" --clipboard=yes --clipboard-direction=both --opengl=no -d clipboard 2020-02-06 13:06:08,897 Xpra GTK3 client version 3.0.5-r24942 64-bit 2020-02-06 13:06:08,912 running on Microsoft Windows 10 2020-02-06 13:06:08,975 Warning: failed to import opencv: 2020-02-06 13:06:08,975 No module named 'cv2' 2020-02-06 13:06:08,975 webcam forwarding is disabled 2020-02-06 13:06:09,740 GStreamer version 1.16.2 for Python 3.8.0 64-bit 2020-02-06 13:06:10,022 Connected (version 2.0, client OpenSSH_7.6p1) 2020-02-06 13:06:10,100 SSH password authentication failed: 2020-02-06 13:06:10,100 Bad authentication type; allowed types: ['publickey', 'password'] 2020-02-06 13:06:10,115 Authentication (password) successful! 2020-02-06 13:06:10,475 make_clipboardmenuitem() Traceback (most recent call last): File "E:\Xpra\tags\v3.0.x\src/xpra/client/mixins/tray.py", line 49, in setup_xpra_tray File "E:\Xpra\tags\v3.0.x\src/xpra/client/mixins/tray.py", line 111, in create_xpra_tray File "E:\Xpra\tags\v3.0.x\src/xpra/client/mixins/tray.py", line 138, in get_tray_title TypeError: sequence item 0: expected str instance, tuple found 2020-02-06 13:06:23,662 keyboard settings: layout=us 2020-02-06 13:06:23,662 desktop size is 1739x978 with 1 screen: 2020-02-06 13:06:23,678 Default (460x258 mm - DPI: 96x96) workarea: 1739x939 2020-02-06 13:06:23,678 DISPLAY1 (346x194 mm - DPI: 127x128) 2020-02-06 13:06:24,803 DISCARD_TARGETS=re.compile('^NeXT'), re.compile('^com\\.apple\\.'), re.compile('^CorePasteboardFlavorType'), re.compile('^dyn\\.') 2020-02-06 13:06:24,803 DISCARD_EXTRA_TARGETS=re.compile('^SAVE_TARGETS$'), re.compile('^COMPOUND_TEXT'), re.compile('GTK_TEXT_BUFFER_CONTENTS'), re.compile('^text/plain;charset=utf-8') 2020-02-06 13:06:24,819 server clipboard: supported=True, direction=both, supports enable selection=True 2020-02-06 13:06:24,819 client clipboard: supported=True, direction=both 2020-02-06 13:06:24,819 parse_clipboard_caps() clipboard enabled=True 2020-02-06 13:06:24,819 server clipboard does not include contents slice fix 2020-02-06 13:06:24,819 enabled remote logging 2020-02-06 13:06:24,819 Xpra X11 server version 2.1.3-r17247 64-bit 2020-02-06 13:06:24,819 running on Linux Ubuntu 18.04 bionic 2020-02-06 13:06:24,834 process_ui_capabilities() clipboard_enabled=True 2020-02-06 13:06:24,834 get_clipboard_helper_classes() unfiltered list=[None, 'xpra.platform.win32.clipboard.Win32Clipboard'] 2020-02-06 13:06:24,850 get_clipboard_helper_classes() options=[None, 'xpra.platform.win32.clipboard.Win32Clipboard'] 2020-02-06 13:06:24,850 get_clipboard_helper_classes()=[<class 'xpra.platform.win32.clipboard.Win32Clipboard'>] 2020-02-06 13:06:24,850 make_clipboard_helper() options=[<class 'xpra.platform.win32.clipboard.Win32Clipboard'>] 2020-02-06 13:06:24,975 setup_clipboard_helper(<class 'xpra.platform.win32.clipboard.Win32Clipboard'>) 2020-02-06 13:06:24,990 setup_clipboard_helper() kwargs={'clipboards.local': ['CLIPBOARD'], 'clipboards.remote': ['CLIPBOARD', 'PRIMARY', 'SECONDARY'], 'can-send': True, 'can-receive': True, 'remote-loop-uuids': {}, 'clipboard.local': 'CLIPBOARD', 'clipboard.remote': 'CLIPBOARD'} 2020-02-06 13:06:24,990 Win32Clipboard.init_window() creating clipboard window class and instance 2020-02-06 13:06:24,990 RegisterClassExA(XpraWin32Clipboard)=0xc1b2 2020-02-06 13:06:24,990 clipboard window=10355556 2020-02-06 13:06:24,990 ClipboardProtocolHelperCore.init_proxies : {'CLIPBOARD': Win32ClipboardProxy} 2020-02-06 13:06:25,006 verify_remote_loop_uuids({}) 2020-02-06 13:06:25,006 clipboard helper=ClipboardProtocolHelperCore 2020-02-06 13:06:25,006 send_clipboard_selections(['CLIPBOARD', 'PRIMARY', 'SECONDARY']) server_clipboard_enable_selections=True 2020-02-06 13:06:25,006 _send_clipboard_token_handler(Win32ClipboardProxy, '()') 2020-02-06 13:06:25,006 clipboard_send: clipboard-token 2020-02-06 13:06:25,022 clipboard_toggled(gtk3.client,) clipboard_enabled=True, server_clipboard=True 2020-02-06 13:06:25,022 send_clipboard_selections(['CLIPBOARD', 'PRIMARY', 'SECONDARY']) server_clipboard_enable_selections=True 2020-02-06 13:06:25,022 _send_clipboard_token_handler(Win32ClipboardProxy, '()') 2020-02-06 13:06:25,037 clipboard_send: clipboard-token 2020-02-06 13:06:25,194 set_clipboard_menu(()) helper=ClipboardProtocolHelperCore, server=True, client=True 2020-02-06 13:06:25,194 make_translatedclipboard_optionsmenuitem() 2020-02-06 13:06:36,469 process_clipboard_packet: clipboard-token, helper=ClipboardProtocolHelperCore 2020-02-06 13:06:36,469 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=Win32ClipboardProxy 2020-02-06 13:06:36,469 got token, selection=CLIPBOARD, targets=None, target data=None, claim=True, can-receive=True 2020-02-06 13:06:36,485 _filter_targets(())=() 2020-02-06 13:06:36,485 send_clipboard_request_handler(Win32ClipboardProxy, 'CLIPBOARD', 'TARGETS') 2020-02-06 13:06:36,485 send_clipboard_request id=0 2020-02-06 13:06:36,485 clipboard_progress(1, None) 2020-02-06 13:06:36,485 clipboard_send: clipboard-request 2020-02-06 13:06:36,516 process_clipboard_packet: clipboard-contents, helper=ClipboardProtocolHelperCore 2020-02-06 13:06:36,516 process clipboard contents, selection=CLIPBOARD, type=ATOM, format=32 2020-02-06 13:06:36,516 _filter_targets((b'TIMESTAMP', b'TARGETS', b'MULTIPLE', b'UTF8_STRING', b'TEXT', b'STRING'))=('TIMESTAMP', 'TARGETS', 'MULTIPLE', 'UTF8_STRING', 'TEXT', 'STRING') 2020-02-06 13:06:36,532 clipboard wire -> raw: ('ATOM', 32, 'atoms', '"(b\'TIMESTAMP\', b\'TARGETS\', b\'MULTIPLE\', b\'UTF8_STRING\', b\'TEXT\', b\'STRING\')"') -> "('TIMESTAMP', 'TARGETS', 'MULTIPLE', 'UTF8_STRING', 'TEXT', 'STRING')" 2020-02-06 13:06:36,532 clipboard_progress(0, None) 2020-02-06 13:06:36,532 clipboard got contents(0, 'ATOM', 32, '"(\'TIMESTAMP\', \'TARGETS\', \'MULTIPLE\', \'UTF8_STRING\', \'TEXT\', \'STRING\')"'): proxy=Win32ClipboardProxy for selection=CLIPBOARD 2020-02-06 13:06:36,579 _filter_targets(('TIMESTAMP', 'TARGETS', 'MULTIPLE', 'UTF8_STRING', 'TEXT', 'STRING'))=('TIMESTAMP', 'TARGETS', 'MULTIPLE', 'UTF8_STRING', 'TEXT', 'STRING') 2020-02-06 13:06:36,594 got_contents: tell OS we have TIMESTAMP, TARGETS, MULTIPLE, UTF8_STRING, TEXT, STRING
And here is the output from a successful copy operation using v2.4.3-r21365 :
C:\xpra.orig>.\Xpra_cmd.exe start ssh/testuser:haeWosee7ra7eiSh@192.168.11.1:30000 --start-child="palemoon" --clipboard=yes --clipboard-direction=both --opengl=no -d clipboard 2020-02-06 13:13:21,368 Xpra gtk2 client version 2.4.3-r21365 64-bit 2020-02-06 13:13:21,384 running on Microsoft Windows 10 2020-02-06 13:13:21,431 Warning: failed to import opencv: 2020-02-06 13:13:21,446 No module named cv2 2020-02-06 13:13:21,462 webcam forwarding is disabled 2020-02-06 13:13:22,009 GStreamer version 1.14.4 for Python 2.7.15 64-bit 2020-02-06 13:13:22,165 make_clipboardmenuitem() 2020-02-06 13:13:36,900 keyboard settings: layout=us 2020-02-06 13:13:36,900 desktop size is 1739x978 with 1 screen: 2020-02-06 13:13:36,900 Default (460x258 mm - DPI: 96x96) workarea: 1739x939 2020-02-06 13:13:36,915 DISPLAY1 (346x194 mm - DPI: 127x128) 2020-02-06 13:13:37,337 DISCARD_TARGETS=^SAVE_TARGETS$, ^COMPOUND_TEXT, ^NeXT, ^com\.apple\., ^CorePasteboardFlavorType, ^dyn\. 2020-02-06 13:13:37,337 server clipboard: supported=True, direction=both, supports enable selection=True 2020-02-06 13:13:37,337 client clipboard: supported=True, direction=both 2020-02-06 13:13:37,353 parse_clipboard_caps() clipboard enabled=True 2020-02-06 13:13:37,353 enabled remote logging 2020-02-06 13:13:37,353 Xpra X11 server version 2.1.3-r17247 64-bit 2020-02-06 13:13:37,353 running on Linux Ubuntu 18.04 bionic 2020-02-06 13:13:37,368 process_ui_capabilities() clipboard_enabled=True 2020-02-06 13:13:37,368 get_clipboard_helper_classes() unfiltered list=['xpra.clipboard.translated_clipboard.TranslatedClipboardProtocolHelper', 'xpra.clipboard.gdk_clipboard.GDKClipboardProtocolHelper', 'xpra.clipboard.clipboard_base.DefaultClipboardProtocolHelper', 'xpra.clipboard.translated_clipboard.TranslatedClipboardProtocolHelper'] 2020-02-06 13:13:37,368 get_clipboard_helper_classes() options=['xpra.clipboard.translated_clipboard.TranslatedClipboardProtocolHelper', 'xpra.clipboard.gdk_clipboard.GDKClipboardProtocolHelper', 'xpra.clipboard.clipboard_base.DefaultClipboardProtocolHelper', 'xpra.clipboard.translated_clipboard.TranslatedClipboardProtocolHelper'] 2020-02-06 13:13:37,384 get_clipboard_helper_classes()=[<class 'xpra.clipboard.translated_clipboard.TranslatedClipboardProtocolHelper'>, <class 'xpra.clipboard.gdk_clipboard.GDKClipboardProtocolHelper'>, <class 'xpra.clipboard.clipboard_base.DefaultClipboardProtocolHelper'>, <class 'xpra.clipboard.translated_clipboard.TranslatedClipboardProtocolHelper'>] 2020-02-06 13:13:37,384 make_clipboard_helper() options=[<class 'xpra.clipboard.translated_clipboard.TranslatedClipboardProtocolHelper'>, <class 'xpra.clipboard.gdk_clipboard.GDKClipboardProtocolHelper'>, <class 'xpra.clipboard.clipboard_base.DefaultClipboardProtocolHelper'>, <class 'xpra.clipboard.translated_clipboard.TranslatedClipboardProtocolHelper'>] 2020-02-06 13:13:37,400 setup_clipboard_helper(<class 'xpra.clipboard.translated_clipboard.TranslatedClipboardProtocolHelper'>) 2020-02-06 13:13:37,447 setup_clipboard_helper() kwargs={'clipboard.remote': 'CLIPBOARD', 'can-send': True, 'clipboard.local': 'CLIPBOARD', 'clipboards.remote': ['CLIPBOARD', 'PRIMARY', 'SECONDARY'], 'remote-loop-uuids': {}, 'clipboards.local': ['CLIPBOARD'], 'can-receive': True} 2020-02-06 13:13:37,447 TranslatedClipboardProtocolHelper local=CLIPBOARD, remote=CLIPBOARD 2020-02-06 13:13:37,447 TranslatedClipboardProtocolHelper.init_proxies : {'CLIPBOARD': ClipboardProxy(CLIPBOARD)} 2020-02-06 13:13:37,447 verify_remote_loop_uuids({}) 2020-02-06 13:13:37,447 clipboard helper=TranslatedClipboardProtocolHelper 2020-02-06 13:13:37,462 send_clipboard_selections(['CLIPBOARD']) server_clipboard_enable_selections=True 2020-02-06 13:13:37,462 send clipboard token: CLIPBOARD 2020-02-06 13:13:37,462 local_to_remote(CLIPBOARD) local_clipboard=CLIPBOARD, remote_clipboard=CLIPBOARD 2020-02-06 13:13:37,462 set_clipboard_menu(()) helper=TranslatedClipboardProtocolHelper, server=True, client=True 2020-02-06 13:13:37,462 make_translatedclipboard_optionsmenuitem() 2020-02-06 13:13:37,478 clipboard: CLIPBOARD owner_changed, enabled=True, can-send=True, can-receive=True, have_token=False, greedy_client=False, block_owner_change=False 2020-02-06 13:14:06,400 process_clipboard_packet: clipboard-token, helper=TranslatedClipboardProtocolHelper 2020-02-06 13:14:06,415 process clipboard handler(clipboard-token)=<bound method TranslatedClipboardProtocolHelper._process_clipboard_token of TranslatedClipboardProtocolHelper> 2020-02-06 13:14:06,415 remote_to_local(CLIPBOARD) local_clipboard=CLIPBOARD, remote_clipboard=CLIPBOARD 2020-02-06 13:14:06,415 process clipboard token selection=CLIPBOARD, local clipboard name=CLIPBOARD, proxy=ClipboardProxy(CLIPBOARD) 2020-02-06 13:14:06,415 got token, selection=CLIPBOARD, targets=None, target data=None, claim=True, can-receive=True 2020-02-06 13:14:06,415 claim() selection=CLIPBOARD, enabled=True 2020-02-06 13:14:06,431 clipboard: CLIPBOARD owner_changed, enabled=True, can-send=True, can-receive=True, have_token=True, greedy_client=False, block_owner_change=True 2020-02-06 13:14:06,447 do_selection_request_event(<gtk.gdk.Event at 0000000004e62c38: GDK_SELECTION_REQUEST selection=CLIPBOARD, target=UTF8_STRING, property=GDK_SELECTION>) 2020-02-06 13:14:06,447 target for CLIPBOARD: 'UTF8_STRING' 2020-02-06 13:14:06,447 do_selection_request_event(<gtk.gdk.Event at 0000000004e62c38: GDK_SELECTION_REQUEST selection=CLIPBOARD, target=UTF8_STRING, property=GDK_SELECTION>) target=UTF8_STRING, selection=CLIPBOARD 2020-02-06 13:14:06,462 do_selection_get(<GtkSelectionData at 0x61db70>, 0, 0) selection=CLIPBOARD 2020-02-06 13:14:06,462 get clipboard from remote handler id=0 2020-02-06 13:14:06,462 clipboard_progress(1, None) 2020-02-06 13:14:06,462 clipboard_notify(1) 2020-02-06 13:14:06,478 local_to_remote(CLIPBOARD) local_clipboard=CLIPBOARD, remote_clipboard=CLIPBOARD 2020-02-06 13:14:06,478 remove_block: CLIPBOARD 2020-02-06 13:14:06,556 process_clipboard_packet: clipboard-contents, helper=TranslatedClipboardProtocolHelper 2020-02-06 13:14:06,556 process clipboard handler(clipboard-contents)=<bound method TranslatedClipboardProtocolHelper._process_clipboard_contents of TranslatedClipboardProtocolHelper> 2020-02-06 13:14:06,556 process clipboard contents, selection=CLIPBOARD, type=UTF8_STRING, format=8 2020-02-06 13:14:06,556 wire selection to raw, encoding=bytes, type=UTF8_STRING, format=8, len(data)=26 2020-02-06 13:14:06,572 clipboard wire -> raw: ('UTF8_STRING', 8, 'bytes', 'https://forum.palemoon.org') -> 'https://forum.palemoon.org' 2020-02-06 13:14:06,572 got clipboard contents for id=0 len=26, loop=NestedMainLoop(0x4ef0190) (type=UTF8_STRING, format=8) 2020-02-06 13:14:06,572 get clipboard from remote result(0)={'data': 'https://forum.palemoon.org', 'type': 'UTF8_STRING', 'format': 8} 2020-02-06 13:14:06,572 clipboard_progress(0, None) 2020-02-06 13:14:06,572 clipboard_notify(0) 2020-02-06 13:14:06,572 do_selection_get(<GtkSelectionData at 0x61db70>,0,0) calling selection_data.set(UTF8_STRING, 8, <type 'str'>:26) 2020-02-06 13:14:06,572 clipboard: CLIPBOARD owner_changed, enabled=True, can-send=True, can-receive=True, have_token=True, greedy_client=False, block_owner_change=True 2020-02-06 13:14:06,572 remove_block: CLIPBOARD
Xpra X11 server version 2.1.3-r17247 64-bit
Please try with a supported version. (see also wiki/Packaging/DistributionPackages)
Thanks for your help. Changing server version to match client version (3.0.5) fixed the problem.
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/2580