Global paste no longer works after upgrade to 4.1

I recently upgraded to 4.1, and all went well. But I can no longer use the global clipboard. Copying works fine, (I get the notification box that contents have been fetched from qube…) but I’m unable to paste to any other qube.

I was originally using the key combination mod4-c (configured via /etc/qubes/guid.conf) so I thought that might be it, and commented the lines out, setting it back to default. Same behavior. Copying works (now with ctrl-shift-c), but pasting does nothing. No notification window, nothing in the clipboard of the destination qube.

I also tried setting this with the “Global Settings Tool”. That successfully changed the key sequence from ctrl-shift-c to ctrl-win-c, but pasting still gets nothing. I’ve rebooted fully in between all changes.

Copy/paste works fine within in the qube itself.

Any ideas?

Hi @drogo ,

you don’t say if with/without sys-gui … I think it’s without sys-gui, isn’t it?

some ideas:

  • check this forum if you see the same problem from other users

  • check the paste key sequence with the xev tool, you will see if xorg detects or not your key sequence in the terminal used for launching xev. Example for Ctrl-Shift-V:

KeyPress event, serial 34, synthetic NO, window 0x3e00001,
    root 0x76b, subw 0x0, time 9281212, (141,57), root:(351,877),
    state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x3e00001,
    root 0x76b, subw 0x0, time 9281748, (141,57), root:(351,877),
    state 0x14, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x3e00001,
    root 0x76b, subw 0x0, time 9282579, (141,57), root:(351,877),
    state 0x15, keycode 55 (keysym 0x56, V), same_screen YES,
    XLookupString gives 1 bytes: (16) ""
    XmbLookupString gives 1 bytes: (16) ""
    XFilterEvent returns: False

[user@dom0 ~]$ cat /etc/qubes/guid.conf 
# Default configuration file for Qubes GUI daemon
# (For syntax go http://www.hyperrealm.com/libconfig/libconfig_manual.html)

# EDITING THIS FILE WILL NOT HAVE ANY EFFECT! It is not read by the GUI daemon
# anymore, and is left here for reference only. To configure the GUI daemon,
# use qvm-features (see 'man qvm-features' for details).
  • check the logs (sudo journalctl -fxe, tail -f /var/log/qubes/*dom0*, tail -f /var/log/qubes/*<your-target-VM-for-paste>*, …
  • kill qui-clipboard (ps + kill), launch it manually from a terminal (qui-clipboard) and check the terminal output if you see errors when you do a paste
  • hacking (:boom: dangerous if you don’t understand what you do :boom:) : make a backup copy of the qui-clipboard python source code and add debug traces in the source code (/usr/lib/python3.8/site-packages/qui/clipboard.py)

Hi @ludovic, thanks for the reply!

I just did in in-place upgrade to 4.1, and from what I read, sys-gui isn’t installed by default, so I haven’t set that up that I’m aware of. Is there something I can check?

Looking at xev output, it’s being captured;

KeyPress event, serial 34, synthetic NO, window 0x5000001,
    root 0x6c6, subw 0x0, time 178702, (43,85), root:(512,380),
    state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x5000001,
    root 0x6c6, subw 0x0, time 178762, (43,85), root:(512,380),
    state 0x14, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x5000001,
    root 0x6c6, subw 0x0, time 179149, (43,85), root:(512,380),
    state 0x54, keycode 55 (keysym 0x76, v), same_screen YES,
    XLookupString gives 1 bytes: (16) ""
    XmbLookupString gives 1 bytes: (16) ""
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x5000001,
    root 0x6c6, subw 0x0, time 179411, (43,85), root:(512,380),
    state 0x54, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x5000001,
    root 0x6c6, subw 0x0, time 179414, (43,85), root:(512,380),
    state 0x50, keycode 55 (keysym 0x76, v), same_screen YES,
    XLookupString gives 1 bytes: (76) "v"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x5000001,
    root 0x6c6, subw 0x0, time 179435, (43,85), root:(512,380),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

I also looked at the output of the log for the target qube, and that was interesting;

==> /var/log/qubes/guid.personal.log <==
connect: No such file or directory
connect: No such file or directory

Tried with a couple other qubes and same output. Does that file name (guid.personal.log) mean sys-gui is enabled?

Thanks again!

You could also see if it is being blocked by qrexec policy: Look at sudo journalctl -b --follow and then try to paste into a VM. Look for something like qrexec: qubes.ClipboardPaste: ... denied: denied by policy....