xpra icon
Bug tracker and wiki

Opened 6 weeks ago

Last modified 3 weeks ago

#2882 new defect

Sometimes focus does not switch between applications

Reported by: stdedos Owned by: stdedos
Priority: minor Milestone: 4.1
Component: client Version: 3.0.x
Keywords: Cc:

Description (last modified by stdedos)

A more generic issue of the #2852 seems to be this:

"Xpra-Python3-x86_64_4.1-r27519\xpra_cmd" attach ssh://user@ip/3 --ssh="plink -ssh -agent" --modal-windows=no --title="@title@ on @@/@server-display@" --headerbar=off --opengl=no --bandwidth-limit=6Mbps

2020-09-22 11:22:34,845 Xpra GTK3 client version 4.1-r27519 64-bit
2020-09-22 11:22:34,852  running on Microsoft Windows 10
2020-09-22 11:22:38,001 GStreamer version 1.18.0 for Python 3.8.5 64-bit
2020-09-22 11:22:38,485 created named pipe '\\.\pipe\Xpra\19820'
2020-09-22 11:22:38,899 keyboard layout code 0x409
2020-09-22 11:22:38,900 identified as 'United States - English' : us
2020-09-22 11:22:39,613  keyboard settings: layout=us
2020-09-22 11:22:39,618  desktop size is 4160x1440 with 1 screen:
2020-09-22 11:22:39,618   Default (1100x381 mm - DPI: 96x96) workarea: 4160x1400
2020-09-22 11:22:39,618     Generic PnP Monitor 1600x900 at 0x534 (309x174 mm - DPI: 131x131) workarea: 1600x860 at 0x534
2020-09-22 11:22:39,619     C32JG5x 2560x1440 at 1600x0 (697x392 mm - DPI: 93x93) workarea: 2560x1400 at 1600x0
2020-09-22 11:22:44,223 enabled remote logging
2020-09-22 11:22:44,226 Xpra GTK3 X11 server version 3.0.10-r26630 64-bit
2020-09-22 11:22:44,227  running on Linux Ubuntu 16.04 xenial
2020-09-22 11:22:44,240 Attached to ip:22
2020-09-22 11:22:44,242  (press Control-C to detach)


(xpra_cmd:19820): Pango-WARNING **: 11:22:45.190: couldn't load font "Bitstream Vera Sans Not-Rotated 14.662109375", falling back to "Sans Not-Rotated 14.662109375", expect ugly output.
2020-09-22 11:22:46,301 UI thread is now blocked
2020-09-22 11:22:46,575 sound output using 'opus' audio codec
2020-09-22 11:22:47,082 UI thread is running again, resuming
2020-09-22 12:07:08,270 Warning: failed to set clipboard data
2020-09-22 12:07:08,273  OpenClipboard: too many failed attempts, giving up
2020-09-22 12:08:02,218 Warning: failed to set clipboard data
2020-09-22 12:08:02,221  OpenClipboard: too many failed attempts, giving up
2020-09-22 12:08:23,807 Warning: failed to set clipboard data
2020-09-22 12:08:23,810  OpenClipboard: too many failed attempts, giving up
2020-09-22 12:08:54,318 Warning: failed to set clipboard data
2020-09-22 12:08:54,324  OpenClipboard: too many failed attempts, giving up
2020-09-22 12:09:13,920 Warning: failed to set clipboard data
2020-09-22 12:09:13,923  OpenClipboard: too many failed attempts, giving up
2020-09-22 12:09:49,983 Warning: failed to set clipboard data
2020-09-22 12:09:49,985  OpenClipboard: too many failed attempts, giving up
2020-09-22 12:13:47,212 Warning: failed to set clipboard data
2020-09-22 12:13:47,215  OpenClipboard: too many failed attempts, giving up
2020-09-22 12:14:09,962 Warning: failed to set clipboard data
2020-09-22 12:14:09,965  OpenClipboard: too many failed attempts, giving up
2020-09-22 12:15:27,532 Warning: failed to set clipboard data
2020-09-22 12:15:27,535  OpenClipboard: too many failed attempts, giving up
2020-09-22 12:18:35,283 Warning: failed to set clipboard data
2020-09-22 12:18:35,289  OpenClipboard: too many failed attempts, giving up
2020-09-22 12:34:52,913 Warning: failed to set clipboard data
2020-09-22 12:34:52,916  OpenClipboard: too many failed attempts, giving up
2020-09-22 13:38:30,531 system is suspending
2020-09-22 13:38:40,532 system resumed, was suspended for 9
2020-09-22 13:45:41,008 unknown string message: 0xc0a1 / 0x5 / 0x0
2020-09-22 14:17:09,701 enabled debugging for:
2020-09-22 14:17:09,709  - Logger(xpra.client.client_window_base, focus)
2020-09-22 14:17:09,714  - Logger(xpra.client.gtk_base.gtk_client_window_base, focus, grab)
2020-09-22 14:17:09,717  - Logger(xpra.client.mixins.window_manager, focus)
2020-09-22 14:17:15,560 focus-out-event for wid=1
2020-09-22 14:17:15,583 do_xpra_focus_out_event(<Gdk.EventFocus object at 0x00000000008089f0 (void at 0x00000000059f3840)>)
2020-09-22 14:17:15,594 ClientWindow(1) focus_change(ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=False, _been_mapped=True
2020-09-22 14:17:15,597 update_focus(1, False) focused=1, grabbed=None
2020-09-22 14:17:15,600 focus-in-event for wid=4187
2020-09-22 14:17:15,612 do_xpra_focus_in_event(<Gdk.EventFocus object at 0x00000000008089f0 (void at 0x00000000059f3c60)>) been_mapped=True
2020-09-22 14:17:15,617 ClientWindow(4187) focus_change(ClientWindow(4187), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=True, _been_mapped=True
2020-09-22 14:17:15,619 update_focus(4187, True) focused=None, grabbed=None
2020-09-22 14:17:15,620 send_focus(4187)
2020-09-22 14:17:15,626 recheck_focus() wid=1, focused=4187, latest=False
2020-09-22 14:17:15,631 recheck_focus() wid=4187, focused=4187, latest=True
2020-09-22 14:17:18,926 focus-out-event for wid=4187
2020-09-22 14:17:18,952 do_xpra_focus_out_event(<Gdk.EventFocus object at 0x000000000075d6d0 (void at 0x00000000059f39a0)>)
2020-09-22 14:17:18,958 ClientWindow(4187) focus_change(ClientWindow(4187), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=False, _been_mapped=True
2020-09-22 14:17:18,966 update_focus(4187, False) focused=4187, grabbed=None
2020-09-22 14:17:18,971 focus-in-event for wid=1
2020-09-22 14:17:18,976 do_xpra_focus_in_event(<Gdk.EventFocus object at 0x000000000075d6d0 (void at 0x00000000059f3a50)>) been_mapped=True
2020-09-22 14:17:18,979 ClientWindow(1) focus_change(ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=True, _been_mapped=True
2020-09-22 14:17:18,982 update_focus(1, True) focused=None, grabbed=None
2020-09-22 14:17:18,987 send_focus(1)
2020-09-22 14:17:18,992 recheck_focus() wid=4187, focused=1, latest=False
2020-09-22 14:17:18,995 recheck_focus() wid=1, focused=1, latest=True
2020-09-22 14:17:30,529 disabled debugging for:
2020-09-22 14:17:30,535  - Logger(xpra.client.client_window_base, focus)
2020-09-22 14:17:30,538  - Logger(xpra.client.gtk_base.gtk_client_window_base, focus, grab)
2020-09-22 14:17:30,542  - Logger(xpra.client.mixins.window_manager, focus)

7397   │ 2020-09-22 14:17:30,935 enabled debugging for: Logger(xpra.x11.models.window, x11, window, focus), Logger(xpra.x11.gtk_x11.send_wm, x11, focus), Logger(xpra.x11.server, server, focus), Logger(xpra.x11.gtk_x11.wm, x11, window, focus), Logger(xpra.server.mixins.window_server,
       │  focus), Logger(xpra.x11.gtk_x11.world_window, x11, window, focus)
7398   │ 2020-09-22 14:17:31,926 New unix-domain connection received
7399   │ 2020-09-22 14:17:31,926 New unix-domain connection received
7400   │ 2020-09-22 14:17:31,927  on '/run/user/1000/xpra/linux-pc-3'
7401   │ 2020-09-22 14:17:31,927  on '/run/xpra/linux-pc-3'
7402   │ 2020-09-22 14:17:33,758 client  35 @40.711 focus-out-event for wid=1
7403   │ 2020-09-22 14:17:33,791 client  35 @40.734 do_xpra_focus_out_event(<Gdk.EventFocus object at 0x00000000008089f0 (void at 0x00000000059f3840)>)
7404   │ 2020-09-22 14:17:33,799 client  35 @40.745 ClientWindow(1) focus_change(ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=False, _been_mapped=True
7405   │ 2020-09-22 14:17:33,799 client  35 @40.748 update_focus(1, False) focused=1, grabbed=None
7406   │ 2020-09-22 14:17:33,799 client  35 @40.752 focus-in-event for wid=4187
7407   │ 2020-09-22 14:17:33,817 client  35 @40.763 do_xpra_focus_in_event(<Gdk.EventFocus object at 0x00000000008089f0 (void at 0x00000000059f3c60)>) been_mapped=True
7408   │ 2020-09-22 14:17:33,817 client  35 @40.769 ClientWindow(4187) focus_change(ClientWindow(4187), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=True, _been_mapped=True
7409   │ 2020-09-22 14:17:33,817 client  35 @40.770 update_focus(4187, True) focused=None, grabbed=None
7410   │ 2020-09-22 14:17:33,818 client  35 @40.772 send_focus(4187)
7411   │ 2020-09-22 14:17:33,818 process_focus: wid=4187
7412   │ 2020-09-22 14:17:33,818 focus wid=4187 has_focus=1
7413   │ 2020-09-22 14:17:33,818 focus: giving focus to WindowModel(0x600016)
7414   │ 2020-09-22 14:17:33,819 Giving focus to 0x600016
7415   │ 2020-09-22 14:17:33,820 ... using XSetInputFocus
7416   │ 2020-09-22 14:17:33,820 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(35 : Protocol(unix-domain socket:/run/user/1000/xpra/linux-pc-3))>
7417   │ 2020-09-22 14:17:33,837 client  35 @40.777 recheck_focus() wid=1, focused=4187, latest=False
7418   │ 2020-09-22 14:17:33,837 client  35 @40.782 recheck_focus() wid=4187, focused=4187, latest=True
7419   │ 2020-09-22 14:17:34,560 focus wid=4187 has_focus=4187
7420   │ 2020-09-22 14:17:34,561 focus wid=4187 has_focus=4187
7421   │ 2020-09-22 14:17:34,748 focus wid=4187 has_focus=4187
7422   │ 2020-09-22 14:17:34,820 focus wid=4187 has_focus=4187
7423   │ 2020-09-22 14:17:34,858 focus wid=4187 has_focus=4187
7424   │ 2020-09-22 14:17:34,886 focus wid=4187 has_focus=4187
7425   │ 2020-09-22 14:17:37,122 client  35 @44.077 focus-out-event for wid=4187
7426   │ 2020-09-22 14:17:37,159 client  35 @44.103 do_xpra_focus_out_event(<Gdk.EventFocus object at 0x000000000075d6d0 (void at 0x00000000059f39a0)>)
7427   │ 2020-09-22 14:17:37,159 client  35 @44.109 ClientWindow(4187) focus_change(ClientWindow(4187), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=False, _been_mapped=True
7428   │ 2020-09-22 14:17:37,178 client  35 @44.117 update_focus(4187, False) focused=4187, grabbed=None
7429   │ 2020-09-22 14:17:37,200 client  35 @44.122 focus-in-event for wid=1
7430   │ 2020-09-22 14:17:37,200 client  35 @44.128 do_xpra_focus_in_event(<Gdk.EventFocus object at 0x000000000075d6d0 (void at 0x00000000059f3a50)>) been_mapped=True
7431   │ 2020-09-22 14:17:37,200 client  35 @44.131 ClientWindow(1) focus_change(ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=True, _been_mapped=True
7432   │ 2020-09-22 14:17:37,201 client  35 @44.133 update_focus(1, True) focused=None, grabbed=None
7433   │ 2020-09-22 14:17:37,201 client  35 @44.138 send_focus(1)
7434   │ 2020-09-22 14:17:37,201 process_focus: wid=1
7435   │ 2020-09-22 14:17:37,201 focus wid=1 has_focus=4187
7436   │ 2020-09-22 14:17:37,201 client  35 @44.143 recheck_focus() wid=4187, focused=1, latest=False
7437   │ 2020-09-22 14:17:37,201 focus: giving focus to WindowModel(0x80000a)
7438   │ 2020-09-22 14:17:37,201 client  35 @44.146 recheck_focus() wid=1, focused=1, latest=True
7439   │ 2020-09-22 14:17:37,202 Giving focus to 0x80000a
7440   │ 2020-09-22 14:17:37,202 ... using XSetInputFocus
7441   │ 2020-09-22 14:17:37,202 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(35 : Protocol(unix-domain socket:/run/user/1000/xpra/linux-pc-3))>
7442   │ 2020-09-22 14:17:38,416 focus wid=1 has_focus=1
7443   │ 2020-09-22 14:17:38,504 focus wid=1 has_focus=1
7444   │ 2020-09-22 14:17:38,576 focus wid=1 has_focus=1
7445   │ 2020-09-22 14:17:38,662 focus wid=1 has_focus=1
7446   │ 2020-09-22 14:17:38,734 focus wid=1 has_focus=1
7447   │ 2020-09-22 14:17:38,817 focus wid=1 has_focus=1
7448   │ 2020-09-22 14:17:38,898 focus wid=1 has_focus=1
7449   │ 2020-09-22 14:17:38,971 focus wid=1 has_focus=1
7450   │ 2020-09-22 14:17:39,040 focus wid=1 has_focus=1
7451   │ 2020-09-22 14:17:39,126 focus wid=1 has_focus=1
7452   │ 2020-09-22 14:17:39,188 focus wid=1 has_focus=1
7453   │ 2020-09-22 14:17:39,269 focus wid=1 has_focus=1
7454   │ 2020-09-22 14:17:39,309 focus wid=1 has_focus=1
7455   │ 2020-09-22 14:17:39,501 focus wid=1 has_focus=1
7456   │ 2020-09-22 14:17:39,583 focus wid=1 has_focus=1
7457   │ 2020-09-22 14:17:39,718 focus wid=1 has_focus=1
7458   │ 2020-09-22 14:17:40,898 focus wid=1 has_focus=1
7459   │ 2020-09-22 14:17:40,981 focus wid=1 has_focus=1
7460   │ 2020-09-22 14:17:41,001 focus wid=1 has_focus=1
7461   │ 2020-09-22 14:17:41,051 focus wid=1 has_focus=1
7462   │ 2020-09-22 14:17:41,079 focus wid=1 has_focus=1
7463   │ 2020-09-22 14:17:41,147 focus wid=1 has_focus=1
7464   │ 2020-09-22 14:17:41,255 focus wid=1 has_focus=1
7465   │ 2020-09-22 14:17:41,333 focus wid=1 has_focus=1
7466   │ 2020-09-22 14:17:41,426 focus wid=1 has_focus=1
7467   │ 2020-09-22 14:17:41,527 focus wid=1 has_focus=1
7468   │ 2020-09-22 14:17:41,731 focus wid=1 has_focus=1
7469   │ 2020-09-22 14:17:41,802 focus wid=1 has_focus=1
7470   │ 2020-09-22 14:17:41,882 focus wid=1 has_focus=1
7471   │ 2020-09-22 14:17:41,962 focus wid=1 has_focus=1
7472   │ 2020-09-22 14:17:42,034 focus wid=1 has_focus=1
7473   │ 2020-09-22 14:17:42,115 focus wid=1 has_focus=1
7474   │ 2020-09-22 14:17:42,188 focus wid=1 has_focus=1
7475   │ 2020-09-22 14:17:42,267 focus wid=1 has_focus=1
7476   │ 2020-09-22 14:17:42,337 focus wid=1 has_focus=1
7477   │ 2020-09-22 14:17:42,384 focus wid=1 has_focus=1
7478   │ 2020-09-22 14:17:42,428 focus wid=1 has_focus=1
7479   │ 2020-09-22 14:17:42,478 focus wid=1 has_focus=1
7480   │ 2020-09-22 14:17:42,505 focus wid=1 has_focus=1
7481   │ 2020-09-22 14:17:42,564 focus wid=1 has_focus=1
7482   │ 2020-09-22 14:17:42,598 focus wid=1 has_focus=1
7483   │ 2020-09-22 14:17:42,640 focus wid=1 has_focus=1
7484   │ 2020-09-22 14:17:42,700 focus wid=1 has_focus=1
7485   │ 2020-09-22 14:17:42,758 focus wid=1 has_focus=1
7486   │ 2020-09-22 14:17:42,843 focus wid=1 has_focus=1
7487   │ 2020-09-22 14:17:42,928 focus wid=1 has_focus=1
7488   │ 2020-09-22 14:17:42,958 focus wid=1 has_focus=1
7489   │ 2020-09-22 14:17:43,026 focus wid=1 has_focus=1
7490   │ 2020-09-22 14:17:43,038 focus wid=1 has_focus=1
7491   │ 2020-09-22 14:17:43,123 focus wid=1 has_focus=1
7492   │ 2020-09-22 14:17:43,198 focus wid=1 has_focus=1
7493   │ 2020-09-22 14:17:43,288 focus wid=1 has_focus=1
7494   │ 2020-09-22 14:17:43,470 New unix-domain connection received
7495   │ 2020-09-22 14:17:43,470  on '/run/user/1000/xpra/linux-pc-3'
7496   │ 2020-09-22 14:17:43,477 disabled debugging for: Logger(xpra.x11.models.window, x11, window, focus), Logger(xpra.x11.gtk_x11.send_wm, x11, focus), Logger(xpra.x11.server, server, focus), Logger(xpra.x11.gtk_x11.wm, x11, window, focus), Logger(xpra.server.mixins.window_server
       │ , focus), Logger(xpra.x11.gtk_x11.world_window, x11, window, focus)
7497   │ 2020-09-22 14:17:44,468 New unix-domain connection received
7498   │ 2020-09-22 14:17:44,468  on '/run/user/1000/xpra/linux-pc-3'
7499   │ 2020-09-22 14:17:44,469 New unix-domain connection received
7500   │ 2020-09-22 14:17:44,469  on '/run/xpra/linux-pc-3'
7501   │ 2020-09-22 14:17:48,701 New unix-domain connection received
7502   │ 2020-09-22 14:17:48,701  on '/run/user/1000/xpra/linux-pc-3'
7503   │ 2020-09-22 14:17:48,727 client  35 @55.680 disabled debugging for:
7504   │ 2020-09-22 14:17:48,739 client  35 @55.686  - Logger(xpra.client.client_window_base, focus)
7505   │ 2020-09-22 14:17:48,739 client  35 @55.689  - Logger(xpra.client.gtk_base.gtk_client_window_base, focus, grab)
7506   │ 2020-09-22 14:17:48,739 client  35 @55.693  - Logger(xpra.client.mixins.window_manager, focus)
7507   │ 2020-09-22 14:17:49,699 New unix-domain connection received
7508   │ 2020-09-22 14:17:49,699  on '/run/user/1000/xpra/linux-pc-3'
7509   │ 2020-09-22 14:17:49,699 New unix-domain connection received
7510   │ 2020-09-22 14:17:49,699  on '/run/xpra/linux-pc-3'

On a long-lived, continuously used server, at "some occasions", the following is observed:

I am switching windows (gnome-terminal to sublime-text), and I issue the Ctrl+Shift+R shortcut.
I expect that Sublime will intercept it, but instead Terminal does.
On the Windows side, the GUI clearly indicates that the focus is with the Sublime.

(Then I enabled debugging and re-did this again).

xpra control :3 debug enable focus
xpra control :3 client debug enable focus
xpra control :3 debug disable focus
xpra control :3 client debug disable focus

The workaround seems to be to focus a non-xpra window (i.e. gnome-terminal > notepad > sublime). I don't know if mixing among different-server xpra windows would work also.

Apologies if this is a duplicate, but I wanted to avoid mixing tickets

Attachments (1)

Xpra_cmd_2020-10-07_13-52-59.png (286.5 KB) - added by stdedos 3 weeks ago.

Download all attachments as: .zip

Change History (8)

comment:1 Changed 4 weeks ago by Antoine Martin

Owner: changed from Antoine Martin to stdedos

There's nothing suspicious at all in this log, the last focus switch happens here:

7425   │ 2020-09-22 14:17:37,122 client  35 @44.077 focus-out-event for wid=4187
7426   │ 2020-09-22 14:17:37,159 client  35 @44.103 do_xpra_focus_out_event(<Gdk.EventFocus object at 0x000000000075d6d0 (void at 0x00000000059f39a0)>)
7427   │ 2020-09-22 14:17:37,159 client  35 @44.109 ClientWindow(4187) focus_change(ClientWindow(4187), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=False, _been_mapped=True
7428   │ 2020-09-22 14:17:37,178 client  35 @44.117 update_focus(4187, False) focused=4187, grabbed=None
7429   │ 2020-09-22 14:17:37,200 client  35 @44.122 focus-in-event for wid=1
7430   │ 2020-09-22 14:17:37,200 client  35 @44.128 do_xpra_focus_in_event(<Gdk.EventFocus object at 0x000000000075d6d0 (void at 0x00000000059f3a50)>) been_mapped=True
7431   │ 2020-09-22 14:17:37,200 client  35 @44.131 ClientWindow(1) focus_change(ClientWindow(1), <GParamBoolean 'has-toplevel-focus'>) has-toplevel-focus=True, _been_mapped=True
7432   │ 2020-09-22 14:17:37,201 client  35 @44.133 update_focus(1, True) focused=None, grabbed=None
7433   │ 2020-09-22 14:17:37,201 client  35 @44.138 send_focus(1)
7434   │ 2020-09-22 14:17:37,201 process_focus: wid=1
7435   │ 2020-09-22 14:17:37,201 focus wid=1 has_focus=4187
7436   │ 2020-09-22 14:17:37,201 client  35 @44.143 recheck_focus() wid=4187, focused=1, latest=False
7437   │ 2020-09-22 14:17:37,201 focus: giving focus to WindowModel(0x80000a)
7438   │ 2020-09-22 14:17:37,201 client  35 @44.146 recheck_focus() wid=1, focused=1, latest=True
7439   │ 2020-09-22 14:17:37,202 Giving focus to 0x80000a
7440   │ 2020-09-22 14:17:37,202 ... using XSetInputFocus
7441   │ 2020-09-22 14:17:37,202 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(35 : Protocol(unix-domain socket:/run/user/1000/xpra/linux-pc-3))>
7442   │ 2020-09-22 14:17:38,416 focus wid=1 has_focus=1

I assume that the terminal is wid 1 and sublime-text is wid 4187.
The terminal gets the focus and not sublime text.

If I can't reproduce this, it's unlikely to get fixed..

comment:2 Changed 4 weeks ago by stdedos

Is there a not-so-verbose keyboard events logger that fires only on sending/receiving a finalized shortcut (and not that barrage of text that comes when sneezing at kb/mouse)?

I could also try to track it closer - but I still don't see the focus change moment. If I had to draw a line between wid=1 and wid=4187 would be this:

# focus wid=1
7435   │ 2020-09-22 14:17:37,201 focus wid=1 has_focus=4187
# focus wid=4187

I guess for you this makes sense, but for me it doesn't. I read "focus on wid=1 is on the wid=4187" (but why use "wid" twice?), but I could also read "focus is on GlobalWindow (wid=1) and on the wid=4187" (which makes no sense - double focus?!?).

Is there something "more clear" like change_focus_to(wid=4187)?

comment:3 Changed 4 weeks ago by Antoine Martin

Is there a not-so-verbose keyboard events logger that fires only on sending/receiving a finalized shortcut (and not that barrage of text that comes when sneezing at kb/mouse)?

No, but feel free to create a ticket for that.
Until then, you can use grep to isolate the events you really care about.

focus wid=1 has_focus=4187
I guess for you this makes sense, but for me it doesn't.

focus wid 1, wid 4187 currently has the focus

comment:4 Changed 4 weeks ago by stdedos

So, no - neither wid=1 makes sense, nor wid=4187:

xwininfo: Window id: 0x80000a "Terminal"
xwininfo: Window id: 0x600016 "Sublime Text"
$ xwininfo -id 1
X Error: 9: Bad Drawable: 0x1
  Request Major code: 14
  Request serial number: 3
xwininfo: error: No such window with id 0x1.
$ xwininfo -id 4187
X Error: 9: Bad Drawable: 0x105b
  Request Major code: 14
  Request serial number: 3
xwininfo: error: No such window with id 0x105b.

I really think xpra fails or forgets to change focus on "some cases", and it is happening right now as I write this.


I tried re-initializing, taking focus to native windows, give it to terminal - nothing.
That wid=1 WANTS the focus, and then gives it to "Terminal" instead (but without seeming to update that "this wid=1" is not the real window that is focused instead)

2020-10-07 13:55:06,482 reset_focus() 6048 / WindowModel(0x180004c) had focus (toplevel=WorldWindow(0x40000d))
2020-10-07 13:55:06,484 reset_x_focus: widget with focus: None
2020-10-07 13:55:06,485 Take Focus -> world window
2020-10-07 13:55:06,485 sending WM_TAKE_FOCUS: 0x40000d, X11 timestamp=3476874623
2020-10-07 13:55:06,542 process_focus: wid=5611
2020-10-07 13:55:06,542 focus wid=5611 has_focus=0
2020-10-07 13:55:06,542 focus: giving focus to WindowModel(0x103968e)
2020-10-07 13:55:06,544 Giving focus to 0x103968e
2020-10-07 13:55:06,545 ... using XSetInputFocus
2020-10-07 13:55:06,546 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:07,055 process_focus: wid=0
2020-10-07 13:55:07,055 focus wid=0 has_focus=5611
2020-10-07 13:55:07,055 reset_focus() 5611 / WindowModel(0x103968e) had focus (toplevel=WorldWindow(0x40000d))
2020-10-07 13:55:07,056 reset_x_focus: widget with focus: None
2020-10-07 13:55:07,056 Take Focus -> world window
2020-10-07 13:55:07,057 sending WM_TAKE_FOCUS: 0x40000d, X11 timestamp=3476875195
2020-10-07 13:55:07,097 process_focus: wid=1
2020-10-07 13:55:07,097 focus wid=1 has_focus=0
2020-10-07 13:55:07,098 focus: giving focus to WindowModel(0x80000a)
2020-10-07 13:55:07,098 Giving focus to 0x80000a
2020-10-07 13:55:07,099 ... using XSetInputFocus
2020-10-07 13:55:07,099 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:09,469 process_focus: wid=6048
2020-10-07 13:55:09,470 focus wid=6048 has_focus=1
2020-10-07 13:55:09,470 focus: giving focus to WindowModel(0x180004c)
2020-10-07 13:55:09,471 Giving focus to 0x180004c
2020-10-07 13:55:09,473 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:09,756 focus wid=6048 has_focus=6048
2020-10-07 13:55:10,365 focus wid=6048 has_focus=6048
2020-10-07 13:55:10,488 focus wid=6048 has_focus=6048
2020-10-07 13:55:12,074 focus wid=6048 has_focus=6048
2020-10-07 13:55:16,238 focus wid=6048 has_focus=6048
2020-10-07 13:55:16,356 focus wid=6048 has_focus=6048
2020-10-07 13:55:16,468 focus wid=6048 has_focus=6048
2020-10-07 13:55:18,103 focus wid=6048 has_focus=6048
2020-10-07 13:55:19,895 process_focus: wid=1
2020-10-07 13:55:19,895 focus wid=1 has_focus=6048
2020-10-07 13:55:19,896 focus: giving focus to WindowModel(0x80000a)
2020-10-07 13:55:19,896 Giving focus to 0x80000a
2020-10-07 13:55:19,896 ... using XSetInputFocus
2020-10-07 13:55:19,897 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:22,536 process_focus: wid=0
2020-10-07 13:55:22,536 focus wid=0 has_focus=1
2020-10-07 13:55:22,536 reset_focus() 1 / WindowModel(0x80000a) had focus (toplevel=WorldWindow(0x40000d))
2020-10-07 13:55:22,537 reset_x_focus: widget with focus: None
2020-10-07 13:55:22,537 Take Focus -> world window
2020-10-07 13:55:22,538 sending WM_TAKE_FOCUS: 0x40000d, X11 timestamp=3476890676
2020-10-07 13:55:23,238 process_focus: wid=1
2020-10-07 13:55:23,238 focus wid=1 has_focus=0
2020-10-07 13:55:23,238 focus: giving focus to WindowModel(0x80000a)
2020-10-07 13:55:23,239 Giving focus to 0x80000a
2020-10-07 13:55:23,239 ... using XSetInputFocus
2020-10-07 13:55:23,239 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:35,854 process_focus: wid=6048
2020-10-07 13:55:35,854 focus wid=6048 has_focus=1
2020-10-07 13:55:35,854 focus: giving focus to WindowModel(0x180004c)
2020-10-07 13:55:35,855 Giving focus to 0x180004c
2020-10-07 13:55:35,856 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:40,408 focus wid=6048 has_focus=6048
2020-10-07 13:55:40,799 focus wid=6048 has_focus=6048
2020-10-07 13:55:40,890 focus wid=6048 has_focus=6048
2020-10-07 13:55:40,958 focus wid=6048 has_focus=6048
2020-10-07 13:55:56,904 process_focus: wid=1
2020-10-07 13:55:56,904 focus wid=1 has_focus=6048
2020-10-07 13:55:56,905 focus: giving focus to WindowModel(0x80000a)
2020-10-07 13:55:56,906 Giving focus to 0x80000a
2020-10-07 13:55:56,907 ... using XSetInputFocus
2020-10-07 13:55:56,908 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:57,413 focus wid=1 has_focus=1
2020-10-07 13:55:57,720 focus wid=1 has_focus=1
2020-10-07 13:55:57,913 focus wid=1 has_focus=1
2020-10-07 13:55:57,917 focus wid=1 has_focus=1
2020-10-07 13:55:59,833 focus wid=1 has_focus=1
2020-10-07 13:55:59,920 focus wid=1 has_focus=1
2020-10-07 13:55:59,933 focus wid=1 has_focus=1
2020-10-07 13:56:00,052 focus wid=1 has_focus=1
============================================================================================================================== giving focus to the browser
2020-10-07 13:55:06,482 reset_focus() 6048 / WindowModel(0x180004c) had focus (toplevel=WorldWindow(0x40000d))
2020-10-07 13:55:06,484 reset_x_focus: widget with focus: None
2020-10-07 13:55:06,485 Take Focus -> world window
2020-10-07 13:55:06,485 sending WM_TAKE_FOCUS: 0x40000d, X11 timestamp=3476874623
2020-10-07 13:55:06,542 process_focus: wid=5611
2020-10-07 13:55:06,542 focus wid=5611 has_focus=0
2020-10-07 13:55:06,542 focus: giving focus to WindowModel(0x103968e)
2020-10-07 13:55:06,544 Giving focus to 0x103968e
2020-10-07 13:55:06,545 ... using XSetInputFocus
2020-10-07 13:55:06,546 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:07,055 process_focus: wid=0
2020-10-07 13:55:07,055 focus wid=0 has_focus=5611
2020-10-07 13:55:07,055 reset_focus() 5611 / WindowModel(0x103968e) had focus (toplevel=WorldWindow(0x40000d))
2020-10-07 13:55:07,056 reset_x_focus: widget with focus: None
2020-10-07 13:55:07,056 Take Focus -> world window
2020-10-07 13:55:07,057 sending WM_TAKE_FOCUS: 0x40000d, X11 timestamp=3476875195
2020-10-07 13:55:07,097 process_focus: wid=1
2020-10-07 13:55:07,097 focus wid=1 has_focus=0
2020-10-07 13:55:07,098 focus: giving focus to WindowModel(0x80000a)
2020-10-07 13:55:07,098 Giving focus to 0x80000a
2020-10-07 13:55:07,099 ... using XSetInputFocus
2020-10-07 13:55:07,099 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:09,469 process_focus: wid=6048
2020-10-07 13:55:09,470 focus wid=6048 has_focus=1
2020-10-07 13:55:09,470 focus: giving focus to WindowModel(0x180004c)
2020-10-07 13:55:09,471 Giving focus to 0x180004c
2020-10-07 13:55:09,473 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:09,756 focus wid=6048 has_focus=6048
2020-10-07 13:55:10,365 focus wid=6048 has_focus=6048
2020-10-07 13:55:10,488 focus wid=6048 has_focus=6048
2020-10-07 13:55:12,074 focus wid=6048 has_focus=6048
2020-10-07 13:55:16,238 focus wid=6048 has_focus=6048
2020-10-07 13:55:16,356 focus wid=6048 has_focus=6048
2020-10-07 13:55:16,468 focus wid=6048 has_focus=6048
2020-10-07 13:55:18,103 focus wid=6048 has_focus=6048
2020-10-07 13:55:19,895 process_focus: wid=1
2020-10-07 13:55:19,895 focus wid=1 has_focus=6048
2020-10-07 13:55:19,896 focus: giving focus to WindowModel(0x80000a)
2020-10-07 13:55:19,896 Giving focus to 0x80000a
2020-10-07 13:55:19,896 ... using XSetInputFocus
2020-10-07 13:55:19,897 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:22,536 process_focus: wid=0
2020-10-07 13:55:22,536 focus wid=0 has_focus=1
2020-10-07 13:55:22,536 reset_focus() 1 / WindowModel(0x80000a) had focus (toplevel=WorldWindow(0x40000d))
2020-10-07 13:55:22,537 reset_x_focus: widget with focus: None
2020-10-07 13:55:22,537 Take Focus -> world window
2020-10-07 13:55:22,538 sending WM_TAKE_FOCUS: 0x40000d, X11 timestamp=3476890676
2020-10-07 13:55:23,238 process_focus: wid=1
2020-10-07 13:55:23,238 focus wid=1 has_focus=0
2020-10-07 13:55:23,238 focus: giving focus to WindowModel(0x80000a)
2020-10-07 13:55:23,239 Giving focus to 0x80000a
2020-10-07 13:55:23,239 ... using XSetInputFocus
2020-10-07 13:55:23,239 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:35,854 process_focus: wid=6048
2020-10-07 13:55:35,854 focus wid=6048 has_focus=1
2020-10-07 13:55:35,854 focus: giving focus to WindowModel(0x180004c)
2020-10-07 13:55:35,855 Giving focus to 0x180004c
2020-10-07 13:55:35,856 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:40,408 focus wid=6048 has_focus=6048
2020-10-07 13:55:40,799 focus wid=6048 has_focus=6048
2020-10-07 13:55:40,890 focus wid=6048 has_focus=6048
2020-10-07 13:55:40,958 focus wid=6048 has_focus=6048
2020-10-07 13:55:56,904 process_focus: wid=1
2020-10-07 13:55:56,904 focus wid=1 has_focus=6048
2020-10-07 13:55:56,905 focus: giving focus to WindowModel(0x80000a)
2020-10-07 13:55:56,906 Giving focus to 0x80000a
2020-10-07 13:55:56,907 ... using XSetInputFocus
2020-10-07 13:55:56,908 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(53 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 13:55:57,413 focus wid=1 has_focus=1
2020-10-07 13:55:57,720 focus wid=1 has_focus=1
2020-10-07 13:55:57,913 focus wid=1 has_focus=1
2020-10-07 13:55:57,917 focus wid=1 has_focus=1
2020-10-07 13:55:59,833 focus wid=1 has_focus=1
2020-10-07 13:55:59,920 focus wid=1 has_focus=1
2020-10-07 13:55:59,933 focus wid=1 has_focus=1
2020-10-07 13:56:00,052 focus wid=1 has_focus=1
Last edited 3 weeks ago by stdedos (previous) (diff)

comment:5 Changed 4 weeks ago by stdedos

Description: modified (diff)

Changed 3 weeks ago by stdedos

comment:6 Changed 3 weeks ago by stdedos

Okay, I verified that it's not that:

  • wid=1 WANTS focus

but rather

  • Jetbrains windows "forget to get focus"

as the shortcut is passed to whatever window happened to be last active within the xpra realm

2020-10-07 14:11:59,107 focus wid=6048 has_focus=0
2020-10-07 14:11:59,108 focus: giving focus to WindowModel(0x180004c)
2020-10-07 14:11:59,108 Giving focus to 0x180004c
2020-10-07 14:11:59,109 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(54 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
============================================================================================================== shortcut #1
2020-10-07 14:12:00,507 focus wid=6048 has_focus=6048
2020-10-07 14:12:00,701 focus wid=6048 has_focus=6048
^P2020-10-07 14:12:00,801 focus wid=6048 has_focus=6048
2020-10-07 14:12:03,154 focus wid=6048 has_focus=6048
============================================================================================================== shortcut #2
^P2020-10-07 14:12:03,255 focus wid=6048 has_focus=6048
2020-10-07 14:12:04,085 focus wid=6048 has_focus=6048
============================================================================================================== both go to wid="6048 / WindowModel(0x180004c)" (Terminal - the same one who's taking this output, as evident by the ^P)
2020-10-07 14:12:09,478 process_focus: wid=0
2020-10-07 14:12:09,478 focus wid=0 has_focus=6048
2020-10-07 14:12:09,479 reset_focus() 6048 / WindowModel(0x180004c) had focus (toplevel=WorldWindow(0x40000d))
2020-10-07 14:12:09,482 reset_x_focus: widget with focus: None
2020-10-07 14:12:09,483 Take Focus -> world window
2020-10-07 14:12:09,483 sending WM_TAKE_FOCUS: 0x40000d, X11 timestamp=3477897621
2020-10-07 14:12:09,555 process_focus: wid=6593
2020-10-07 14:12:09,555 focus wid=6593 has_focus=0
2020-10-07 14:12:09,555 focus: giving focus to WindowModel(0xe00007)
2020-10-07 14:12:09,556 Giving focus to 0xe00007
2020-10-07 14:12:09,557 ... using XSetInputFocus
2020-10-07 14:12:09,557 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(54 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 14:12:10,890 process_focus: wid=0
2020-10-07 14:12:10,890 focus wid=0 has_focus=6593
2020-10-07 14:12:10,890 reset_focus() 6593 / WindowModel(0xe00007) had focus (toplevel=WorldWindow(0x40000d))
2020-10-07 14:12:10,891 reset_x_focus: widget with focus: None
2020-10-07 14:12:10,891 Take Focus -> world window
2020-10-07 14:12:10,891 sending WM_TAKE_FOCUS: 0x40000d, X11 timestamp=3477899030
2020-10-07 14:12:11,002 process_focus: wid=6048
2020-10-07 14:12:11,002 focus wid=6048 has_focus=0
2020-10-07 14:12:11,003 focus: giving focus to WindowModel(0x180004c)
2020-10-07 14:12:11,003 Giving focus to 0x180004c
2020-10-07 14:12:11,004 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(54 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
============================================================================================================== shortcut #1
2020-10-07 14:12:11,670 focus wid=6048 has_focus=6048
2020-10-07 14:12:12,030 focus wid=6048 has_focus=6048
============================================================================================================== shortcut #2
2020-10-07 14:12:12,137 focus wid=6048 has_focus=6048
2020-10-07 14:12:12,269 focus wid=6048 has_focus=6048
============================================================================================================== both go to wid="6593 / WindowModel(0xe00007)" (Sublime Merge)
2020-10-07 14:12:14,316 process_focus: wid=0
2020-10-07 14:12:14,316 focus wid=0 has_focus=6048
2020-10-07 14:12:14,316 reset_focus() 6048 / WindowModel(0x180004c) had focus (toplevel=WorldWindow(0x40000d))
2020-10-07 14:12:14,317 reset_x_focus: widget with focus: None
2020-10-07 14:12:14,317 Take Focus -> world window
2020-10-07 14:12:14,317 sending WM_TAKE_FOCUS: 0x40000d, X11 timestamp=3477902456
2020-10-07 14:12:14,356 process_focus: wid=6593
2020-10-07 14:12:14,356 focus wid=6593 has_focus=0
2020-10-07 14:12:14,356 focus: giving focus to WindowModel(0xe00007)
2020-10-07 14:12:14,357 Giving focus to 0xe00007
2020-10-07 14:12:14,357 ... using XSetInputFocus
2020-10-07 14:12:14,357 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(54 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>
2020-10-07 14:12:18,904 process_focus: wid=1
2020-10-07 14:12:18,904 focus wid=1 has_focus=6593
2020-10-07 14:12:18,904 focus: giving focus to WindowModel(0x80000a)
2020-10-07 14:12:18,906 Giving focus to 0x80000a
2020-10-07 14:12:18,906 ... using XSetInputFocus
2020-10-07 14:12:18,908 focus: will set modified mask to (b'mod2',) using <bound method InputMixin.make_keymask_match of ClientConnection(54 : Protocol(unix-domain socket:/run/user/1000/xpra/usr-linux-3))>

Which makes this a direct duplicate of #2852.

comment:7 in reply to:  3 Changed 3 weeks ago by stdedos

Replying to Antoine Martin:

Is there a not-so-verbose keyboard events logger that fires only on sending/receiving a finalized shortcut (and not that barrage of text that comes when sneezing at kb/mouse)?

No, but feel free to create a ticket for that.

#2899

Note: See TracTickets for help on using tickets.