Open Bug 1787939 Opened 2 years ago Updated 8 months ago

[Flatpak] Firefox menu and all context menu are not opening in Steam Deck game mode

Categories

(Core :: Widget: Gtk, defect, P3)

Firefox 105
Unspecified
Linux
defect

Tracking

()

People

(Reporter: keedav, Unassigned)

References

(Blocks 1 open bug, )

Details

Attachments

(2 files)

Steps to reproduce:

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0

I can reproduce it with the following steps, in a completely new profile:

  1. Install Firefox from Flathub via the KDE Discover app (from both stable and beta repo)
  2. Add Firefox to Steam by right clicking its icon -> Add to Steam
  3. Return to Gaming mode
  4. Launch Firefox from your Library
  5. Click on the Firefox menu hamburger button
  6. Additionally try to click on the Firefox Pocket button, or right click on one of the tabs
  7. Hover your mouse cursor over an item where a tooltip should be shown (ex. a tab)

Actual results:

Each time I click on the Firefox menu button, the screen flashes briefly, the mouse cursor jumps to the top left corner of the screen, but the Firefox menu is not opening. Also, no other menus are appearing either, no right click context menu, no overflow menu.

It is not invisible, I cannot select the menu items even if I click on the place it would have opened to.

The same things happens if you hover over anything where a tooltip should appear. The screen flashes briefly, but the tooltip is not visible.

Everything is working perfectly in desktop mode.

Expected results:

The Firefox menu, context menus, and tooltips should work in game mode.

The Bugbug bot thinks this bug should belong to the 'Core::Widget: Gtk' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → Widget: Gtk
Product: Firefox → Core

I have the same issue.

There's a report on this bug on github too, in the gamescope repo. My understanding is gamescope is used by SteamDeck's gaming mode (step 3 in the bug report) to provide a session/scope for applications to render into.

The issue may be in gamescope or Firefox. It seems to only appear when both are used together. I would guess it's a gamescope issue, but it's entirely possible Firefox is doing something unusual/incorrect/buggy since, to my knowledge, this is the only application that exhibits this bug. Suggested workarounds on forums are to use another browser, which is less than ideal, but suggests other context menus/etc are rendering just fine.

See here: https://github.com/Plagman/gamescope/issues/607

If this is likely a gamescope bug, it may be useful to shed some light on how Firefox renders tooltips, menus and context menus, in order to find other apps similarly affected in gamescope, or help diagnose the bug in gamescope.

Another theory: I just found an old open bug on here with a similar description stating that the context menus don't work in Wayland. The Steam Deck uses Wayland in gaming mode (with gamescope).

https://bugzilla.mozilla.org/show_bug.cgi?id=1729718

And perhaps at the core, there is a long-standing issue relating to Wayland support here:

https://bugzilla.mozilla.org/show_bug.cgi?id=635134

Can you attach about:support contents from the problematic Firefox instance? Should be easy to check whether it's using wayland, X11, or XWayland.

(In reply to Emilio Cobos Álvarez (:emilio) from comment #4) > Can you attach `about:support` contents from the problematic Firefox instance? Should be easy to check whether it's using wayland, X11, or XWayland.

(In reply to Emilio Cobos Álvarez (:emilio) from comment #4)

Can you attach about:support contents from the problematic Firefox instance? Should be easy to check whether it's using wayland, X11, or XWayland.

looking at about:support when running Firefox in both game mode, in the desktop running as a game in a game mode (used a script to add KDE as a game) and in desktop mode itself :

  • Gamemode:
    Window Protocol: x11
    Desktop Environment: unknown
  • Desktop running as a game:
    Window Protocol: wayland
    Desktop Environment: kde
  • Desktop mode:
    Window Protocol: x11
    Desktop Environment: kde

(only the first mode suffers from this bug (the desktop as game has its own problems that don't appear to be related))

about:support is quite a lot of info, so let me know if any specific fields are useful. At a guess, the following would be relevant:

Version: 107.0
Build ID: 20221110173214
Distribution ID: mozilla-flatpak
Window Protocol: x11
Desktop Environment: unknown

Environment Variables:
MOZ_ENABLE_WAYLAND 1

Blocks: flatpak
Priority: -- → P3
Hi everyone, I open gamescope in desktop mode.
xwm: Unhandled NET_WM_STATE property change: _NET_WM_STATE_HIDDEN
wlserver: [types/wlr_surface.c:741] New wlr_surface 0x560a06e4aa40 (res 0x560a06ceb3f0)

You can trigger this error everytime a context menu is created

gamescope -- ./bin/firefox/firefoxTracing is enabled
wlserver: [backend/headless/backend.c:82] Creating headless backend
vulkan: selecting physical device 'AMD Custom GPU 0405 (RADV VANGOGH)': queue family 1
vulkan: physical device supports DRM format modifiers
vulkan: supported DRM formats for sampling usage:
vulkan: 0x34325241
vulkan: 0x34325258
vulkan: 0x3231564E
wlserver: Running compositor on wayland display 'gamescope-0'
wlserver: [backend/headless/backend.c:18] Starting headless backend
wlserver: [xwayland/sockets.c:63] Failed to bind socket @/tmp/.X11-unix/X0: Address already in use
wlserver: [xwayland/server.c:92] Starting Xwayland on :1
wlserver: [types/wlr_surface.c:741] New wlr_surface 0x55883f2e83f0 (res 0x55883ef76f70)
wlserver: [xwayland/server.c:250] Xserver is ready
pipewire: stream state changed: connecting
pipewire: stream state changed: paused
pipewire: stream available on node ID: 103
pipewire: renegotiating stream params (size: 1280x720)
ATTENTION: default value of option mesa_glthread overridden by environment.
ATTENTION: default value of option mesa_glthread overridden by environment.
ATTENTION: default value of option mesa_glthread overridden by environment.
xwm: Unhandled NET_WM_STATE property change: _NET_WM_STATE_HIDDEN
wlserver: [types/wlr_surface.c:741] New wlr_surface 0x55883f5b8a60 (res 0x55883f06feb0)
xwm: Unhandled initial NET_WM_STATE property: _NET_WM_STATE_MAXIMIZED_VERT
xwm: Unhandled initial NET_WM_STATE property: _NET_WM_STATE_MAXIMIZED_HORZ
pipewire: renegotiating stream params (size: 1280x717)
The XKEYBOARD keymap compiler (xkbcomp) reports:

Warning: Unsupported maximum keycode 708, clipping.
X11 cannot support keycodes above 255.
Errors from xkbcomp are not fatal to the X server
xwm: Unhandled NET_WM_STATE property change: _NET_WM_STATE_HIDDEN
wlserver: [types/wlr_surface.c:741] New wlr_surface 0x55883eecb950 (res 0x55883eec7810)
wlserver: [types/wlr_surface.c:741] New wlr_surface 0x55883f340410 (res 0x55883eec8230)
xwm: Unhandled NET_WM_STATE property change: _NET_WM_STATE_HIDDEN

Summary: Firefox menu and all context menu are not opening in Steam Deck game mode → [Flatpak] Firefox menu and all context menu are not opening in Steam Deck game mode

widget.gtk.native-context-menus=true opens the context menu by a long tap but then the touch input breaks. Somehow Firefox thinks there's an active touch tap when there's none, and thus any extra tapping is treated as two-finger zoom gesture. Opening with L2 button shows no problem. The Firefox hamburger is still broken with the flag (which is probably expected).

Removing flatpak from blocking issue as I think this is more about Gamescope compatibility rather than flatpak.

No longer blocks: flatpak
See Also: → 1757402

(In reply to Kagami [:saschanaz] (they/them) from comment #11)

widget.gtk.native-context-menus=true opens the context menu by a long tap but then the touch input breaks. Somehow Firefox thinks there's an active touch tap when there's none, and thus any extra tapping is treated as two-finger zoom gesture. Opening with L2 button shows no problem. The Firefox hamburger is still broken with the flag (which is probably expected).

Removing flatpak from blocking issue as I think this is more about Gamescope compatibility rather than flatpak.

I believe there are two routes to fix the issue above. Fix gamescope X window handling or fix gtk seat wayland crashing bug. I found a workaround issues by setting KDE or Gnome as the wayland socket in gamescope. This works past firefox 121 because previous version will only enable xwayland.

gamescope --expose-wayland -- env WAYLAND_DISPLAY=wayland-0 ./firefox-bin

Name Firefox
Version 121.0b3
Build ID 20231124091512

Firefox prints gtk seat crashes with gamescope-0 socket.

https://github.com/ValveSoftware/gamescope/issues/808

I did not test the workarounds in flatpak and Steam OS yet because firefox 121 is still in beta.

Do you have a relevant crash report in about:crashes? It could help investigate the crash.

Flags: needinfo?(monkeyboyted)

(In reply to Kagami [:saschanaz] (they/them) from comment #15)

Do you have a relevant crash report in about:crashes? It could help investigate the crash.

https://crash-stats.mozilla.org/report/index/2c5664ec-4017-48a7-b7d5-3d0b90231201

gamescope --expose-wayland -- ./firefox-bin
No CAP_SYS_NICE, falling back to regular-priority compute and threads.
Performance will be affected.
wlserver: [backend/headless/backend.c:68] Creating headless backend
ATTENTION: default value of option vk_khr_present_wait overridden by environment.
vulkan: selecting physical device 'AMD Custom GPU 0405 (RADV VANGOGH)': queue family 1 (general queue family 0)
vulkan: physical device supports DRM format modifiers
vulkan: supported DRM formats for sampling usage:
vulkan: AR24 (0x34325241)
vulkan: XR24 (0x34325258)
vulkan: AB24 (0x34324241)
vulkan: XB24 (0x34324258)
vulkan: RG16 (0x36314752)
vulkan: NV12 (0x3231564E)
vulkan: AB4H (0x48344241)
vulkan: XB4H (0x48344258)
vulkan: AB48 (0x38344241)
vulkan: XB48 (0x38344258)
vulkan: AB30 (0x30334241)
vulkan: XB30 (0x30334258)
vulkan: AR30 (0x30335241)
vulkan: XR30 (0x30335258)
vulkan: Creating Gamescope nested swapchain with format 64 and colorspace 0
wlserver: Running compositor on wayland display 'gamescope-0'
wlserver: [backend/headless/backend.c:16] Starting headless backend
wlserver: [xwayland/server.c:108] Starting Xwayland on :2
The XKEYBOARD keymap compiler (xkbcomp) reports:

Warning: Could not resolve keysym XF86CameraAccessEnable
Warning: Could not resolve keysym XF86CameraAccessDisable
Warning: Could not resolve keysym XF86CameraAccessToggle
Warning: Could not resolve keysym XF86NextElement
Warning: Could not resolve keysym XF86PreviousElement
Warning: Could not resolve keysym XF86AutopilotEngageToggle
Warning: Could not resolve keysym XF86MarkWaypoint
Warning: Could not resolve keysym XF86Sos
Warning: Could not resolve keysym XF86NavChart
Warning: Could not resolve keysym XF86FishingChart
Warning: Could not resolve keysym XF86SingleRangeRadar
Warning: Could not resolve keysym XF86DualRangeRadar
Warning: Could not resolve keysym XF86RadarOverlay
Warning: Could not resolve keysym XF86TraditionalSonar
Warning: Could not resolve keysym XF86ClearvuSonar
Warning: Could not resolve keysym XF86SidevuSonar
Warning: Could not resolve keysym XF86NavInfo
Errors from xkbcomp are not fatal to the X server
wlserver: [types/wlr_compositor.c:681] New wlr_surface 0x55905dc9ebb0 (res 0x55905d86afd0)
wlserver: [xwayland/server.c:273] Xserver is ready
pipewire: stream state changed: connecting
pipewire: stream state changed: paused
pipewire: stream available on node ID: 82
vulkan: Creating Gamescope nested swapchain with format 64 and colorspace 0
pipewire: renegotiating stream params (size: 1280x720)
[7924, Main Thread] WARNING: gdk_seat_get_keyboard: assertion 'GDK_IS_SEAT (seat)' failed: 'glib warning', file /builds/worker/checkouts/gecko/toolkit/xre/nsSigHandlers.cpp:187

(firefox-aurora:7924): Gdk-CRITICAL **: 20:08:33.335: gdk_seat_get_keyboard: assertion 'GDK_IS_SEAT (seat)' failed
ExceptionHandler::GenerateDump cloned child 7936
ExceptionHandler::WaitForContinueSignal waiting for continue signal...
ExceptionHandler::SendContinueSignalToChild sent continue signal to child

(crashreporter:7943): Gdk-CRITICAL **: 20:08:33.531: gdk_seat_get_keyboard: assertion 'GDK_IS_SEAT (seat)' failed

(crashreporter:7943): Gdk-CRITICAL **: 20:08:33.602: gdk_seat_get_keyboard: assertion 'GDK_IS_SEAT (seat)' failed

(crashreporter:7943): Gdk-CRITICAL **: 20:08:33.646: gdk_seat_get_pointer: assertion 'GDK_IS_SEAT (seat)' failed

(crashreporter:7943): Gdk-CRITICAL **: 20:08:33.646: gdk_device_get_position_double: assertion 'GDK_IS_DEVICE (device)' failed

(crashreporter:7943): Gdk-CRITICAL **: 20:08:33.646: gdk_seat_get_pointer: assertion 'GDK_IS_SEAT (seat)' failed

(crashreporter:7943): Gdk-CRITICAL **: 20:08:33.646: gdk_device_get_position_double: assertion 'GDK_IS_DEVICE (device)' failed
wlserver: [types/wlr_compositor.c:681] New wlr_surface 0x55905de1cdf0 (res 0x55905d863340)
wlserver: [types/xdg_shell/wlr_xdg_surface.c:387] new xdg_surface 0x55905de1d150 (res 0x55905d863460)
xwm: NO CURSOR IMPL XDG
The XKEYBOARD keymap compiler (xkbcomp) reports:

Warning: Unsupported maximum keycode 708, clipping.
X11 cannot support keycodes above 255.
Warning: Could not resolve keysym XF86CameraAccessEnable
Warning: Could not resolve keysym XF86CameraAccessDisable
Warning: Could not resolve keysym XF86CameraAccessToggle
Warning: Could not resolve keysym XF86NextElement
Warning: Could not resolve keysym XF86PreviousElement
Warning: Could not resolve keysym XF86AutopilotEngageToggle
Warning: Could not resolve keysym XF86MarkWaypoint
Warning: Could not resolve keysym XF86Sos
Warning: Could not resolve keysym XF86NavChart
Warning: Could not resolve keysym XF86FishingChart
Warning: Could not resolve keysym XF86SingleRangeRadar
Warning: Could not resolve keysym XF86DualRangeRadar
Warning: Could not resolve keysym XF86RadarOverlay
Warning: Could not resolve keysym XF86TraditionalSonar
Warning: Could not resolve keysym XF86ClearvuSonar
Warning: Could not resolve keysym XF86SidevuSonar
Warning: Could not resolve keysym XF86NavInfo
Errors from xkbcomp are not fatal to the X server
gamescope: Received Terminated signal, forwarding to child!
gamescope: Received Terminated signal, attempting shutdown!
(EE) failed to read Wayland events: Broken pipe
Gdk-Message: 20:08:43.596: Error reading events from display: Broken pipe

Flags: needinfo?(monkeyboyted)

gamescope -- env > gamescopeenv.txt

SHELL=/bin/bash
SESSION_MANAGER=local/localhost.localdomain:@/tmp/.ICE-unix/1697,unix/localhost.localdomain:/tmp/.ICE-unix/1697
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg:/usr/local/etc/xdg:/usr/etc/xdg
LESS=-M -I -R
XDG_MENU_PREFIX=gnome-
MACHTYPE=x86_64-suse-linux
FLUTTER_SDK=/home/doof/local/flutter
G_BROKEN_FILENAMES=1
HISTSIZE=1000
HOSTNAME=localhost.localdomain
FROM_HEADER=
MINICOM=-c on
JAVA_ROOT=/usr/lib64/jvm/jre-openjdk
JAVA_HOME=/usr/lib64/jvm/jre-openjdk
VDPAU_DRIVER=va_gl
AUDIODRIVER=pulseaudio
JRE_HOME=/usr/lib64/jvm/java-11-openjdk-11
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
CPU=x86_64
JAVA_BINDIR=/usr/lib64/jvm/jre-openjdk/bin
XMODIFIERS=@im=ibus
DESKTOP_SESSION=default
GPG_TTY=/dev/pts/0
PWD=/home/doof/bin/firefox
QEMU_AUDIO_DRV=pa
XDG_SESSION_DESKTOP=default
LOGNAME=doof
XDG_SESSION_TYPE=x11
MANPATH=/usr/local/man:/usr/share/man
SYSTEMD_EXEC_PID=1773
XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.OKO0E2
LS_OPTIONS=-N --color=tty -T 0
XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
XNLSPATH=/usr/share/X11/nls
HOME=/home/doof
USERNAME=doof
LANG=en_US.UTF-8
LS_COLORS=no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tgz=00;31:*.arc=00;31:*.arj=00;31:*.taz=00;31:*.lha=00;31:*.lz4=00;31:*.lzh=00;31:*.lzma=00;31:*.tlz=00;31:*.txz=00;31:*.tzo=00;31:*.t7z=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.dz=00;31:*.gz=00;31:*.lrz=00;31:*.lz=00;31:*.lzo=00;31:*.xz=00;31:*.zst=00;31:*.tzst=00;31:*.bz2=00;31:*.bz=00;31:*.tbz=00;31:*.tbz2=00;31:*.tz=00;31:*.deb=00;31:*.rpm=00;31:*.jar=00;31:*.war=00;31:*.ear=00;31:*.sar=00;31:*.rar=00;31:*.alz=00;31:*.ace=00;31:*.zoo=00;31:*.cpio=00;31:*.7z=00;31:*.rz=00;31:*.cab=00;31:*.wim=00;31:*.swm=00;31:*.dwm=00;31:*.esd=00;31:*.asf=01;35:*.avi=01;35:*.bmp=01;35:*.cgm=01;35:*.dl=01;35:*.emf=01;35:*.flc=01;35:*.fli=01;35:*.flv=01;35:*.gif=01;35:*.gl=01;35:*.jpeg=01;35:*.jpg=01;35:*.m2v=01;35:*.m4v=01;35:*.mjpeg=01;35:*.mjpg=01;35:*.mkv=01;35:*.mng=01;35:*.mov=01;35:*.mp4=01;35:*.mp4v=01;35:*.mpeg=01;35:*.mpg=01;35:*.nuv=01;35:*.ogm=01;35:*.pbm=01;35:*.pcx=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.qt=01;35:*.rm=01;35:*.rmvb=01;35:*.svg=01;35:*.svgz=01;35:*.tga=01;35:*.tif=01;35:*.tiff=01;35:*.vob=01;35:*.webm=01;35:*.webp=01;35:*.wmv=01;35:*.xbm=01;35:*.xcf=01;35:*.xpm=01;35:*.xwd=01;35:*.yuv=01;35:*.ogv=01;35:*.ogx=01;35:*.aiff=00;32:*.ape=00;32:*.aac=00;32:*.au=00;32:*.flac=00;32:*.m4a=00;32:*.mid=00;32:*.midi=00;32:*.mka=00;32:*.mp3=00;32:*.mpc=00;32:*.ogg=00;32:*.ra=00;32:*.voc=00;32:*.wav=00;32:*.wma=00;32:*.wv=00;32:*.oga=00;32:*.opus=00;32:*.spx=00;32:*.xspf=00;32:
XDG_CURRENT_DESKTOP=gamescope
PYTHONSTARTUP=/etc/pythonstart
VTE_VERSION=7401
OSTYPE=linux
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/9c5ec265_c981_4e35_bc88_5d0f607c46bb
LESS_ADVANCED_PREPROCESSOR=no
MOZ_GMP_PATH=/usr/lib64/mozilla/plugins/gmp-gmpopenh264/system-installed
GNOME_SETUP_DISPLAY=:1
LESSCLOSE=lessclose.sh %s %s
XDG_SESSION_CLASS=user
TERM=xterm-256color
G_FILENAME_ENCODING=@locale,UTF-8,ISO-8859-15,CP1252
HOST=localhost.localdomain
XAUTHLOCALHOSTNAME=localhost.localdomain
LESSOPEN=lessopen.sh %s
USER=doof
GNOME_TERMINAL_SERVICE=:1.184
MORE=-sl
CSHEDIT=emacs
DISPLAY=:2
SHLVL=1
WINDOWMANAGER=/usr/bin/gnome
PAGER=less
QT_IM_MODULE=ibus
XDG_RUNTIME_DIR=/run/user/1000
DEBUGINFOD_URLS=https://debuginfod.opensuse.org/ 
MANPATHISSET=yes
GTK3_MODULES=lunar-calendar-module
XDG_DATA_DIRS=/home/doof/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/
VENDOR=suse
CONFIG_SITE=/usr/share/site/x86_64-pc-linux-gnu
PATH=/home/doof/.local/bin:/home/doof/bin:/usr/local/bin:/usr/bin:/bin:/home/doof/local/flutter/bin:/home/doof/local/flutter/bin
GDMSESSION=default
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
PROFILEREAD=true
MAIL=/var/mail/doof
HOSTTYPE=x86_64
LESSKEY=/usr/etc/lesskey.bin
_=/usr/bin/gamescope
OLDPWD=/home/doof
DISABLE_LAYER_AMD_SWITCHABLE_GRAPHICS_1=1
XWAYLAND_FORCE_ENABLE_EXTRA_MODES=1
vk_khr_present_wait=true
STEAM_GAME_DISPLAY_0=:2
GAMESCOPE_WAYLAND_DISPLAY=gamescope-0
ENABLE_GAMESCOPE_WSI=1

I filed a new bug. bugzilla.mozilla.org/show_bug.cgi?id=1867714

Status: UNCONFIRMED → NEW
Depends on: wayland
No longer depends on: wayland-stable
Ever confirmed: true
Depends on: wayland-stable
No longer depends on: wayland
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: