Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Server -> Windows 10 Client Clipboard not working. #2580

Closed
totaam opened this issue Feb 6, 2020 · 5 comments
Closed

Server -> Windows 10 Client Clipboard not working. #2580

totaam opened this issue Feb 6, 2020 · 5 comments
Labels

Comments

@totaam
Copy link
Collaborator

totaam commented Feb 6, 2020

Issue migrated from trac ticket # 2580

component: clipboard | priority: critical | resolution: fixed

2020-02-06 18:20:57: jdrummond created the issue


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-24942 :

C:\xpra>.\Xpra_cmd.exe start ssh/testuser:[email protected]: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-24942 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](../commit/d000900a3e413ee659c5957f2604514103ccfc01) 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:[email protected]: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](../commit/75648d09e012bdce5f15aefb23b834eee0f63dc6) 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](../commit/d000900a3e413ee659c5957f2604514103ccfc01) 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
@totaam
Copy link
Collaborator Author

totaam commented Feb 7, 2020

2020-02-07 02:12:11: antoine changed owner from antoine to jdrummond

@totaam
Copy link
Collaborator Author

totaam commented Feb 7, 2020

2020-02-07 02:12:11: antoine commented


Xpra X11 server version 2.1.3-[r17247](../commit/d000900a3e413ee659c5957f2604514103ccfc01) 64-bit
Please try with a supported version. (see also Packaging DistributionPackages)

@totaam
Copy link
Collaborator Author

totaam commented Feb 7, 2020

2020-02-07 15:54:31: jdrummond commented


Thanks for your help. Changing server version to match client version (3.0.5) fixed the problem.

@totaam
Copy link
Collaborator Author

totaam commented Feb 7, 2020

2020-02-07 15:54:40: jdrummond changed status from new to closed

@totaam
Copy link
Collaborator Author

totaam commented Feb 7, 2020

2020-02-07 15:54:40: jdrummond set resolution to fixed

@totaam totaam closed this as completed Feb 7, 2020
@totaam totaam added the v3.0.x label Jan 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant