Closed nikolaof closed 6 months ago
Likely fixed in 6.0.1, which has been released
Hey, I'm trying to update the arch linux package, but for some reason the new release is not listed under https://www.xpra.org/src/
. Is there any reason for that?
@nikolaof there is, I forgot! (it's just a copy of the one from pypi) Done now.
I am closing this ticket as a duplicate of https://github.com/Xpra-org/xpra/issues/4201#issuecomment-2126189813
Feel free to re-open if you can reproduce with 6.0.1
Ok. After updating, seems to be better but not perfect. The lines are fine when scrolling but still for some reason I'm experiencing some color changing when moving the mouse around the window.
for example the code panel in the image switch from darker to lighter and vice versa. Somthing like flickering.
That's likely to be a colourspace issue (#3837), but I have no idea which codecs Arch enables.
Having the server's -d compress
output corresponding to the problematic screen updates would help us narrow it down. (also knowing whether the window uses opengl rendering or not - and whether using --opengl=no
/ --opengl=force
changes anything).
Enabling debug for compress I'm getting a huge such a list. Personally I cannot debug this :) What should we look for? I mean how the distortions/flickering will look like ?
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,237 compress: 13.7ms for 912x955 pixels at 48,82 for wid=1 using webp with ratio 1.5% ( 3403KB to 50KB), sequence 643, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 69, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 69, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,253 compress: 13.5ms for 912x955 pixels at 48,82 for wid=1 using webp with ratio 1.5% ( 3403KB to 50KB), sequence 644, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 69, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 69, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,270 compress: 13.6ms for 912x955 pixels at 48,82 for wid=1 using webp with ratio 1.5% ( 3403KB to 50KB), sequence 645, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 69, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 69, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,288 compress: 14.6ms for 912x955 pixels at 48,82 for wid=1 using webp with ratio 1.5% ( 3403KB to 50KB), sequence 646, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 69, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 69, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,305 compress: 15.1ms for 912x955 pixels at 48,82 for wid=1 using webp with ratio 1.5% ( 3403KB to 50KB), sequence 647, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 69, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 69, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,322 compress: 15.5ms for 912x955 pixels at 48,82 for wid=1 using webp with ratio 1.5% ( 3403KB to 50KB), sequence 648, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 69, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 69, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,338 compress: 14.2ms for 912x955 pixels at 48,82 for wid=1 using webp with ratio 1.5% ( 3403KB to 50KB), sequence 649, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 69, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 69, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,353 compress: 13.2ms for 912x955 pixels at 48,82 for wid=1 using webp with ratio 1.5% ( 3403KB to 50KB), sequence 650, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 69, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 69, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,372 compress: 14.7ms for 912x955 pixels at 48,82 for wid=1 using webp with ratio 1.5% ( 3403KB to 50KB), sequence 651, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 69, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 69, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,387 compress: 13.1ms for 912x955 pixels at 48,82 for wid=1 using webp with ratio 1.5% ( 3403KB to 50KB), sequence 652, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 69, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 69, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,455 compress: 0.1ms for 2x19 pixels at 118,309 for wid=1 using rgb24 with ratio 100.0% ( 1KB to 1KB), sequence 653, client_options={'rgb_format': 'BGRX', 'encoder': 'argb', 'flush': 0}, options={'quality': 100, 'speed': 33, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,606 compress: 3.0ms for 960x34 pixels at 0,25 for wid=1 using webp with ratio 10.8% ( 128KB to 14KB), sequence 654, client_options={'rgb_format': 'BGRX', 'quality': 100, 'encoder': 'webp', 'flush': 0}, options={'optimize': False, 'auto_refresh': True, 'quality': 100, 'speed': 50, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
May 31 09:10:17 vscode xpra[2230]: 2024-05-31 09:10:17,955 compress: 0.1ms for 2x19 pixels at 118,309 for wid=1 using rgb24 with ratio 100.0% ( 1KB to 1KB), sequence 655, client_options={'rgb_format': 'BGRX', 'encoder': 'argb', 'flush': 0}, options={'quality': 100, 'speed': 39, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
Also, I tried to use both of the --opengl
flags you mentioned in the client side and didn't change anything.
These 912x955
pixel screen updates seem to be updating almost the entire window since 'window-size': (960, 1059)
Every single one of them is using webp
with the exact same key settings: 'quality': 69, 'speed': 33
Except for this one which is the auto-refresh:
options={'optimize': False, 'auto_refresh': True, 'quality': 100, 'speed': 50, ... 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
My guess is that xpra should be sending only lossless screen updates, but it is sending lossy subsampled (YUV420P
) screen updates instead because your application is detected as: 'content-type': 'browser'
- for whatever reason.
Raising the min-quality
is a bad workaround (a band aid that will affect all applications), a better one is to ensure that your application is correctly detected as text
content type.
Is there a way to modify how the application is detected? I mean the actual application is the Visual Studio Code. As far as I know is based on web technologies like electron. Maybe it makes sense that it detects it as web browser.
Is there a way to modify how the application is detected?
See: https://github.com/Xpra-org/xpra/tree/master/fs/etc/xpra/content-type https://github.com/Xpra-org/xpra/tree/master/fs/etc/xpra/content-parent https://github.com/Xpra-org/xpra/tree/master/fs/etc/xpra/content-categories
Thanks a lot for the links. So according to the xprop
results of the window (see bellow) I've modified the following files.
_XPRA_WID(CARDINAL) = 2
_NET_WM_DESKTOP(CARDINAL) = 1
_NET_WM_STATE(ATOM) =
WM_STATE(WM_STATE):
window state: Normal
icon window: 0x0
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
window id # of group leader: 0x1200012
_GTK_THEME_VARIANT(UTF8_STRING) =
_NET_FRAME_EXTENTS(CARDINAL) = 0, 0, 20, 0
WM_COMMAND(STRING) = { "/opt/visual-studio-code-insiders/code-insiders --disable-gpu --no-sandbox" }
_NET_WM_BYPASS_COMPOSITOR(CARDINAL) = 2
XID(CARDINAL) = 68764424
XdndAware(ATOM) = BITMAP
WM_WINDOW_ROLE(STRING) = "browser-window"
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 18874504, 18874505
_NET_WM_USER_TIME(CARDINAL) = 3797242
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x1200087
WM_CLIENT_LEADER(WINDOW): window id # 0x1200001
_NET_WM_PID(CARDINAL) = 37433
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLIENT_MACHINE(STRING) = "thinkpad"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
program specified location: 0, 0
program specified minimum size: 400 by 270
program specified maximum size: 32767 by 32767
program specified base size: 400 by 270
window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "code - insiders", "Code - Insiders"
WM_ICON_NAME(STRING) = "dependency_track.py - Untitled (Workspace) - Visual Studio Code - Insiders on vscode"
_NET_WM_ICON_NAME(UTF8_STRING) = "dependency_track.py - Untitled (Workspace) - Visual Studio Code - Insiders on vscode"
WM_NAME(STRING) = "dependency_track.py - Untitled (Workspace) - Visual Studio Code - Insiders on vscode"
_NET_WM_NAME(UTF8_STRING) = "dependency_track.py - Untitled (Workspace) - Visual Studio Code - Insiders on vscode"
$ cat 50_class.conf
################################################################################
# Match window class-instance
# aka WM_CLASS
...
...
class-instance:Code - Insiders=text
$ cat 70_commands.conf
################################################################################
# Match window command
# aka WM_COMMAND
command:/opt/visual-studio-code-insiders/code-insiders --disable-gpu --no-sandbox=text
After saving them, I restarted the server, but still it recognize it as browser
in the logs.
May 31 10:41:31 vscode xpra[5604]: 2024-05-31 10:41:31,769 compress: 23.9ms for 960x1059 pixels at 0,0 for wid=1 using webp with ratio 1.7% ( 3972KB to 70KB), sequence 304, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 61, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 61, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 10:41:31 vscode xpra[5604]: 2024-05-31 10:41:31,772 compress: 0.1ms for 18x18 pixels at 345,1039 for wid=1 using rgb24 with ratio 46.1% ( 2KB to 1KB), sequence 305, client_options={'rgb_format': 'BGRX', 'lz4': 2, 'encoder': 'argb', 'flush': 0}, options={'quality': 100, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
May 31 10:41:31 vscode xpra[5604]: 2024-05-31 10:41:31,807 compress: 15.5ms for 960x1059 pixels at 0,0 for wid=1 using webp with ratio 1.8% ( 3972KB to 70KB), sequence 306, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 61, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 61, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 10:41:31 vscode xpra[5604]: 2024-05-31 10:41:31,809 compress: 0.1ms for 603x3 pixels at 48,57 for wid=1 using rgb24 with ratio 1.3% ( 8KB to 1KB), sequence 307, client_options={'rgb_format': 'BGRX', 'lz4': 5, 'encoder': 'argb', 'flush': 0}, options={'quality': 100, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
May 31 10:41:31 vscode xpra[5604]: 2024-05-31 10:41:31,825 compress: 0.1ms for 603x3 pixels at 48,57 for wid=1 using rgb24 with ratio 1.3% ( 8KB to 1KB), sequence 308, client_options={'rgb_format': 'BGRX', 'lz4': 5, 'encoder': 'argb', 'flush': 0}, options={'quality': 100, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
May 31 10:41:31 vscode xpra[5604]: 2024-05-31 10:41:31,842 compress: 0.1ms for 603x3 pixels at 48,57 for wid=1 using rgb24 with ratio 1.3% ( 8KB to 1KB), sequence 309, client_options={'rgb_format': 'BGRX', 'lz4': 5, 'encoder': 'argb', 'flush': 0}, options={'quality': 100, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
May 31 10:41:31 vscode xpra[5604]: 2024-05-31 10:41:31,859 compress: 0.1ms for 912x3 pixels at 48,57 for wid=1 using rgb24 with ratio 2.4% ( 11KB to 1KB), sequence 310, client_options={'rgb_format': 'BGRX', 'lz4': 5, 'encoder': 'argb', 'flush': 0}, options={'quality': 100, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
May 31 10:41:32 vscode xpra[5604]: 2024-05-31 10:41:32,005 compress: 1.5ms for 897x35 pixels at 48,25 for wid=1 using webp with ratio 11.1% ( 123KB to 14KB), sequence 311, client_options={'rgb_format': 'BGRX', 'quality': 100, 'encoder': 'webp', 'flush': 0}, options={'quality': 100, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
May 31 10:41:32 vscode xpra[5604]: 2024-05-31 10:41:32,099 compress: 1.1ms for 842x19 pixels at 118,500 for wid=1 using webp with ratio 10.0% ( 63KB to 7KB), sequence 312, client_options={'rgb_format': 'BGRX', 'quality': 100, 'encoder': 'webp', 'flush': 0}, options={'quality': 100, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
May 31 10:41:32 vscode xpra[5604]: 2024-05-31 10:41:32,144 compress: 17.7ms for 960x1059 pixels at 0,0 for wid=1 using webp with ratio 1.8% ( 3972KB to 71KB), sequence 313, client_options={'rgb_format': 'BGRX', 'subsampling': 'YUV420P', 'quality': 61, 'csc-type': 'none', 'encoder': 'webp', 'flush': 0}, options={'quality': 61, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'av-delay': 0, 'window-size': (960, 1059)}
May 31 10:41:32 vscode xpra[5604]: 2024-05-31 10:41:32,322 compress: 25.1ms for 960x1059 pixels at 0,0 for wid=1 using webp with ratio 6.7% ( 3972KB to 268KB), sequence 314, client_options={'rgb_format': 'BGRX', 'quality': 100, 'encoder': 'webp', 'flush': 0}, options={'optimize': False, 'auto_refresh': True, 'quality': 100, 'speed': 50, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
May 31 10:41:32 vscode xpra[5604]: 2024-05-31 10:41:32,325 compress: 0.1ms for 25x16 pixels at 320,34 for wid=1 using rgb24 with ratio 33.1% ( 2KB to 1KB), sequence 315, client_options={'rgb_format': 'BGRX', 'lz4': 2, 'encoder': 'argb', 'flush': 0}, options={'quality': 100, 'speed': 41, 'rgb_formats': ('YUV420P', 'YUV422P', 'YUV444P', 'NV12', 'GBRP', 'BGRX', 'RGBX', 'RGB', 'BGR'), 'lz4': True, 'alpha': False, 'content-type': 'browser', 'window-size': (960, 1059)}
That should have worked.
This is where we update the content-type
attribute:
https://github.com/Xpra-org/xpra/blob/ed358eaf6c66225ff448d813c0724b6f444b526d/xpra/x11/models/base.py#L452-L476
And this should end up calling: guess_content_type
The server debug switch for this module is -d util+window
.
This is what I see for --start=xterm
:
_load_dict_file()
guess_content_type_from_defs(WindowModel(400012)) prop(role)=None
guess_content_type_from_defs(WindowModel(400012)) prop(title)=antoine@fedora:~/projects/xpra
guess_content_type_from_defs(WindowModel(400012)) prop(class-instance)=('xterm', 'XTerm')
guess_content_type(WindowModel(400012)) found match: property=class-instance, regex=xterm, content-type=text
Here is what I'm getting if I enable the debug flags you mentioned:
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,338 class-instance matching 'oleview.*' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,338 class-instance matching 'winecfg.*' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'regedit.*' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'zenity' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'winemine.*' is picture
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'winefile.*' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'winhlp.*' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'wordpad.*' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'wireshark.*' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'xfce4-terminal' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'xxdiff' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'xpra-sessions-gui' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'xpra-toolbox' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'xpra-gui' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'xpra-launcher-gui' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 class-instance matching 'yelp' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,339 _load_dict_file(/etc/xpra/content-type/70_commands.conf)=['command:/opt/visual-studio-code-insiders/code-insiders --disable-gpu --no-sandbox=text']
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,340 command matching '/opt/visual-studio-code-insiders/code-insiders --disable-gpu --no-sandbox' is text
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,340 _load_dict_dir(/etc/xpra/content-type)={'role': {re.compile('gimp-dock'): ('gimp-dock', 'text'), re.compile('gimp-toolbox'): ('gimp-toolbox', 'text'), re.compile('gimp-image-window'): ('gimp-image-window', 'picture'), re.compile('vlc-playlist'): ('vlc-playlist', 'text'), re.compile('vlc-main'): ('vlc-main', 'audio+video'), re.compile('browser'): ('browser', 'browser')}, 'title': {re.compile('- Gmail -'): ('- Gmail -', 'text'), re.compile('- YouTube -'): ('- YouTube -', 'audio+video'), re.compile(' on Vimeo -'): (' on Vimeo -', 'audio+video'), re.compile(' Instagram photos and videos -'): (' Instagram photos and videos -', 'audio+picture'), re.compile('- Wikipedia -'): ('- Wikipedia -', 'text'), re.compile('^Amazon.com: '): ('^Amazon.com: ', 'text'), re.compile(' - Facebook -'): (' - Facebook -', 'picture'), re.compile(' - Twitter -'): (' - Twitter -', 'text'), re.compile(' - LinkedIn -'): (' - LinkedIn -', 'text'), re.compile(' - Pinterest -'): (' - Pinterest -', 'picture'), re.compile(' Apple -'): (' Apple -', 'text'), re.compile(' - Adobe -'): (' - Adobe -', 'text'), re.compile(' - Flickr -'): (' - Flickr -', 'picture'), re.compile(' Microsoft -'): (' Microsoft -', 'text'), re.compile(' Yahoo -'): (' Yahoo -', 'text'), re.compile(' - Qq -'): (' - Qq -', 'text'), re.compile('glxgears'): ('glxgears', 'video'), re.compile('GLX Spheres'): ('GLX Spheres', 'video'), re.compile('IcedTea-Web Control Panel'): ('IcedTea-Web Control Panel', 'text'), re.compile('Java Monitoring & Management Console'): ('Java Monitoring & Management Console', 'text'), re.compile('Python .* Shell'): ('Python .* Shell', 'text'), re.compile('NetBeans IDE'): ('NetBeans IDE', 'text')}, 'class-instance': {re.compile('xterm'): ('xterm', 'text'), re.compile('.*terminal.*'): ('.*terminal.*', 'text'), re.compile('abiword'): ('abiword', 'text'), re.compile('atom'): ('atom', 'text'), re.compile('avahi-discover'): ('avahi-discover', 'text'), re.compile('baobab'): ('baobab', 'picture'), re.compile('bluetooth-sendto'): ('bluetooth-sendto', 'text'), re.compile('bssh'): ('bssh', 'text'), re.compile('bvnc'): ('bvnc', 'desktop'), re.compile('camorama'): ('camorama', 'video'), re.compile('cheese'): ('cheese', 'video'), re.compile('chromium-browser'): ('chromium-browser', 'browser'), re.compile('clipit'): ('clipit', 'text'), re.compile('code'): ('code', 'text'), re.compile('Code - Insiders'): ('Code - Insiders', 'text'), re.compile('dde-file-manager'): ('dde-file-manager', 'text'), re.compile('dde-desktop'): ('dde-desktop', 'picture'), re.compile('deepin-movie'): ('deepin-movie', 'audio+video'), re.compile('deepin-music'): ('deepin-music', 'text'), re.compile('deepin-system-monitor'): ('deepin-system-monitor', 'picture'), re.compile('deepin-terminal'): ('deepin-terminal', 'text'), re.compile('dolphin'): ('dolphin', 'browser'), re.compile('d-feet'): ('d-feet', 'text'), re.compile('Eclipse'): ('Eclipse', 'text'), re.compile('emacs'): ('emacs', 'text'), re.compile('eog'): ('eog', 'picture'), re.compile('evince.*'): ('evince.*', 'text'), re.compile('evolution'): ('evolution', 'text'), re.compile('Firefox'): ('Firefox', 'browser'), re.compile('file-roller'): ('file-roller', 'text'), re.compile('ffplay'): ('ffplay', 'video'), re.compile('geany'): ('geany', 'text'), re.compile('gcm-picker'): ('gcm-picker', 'picture'), re.compile('gcm-import'): ('gcm-import', 'text'), re.compile('gcm-viewer'): ('gcm-viewer', 'text'), re.compile('gedit'): ('gedit', 'text'), re.compile('gimp'): ('gimp', 'picture'), re.compile('git-gui'): ('git-gui', 'text'), re.compile('gitk'): ('gitk', 'text'), re.compile('gkbd-keyboard-display'): ('gkbd-keyboard-display', 'text'), re.compile('gnome-about'): ('gnome-about', 'text'), re.compile('gnome-abrt'): ('gnome-abrt', 'text'), re.compile('gnome-boxes'): ('gnome-boxes', 'browser'), re.compile('gnome-calculator'): ('gnome-calculator', 'text'), re.compile('gnome-calendar'): ('gnome-calendar', 'text'), re.compile('gnome-clocks'): ('gnome-clocks', 'text'), re.compile('gnome-contacts'): ('gnome-contacts', 'text'), re.compile('gnome-disks'): ('gnome-disks', 'text'), re.compile('gnome-disk-image-mounter'): ('gnome-disk-image-mounter', 'text'), re.compile('gnome-font-viewer'): ('gnome-font-viewer', 'picture'), re.compile('gnome-logs'): ('gnome-logs', 'text'), re.compile('gnome-screenshot'): ('gnome-screenshot', 'text'), re.compile('gnome-shell-portal-helper'): ('gnome-shell-portal-helper', 'browser'), re.compile('gnome-software'): ('gnome-software', 'browser'), re.compile('gnome-system-monitor'): ('gnome-system-monitor', 'text'), re.compile('gnome-terminal.*'): ('gnome-terminal.*', 'text'), re.compile('gnome-tweaks'): ('gnome-tweaks', 'text'), re.compile('google-chrome.*'): ('google-chrome.*', 'browser'), re.compile('gpartedbin'): ('gpartedbin', 'text'), re.compile('gst'): ('gst', 'text'), re.compile('gtk3-demo.*'): ('gtk3-demo.*', 'text'), re.compile('gtk3-widget-factory'): ('gtk3-widget-factory', 'text'), re.compile('gupnp-av-cp'): ('gupnp-av-cp', 'text'), re.compile('gupnp-universal-cp'): ('gupnp-universal-cp', 'text'), re.compile('gvim'): ('gvim', 'text'), re.compile('ibus.*'): ('ibus.*', 'text'), re.compile('IBus Panel'): ('IBus Panel', 'picture'), re.compile('ibus-ui-emojier'): ('ibus-ui-emojier', 'picture'), re.compile('jetbrains.*'): ('jetbrains.*', 'text'), re.compile('konsole'): ('konsole', 'text'), re.compile('sun-tools-jconsole-JConsole'): ('sun-tools-jconsole-JConsole', 'text'), re.compile('sun-security-tools-policytool-PolicyTool'): ('sun-security-tools-policytool-PolicyTool', 'text'), re.compile('libfm-pref-apps'): ('libfm-pref-apps', 'text'), re.compile('libreoffice.*'): ('libreoffice.*', 'text'), re.compile('LYNE.*'): ('LYNE.*', 'video'), re.compile('Mail'): ('Mail', 'text'), re.compile('mate-terminal'): ('mate-terminal', 'text'), re.compile('net-sourceforge-jnlp-security-policyeditor-PolicyEditor'): ('net-sourceforge-jnlp-security-policyeditor-PolicyEditor', 'text'), re.compile('mousepad'): ('mousepad', 'text'), re.compile('notepad.exe'): ('notepad.exe', 'text'), re.compile('mpv'): ('mpv', 'audio+video'), re.compile('Navigator'): ('Navigator', 'browser'), re.compile('nm-connection-editor'): ('nm-connection-editor', 'text'), re.compile('Nsight'): ('Nsight', 'text'), re.compile('nv-nsight-cu.bin'): ('nv-nsight-cu.bin', 'text'), re.compile('nvidia-settings'): ('nvidia-settings', 'picture'), re.compile('NVIDIA Visual Profiler'): ('NVIDIA Visual Profiler', 'text'), re.compile('okular'): ('okular', 'text'), re.compile('onboard.*'): ('onboard.*', 'text'), re.compile('org.inkscape.Inkscape'): ('org.inkscape.Inkscape', 'text'), re.compile('org.gnome.Characters'): ('org.gnome.Characters', 'picture'), re.compile('org.gnome.Maps'): ('org.gnome.Maps', 'picture'), re.compile('org.gnome.meld'): ('org.gnome.meld', 'text'), re.compile('org.gnome.Nautilus'): ('org.gnome.Nautilus', 'picture'), re.compile('org.gnome.Photos'): ('org.gnome.Photos', 'browser'), re.compile('org.gnome.Weather'): ('org.gnome.Weather', 'picture'), re.compile('pavucontrol'): ('pavucontrol', 'picture'), re.compile('pcmanfm'): ('pcmanfm', 'browser'), re.compile('projectM-pulseaudio'): ('projectM-pulseaudio', 'audio'), re.compile('qemu'): ('qemu', 'browser'), re.compile('setroubleshoot'): ('setroubleshoot', 'text'), re.compile('scribus'): ('scribus', 'text'), re.compile('simple-scan'): ('simple-scan', 'picture'), re.compile('Steam'): ('Steam', 'browser'), re.compile('system-config-printer'): ('system-config-printer', 'text'), re.compile('terminator'): ('terminator', 'text'), re.compile('tkdiff'): ('tkdiff', 'text'), re.compile('Thunderbird'): ('Thunderbird', 'browser'), re.compile('totem'): ('totem', 'audio+video'), re.compile('transmission.*'): ('transmission.*', 'text'), re.compile('usbview.*'): ('usbview.*', 'text'), re.compile('unityhub.*'): ('unityhub.*', 'browser'), re.compile('VirtualBox Manager'): ('VirtualBox Manager', 'text'), re.compile('VirtualBox Machine'): ('VirtualBox Machine', 'picture'), re.compile('vlc'): ('vlc', 'audio+video'), re.compile('vncviewer'): ('vncviewer', 'desktop'), re.compile('wineboot.*'): ('wineboot.*', 'text'), re.compile('wineconsole.*'): ('wineconsole.*', 'text'), re.compile('oleview.*'): ('oleview.*', 'text'), re.compile('winecfg.*'): ('winecfg.*', 'text'), re.compile('regedit.*'): ('regedit.*', 'text'), re.compile('zenity'): ('zenity', 'text'), re.compile('winemine.*'): ('winemine.*', 'picture'), re.compile('winefile.*'): ('winefile.*', 'text'), re.compile('winhlp.*'): ('winhlp.*', 'text'), re.compile('wordpad.*'): ('wordpad.*', 'text'), re.compile('wireshark.*'): ('wireshark.*', 'text'), re.compile('xfce4-terminal'): ('xfce4-terminal', 'text'), re.compile('xxdiff'): ('xxdiff', 'text'), re.compile('xpra-sessions-gui'): ('xpra-sessions-gui', 'text'), re.compile('xpra-toolbox'): ('xpra-toolbox', 'text'), re.compile('xpra-gui'): ('xpra-gui', 'text'), re.compile('xpra-launcher-gui'): ('xpra-launcher-gui', 'text'), re.compile('yelp'): ('yelp', 'text')}, 'command': {re.compile('/opt/visual-studio-code-insiders/code-insiders --disable-gpu --no-sandbox'): ('/opt/visual-studio-code-insiders/code-insiders --disable-gpu --no-sandbox', 'text')}}
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,340 load_content_categories_dir(/usr/local/etc/xpra/content-type) directory not found
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,340 load_content_categories_dir(/etc/xdg/xpra/content-type) directory not found
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,340 load_content_categories_dir(~/.config/xpra/content-type) directory not found
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,340 load_content_categories_dir(~/.xpra/content-type) directory not found
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,342 guess_content_type_from_defs(WindowModel(400004)) prop(role)=browser-window
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,352 guess_content_type(WindowModel(400004)) found match: property=role, regex=browser, content-type=browser
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,352 guess_content_type_from_defs(WindowModel(400004)) prop(role)=browser-window
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,352 guess_content_type(WindowModel(400004)) found match: property=role, regex=browser, content-type=browser
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,900 guess_content_type_from_defs(WindowModel(400004)) prop(role)=browser-window
May 31 16:01:24 vscode xpra[7214]: 2024-05-31 16:01:24,900 guess_content_type(WindowModel(400004)) found match: property=role, regex=browser, content-type=browser
Seems that it doesn't see any window class or title as it does in xterm example of yours.
Got it:
guess_content_type(WindowModel(400004)) found match: property=role, regex=browser, content-type=browser
It stops as soon as it finds a match, and your application sets the window role to browser-window
which matches browser
.
You should be able to temporarily workaround this by renaming /etc/xpra/content-type/10_role.conf
to /etc/xpra/content-type/99_role.conf
so that it is processed after the other ones which you have modified.
Another workaround would be to remove this line: https://github.com/Xpra-org/xpra/blob/2178dd8a0d16259e53c0bd2310f41817e210ea82/fs/etc/xpra/content-type/10_role.conf#L12
I am reasonably confident that the two commits above are correct. Please confirm that this works for you so that I can backport this to the stable branches.
To me seems that still identifies it as browser
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,239 class-instance matching 'xpra-launcher-gui' is text
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,239 class-instance matching 'yelp' is text
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,239 class-instance matching 'Code - Insiders' is text
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,239 _load_dict_file(/etc/xpra/content-type/70_commands.conf)=['command:/opt/visual-studio-code-insiders/code-insiders --disable-gpu --no-sandbox=text']
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,240 command matching '/opt/visual-studio-code-insiders/code-insiders --disable-gpu --no-sandbox' is text
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,240 _load_dict_file(/etc/xpra/content-type/90_fallback.conf)=['role:browser=browser']
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,240 role matching 'browser' is browser
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,240 _load_dict_dir(/etc/xpra/content-type)={'role': {re.compile('browser'): ('browser', 'browser')}, 'title': {re.compile('- Gmail -'): ('- Gmail -', 'text'), re.compile('- YouTube -'): ('- YouTube -', 'audio+video'), re.compile(' on Vimeo -'): (' on Vimeo -', 'audio+video'), re.compile(' Instagram photos and videos -'): (' Instagram photos and videos -', 'audio+picture'), re.compile('- Wikipedia -'): ('- Wikipedia -', 'text'), re.compile('^Amazon.com: '): ('^Amazon.com: ', 'text'), re.compile(' - Facebook -'): (' - Facebook -', 'picture'), re.compile(' - Twitter -'): (' - Twitter -', 'text'), re.compile(' - LinkedIn -'): (' - LinkedIn -', 'text'), re.compile(' - Pinterest -'): (' - Pinterest -', 'picture'), re.compile(' Apple -'): (' Apple -', 'text'), re.compile(' - Adobe -'): (' - Adobe -', 'text'), re.compile(' - Flickr -'): (' - Flickr -', 'picture'), re.compile(' Microsoft -'): (' Microsoft -', 'text'), re.compile(' Yahoo -'): (' Yahoo -', 'text'), re.compile(' - Qq -'): (' - Qq -', 'text'), re.compile('glxgears'): ('glxgears', 'video'), re.compile('GLX Spheres'): ('GLX Spheres', 'video'), re.compile('IcedTea-Web Control Panel'): ('IcedTea-Web Control Panel', 'text'), re.compile('Java Monitoring & Management Console'): ('Java Monitoring & Management Console', 'text'), re.compile('Python .* Shell'): ('Python .* Shell', 'text'), re.compile('NetBeans IDE'): ('NetBeans IDE', 'text')}, 'class-instance': {re.compile('xterm'): ('xterm', 'text'), re.compile('.*terminal.*'): ('.*terminal.*', 'text'), re.compile('abiword'): ('abiword', 'text'), re.compile('atom'): ('atom', 'text'), re.compile('avahi-discover'): ('avahi-discover', 'text'), re.compile('baobab'): ('baobab', 'picture'), re.compile('bluetooth-sendto'): ('bluetooth-sendto', 'text'), re.compile('bssh'): ('bssh', 'text'), re.compile('bvnc'): ('bvnc', 'desktop'), re.compile('camorama'): ('camorama', 'video'), re.compile('cheese'): ('cheese', 'video'), re.compile('chromium-browser'): ('chromium-browser', 'browser'), re.compile('clipit'): ('clipit', 'text'), re.compile('code'): ('code', 'text'), re.compile('Code - Insiders'): ('Code - Insiders', 'text'), re.compile('dde-file-manager'): ('dde-file-manager', 'text'), re.compile('dde-desktop'): ('dde-desktop', 'picture'), re.compile('deepin-movie'): ('deepin-movie', 'audio+video'), re.compile('deepin-music'): ('deepin-music', 'text'), re.compile('deepin-system-monitor'): ('deepin-system-monitor', 'picture'), re.compile('deepin-terminal'): ('deepin-terminal', 'text'), re.compile('dolphin'): ('dolphin', 'browser'), re.compile('d-feet'): ('d-feet', 'text'), re.compile('Eclipse'): ('Eclipse', 'text'), re.compile('emacs'): ('emacs', 'text'), re.compile('eog'): ('eog', 'picture'), re.compile('evince.*'): ('evince.*', 'text'), re.compile('evolution'): ('evolution', 'text'), re.compile('Firefox'): ('Firefox', 'browser'), re.compile('file-roller'): ('file-roller', 'text'), re.compile('ffplay'): ('ffplay', 'video'), re.compile('geany'): ('geany', 'text'), re.compile('gcm-picker'): ('gcm-picker', 'picture'), re.compile('gcm-import'): ('gcm-import', 'text'), re.compile('gcm-viewer'): ('gcm-viewer', 'text'), re.compile('gedit'): ('gedit', 'text'), re.compile('gimp'): ('gimp', 'picture'), re.compile('git-gui'): ('git-gui', 'text'), re.compile('gitk'): ('gitk', 'text'), re.compile('gkbd-keyboard-display'): ('gkbd-keyboard-display', 'text'), re.compile('gnome-about'): ('gnome-about', 'text'), re.compile('gnome-abrt'): ('gnome-abrt', 'text'), re.compile('gnome-boxes'): ('gnome-boxes', 'browser'), re.compile('gnome-calculator'): ('gnome-calculator', 'text'), re.compile('gnome-calendar'): ('gnome-calendar', 'text'), re.compile('gnome-clocks'): ('gnome-clocks', 'text'), re.compile('gnome-contacts'): ('gnome-contacts', 'text'), re.compile('gnome-disks'): ('gnome-disks', 'text'), re.compile('gnome-disk-image-mounter'): ('gnome-disk-image-mounter', 'text'), re.compile('gnome-font-viewer'): ('gnome-font-viewer', 'picture'), re.compile('gnome-logs'): ('gnome-logs', 'text'), re.compile('gnome-screenshot'): ('gnome-screenshot', 'text'), re.compile('gnome-shell-portal-helper'): ('gnome-shell-portal-helper', 'browser'), re.compile('gnome-software'): ('gnome-software', 'browser'), re.compile('gnome-system-monitor'): ('gnome-system-monitor', 'text'), re.compile('gnome-terminal.*'): ('gnome-terminal.*', 'text'), re.compile('gnome-tweaks'): ('gnome-tweaks', 'text'), re.compile('google-chrome.*'): ('google-chrome.*', 'browser'), re.compile('gpartedbin'): ('gpartedbin', 'text'), re.compile('gst'): ('gst', 'text'), re.compile('gtk3-demo.*'): ('gtk3-demo.*', 'text'), re.compile('gtk3-widget-factory'): ('gtk3-widget-factory', 'text'), re.compile('gupnp-av-cp'): ('gupnp-av-cp', 'text'), re.compile('gupnp-universal-cp'): ('gupnp-universal-cp', 'text'), re.compile('gvim'): ('gvim', 'text'), re.compile('ibus.*'): ('ibus.*', 'text'), re.compile('IBus Panel'): ('IBus Panel', 'picture'), re.compile('ibus-ui-emojier'): ('ibus-ui-emojier', 'picture'), re.compile('jetbrains.*'): ('jetbrains.*', 'text'), re.compile('konsole'): ('konsole', 'text'), re.compile('sun-tools-jconsole-JConsole'): ('sun-tools-jconsole-JConsole', 'text'), re.compile('sun-security-tools-policytool-PolicyTool'): ('sun-security-tools-policytool-PolicyTool', 'text'), re.compile('libfm-pref-apps'): ('libfm-pref-apps', 'text'), re.compile('libreoffice.*'): ('libreoffice.*', 'text'), re.compile('LYNE.*'): ('LYNE.*', 'video'), re.compile('Mail'): ('Mail', 'text'), re.compile('mate-terminal'): ('mate-terminal', 'text'), re.compile('net-sourceforge-jnlp-security-policyeditor-PolicyEditor'): ('net-sourceforge-jnlp-security-policyeditor-PolicyEditor', 'text'), re.compile('mousepad'): ('mousepad', 'text'), re.compile('notepad.exe'): ('notepad.exe', 'text'), re.compile('mpv'): ('mpv', 'audio+video'), re.compile('Navigator'): ('Navigator', 'browser'), re.compile('nm-connection-editor'): ('nm-connection-editor', 'text'), re.compile('Nsight'): ('Nsight', 'text'), re.compile('nv-nsight-cu.bin'): ('nv-nsight-cu.bin', 'text'), re.compile('nvidia-settings'): ('nvidia-settings', 'picture'), re.compile('NVIDIA Visual Profiler'): ('NVIDIA Visual Profiler', 'text'), re.compile('okular'): ('okular', 'text'), re.compile('onboard.*'): ('onboard.*', 'text'), re.compile('org.inkscape.Inkscape'): ('org.inkscape.Inkscape', 'text'), re.compile('org.gnome.Characters'): ('org.gnome.Characters', 'picture'), re.compile('org.gnome.Maps'): ('org.gnome.Maps', 'picture'), re.compile('org.gnome.meld'): ('org.gnome.meld', 'text'), re.compile('org.gnome.Nautilus'): ('org.gnome.Nautilus', 'picture'), re.compile('org.gnome.Photos'): ('org.gnome.Photos', 'browser'), re.compile('org.gnome.Weather'): ('org.gnome.Weather', 'picture'), re.compile('pavucontrol'): ('pavucontrol', 'picture'), re.compile('pcmanfm'): ('pcmanfm', 'browser'), re.compile('projectM-pulseaudio'): ('projectM-pulseaudio', 'audio'), re.compile('qemu'): ('qemu', 'browser'), re.compile('setroubleshoot'): ('setroubleshoot', 'text'), re.compile('scribus'): ('scribus', 'text'), re.compile('simple-scan'): ('simple-scan', 'picture'), re.compile('Steam'): ('Steam', 'browser'), re.compile('system-config-printer'): ('system-config-printer', 'text'), re.compile('terminator'): ('terminator', 'text'), re.compile('tkdiff'): ('tkdiff', 'text'), re.compile('Thunderbird'): ('Thunderbird', 'browser'), re.compile('totem'): ('totem', 'audio+video'), re.compile('transmission.*'): ('transmission.*', 'text'), re.compile('usbview.*'): ('usbview.*', 'text'), re.compile('unityhub.*'): ('unityhub.*', 'browser'), re.compile('VirtualBox Manager'): ('VirtualBox Manager', 'text'), re.compile('VirtualBox Machine'): ('VirtualBox Machine', 'picture'), re.compile('vlc'): ('vlc', 'audio+video'), re.compile('vncviewer'): ('vncviewer', 'desktop'), re.compile('wineboot.*'): ('wineboot.*', 'text'), re.compile('wineconsole.*'): ('wineconsole.*', 'text'), re.compile('oleview.*'): ('oleview.*', 'text'), re.compile('winecfg.*'): ('winecfg.*', 'text'), re.compile('regedit.*'): ('regedit.*', 'text'), re.compile('zenity'): ('zenity', 'text'), re.compile('winemine.*'): ('winemine.*', 'picture'), re.compile('winefile.*'): ('winefile.*', 'text'), re.compile('winhlp.*'): ('winhlp.*', 'text'), re.compile('wordpad.*'): ('wordpad.*', 'text'), re.compile('wireshark.*'): ('wireshark.*', 'text'), re.compile('xfce4-terminal'): ('xfce4-terminal', 'text'), re.compile('xxdiff'): ('xxdiff', 'text'), re.compile('xpra-sessions-gui'): ('xpra-sessions-gui', 'text'), re.compile('xpra-toolbox'): ('xpra-toolbox', 'text'), re.compile('xpra-gui'): ('xpra-gui', 'text'), re.compile('xpra-launcher-gui'): ('xpra-launcher-gui', 'text'), re.compile('yelp'): ('yelp', 'text')}, 'command': {re.compile('/opt/visual-studio-code-insiders/code-insiders --disable-gpu --no-sandbox'): ('/opt/visual-studio-code-insiders/code-insiders --disable-gpu --no-sandbox', 'text')}}
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,240 load_content_categories_dir(/usr/local/etc/xpra/content-type) directory not found
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,240 load_content_categories_dir(/etc/xdg/xpra/content-type) directory not found
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,240 load_content_categories_dir(~/.config/xpra/content-type) directory not found
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,240 load_content_categories_dir(~/.xpra/content-type) directory not found
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,243 guess_content_type_from_defs(WindowModel(400004)) prop(role)=browser-window
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,243 guess_content_type(WindowModel(400004)) found match: property=role, regex=browser, content-type=browser
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,253 guess_content_type_from_defs(WindowModel(400004)) prop(role)=browser-window
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,253 guess_content_type(WindowModel(400004)) found match: property=role, regex=browser, content-type=browser
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,811 guess_content_type_from_defs(WindowModel(400004)) prop(role)=browser-window
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,811 guess_content_type(WindowModel(400004)) found match: property=role, regex=browser, content-type=browser
May 31 18:08:37 vscode xpra[8323]: 2024-05-31 18:08:37,866 child 'code-insiders --disable-gpu --no-sandbox' with pid 8436 has terminated
So what make it work properly was to change your fallback file into smth like
################################################################################
# since this file will be parsed late,
# we can include more generic patterns here:
role:browser=text
But obviously this is not correct
Yes, I realized later on that f0431b1a349acace99976d43e046b933ea4d2095 was wrong: the files are all loaded and placed in the same data structure, so the later files can only override previous settings. The matching order is not determined by the order of the files. Let me think about this one.
@nikolaof I am moving this issue to #4248 as the current issue is closed and you have a valid - if less than ideal - workaround.
Describe the bug After the last update from 4.4.5-2 to 6.0-1, whatever application I'm running at server side, displays some distortions, like parts of the windows are blinking, or change colors on their own. Also when scrolling for example in vscode the whole content is messed up (see screenshot).
To Reproduce Steps to reproduce the behavior:
System Information:
Additional context
xpraconf.txt