Bug: [snap][wayland] Thunderbird snap on Wayland currently needs X11 interface to be connected
Status: RESOLVED
Priority: --
Resolution: WORKSFORME
Created: 2023-03-02 10:17:22+00:00
Resolved: 2023-10-16 08:22:45+00:00

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

Steps to reproduce:

In a wayland session: I disconnect the thunderbird snap from the x11 interface in order to run it native on wayland. 

If I do not disconnect it, it seems to use xwayland as information leaks out to other X11 applications.

Note: i tried to report this first to https://bugs.launchpad.net/ubuntu/+source/thunderbird/+bug/2003192 and will try to link that bug to this one


Actual results:

Thunderbird crashes saying it can not find the wayland socket.
If I add a link to the wayland socket inside the container thunderbird works fine. That is on kubuntu 22.04 in a plasma/wayland session, MOZ_ENABLE_WAYLAND=1 is set on the host and in the container as well.

This also probably means that the thunderbird snap actually never uses native wayland and falls back to xwayland (because the wayland socket can not be found).

This unintended use of xwayland could be interpreted as a security issue.
Someone who mistrusts snaps using X11 (like me) will remove the permission which leads to failure instead of a security issue.

$ snap run thunderbird ## BROKEN
...
[GFX1-]: glxtest: libpci missing
[GFX1-]: glxtest: Could not connect to wayland socket
[GFX1-]: No GPUs detected via PCI

(thunderbird:103861): Gtk-WARNING **: 12:37:14.162: cannot open display: :1
ExceptionHandler::GenerateDump cloned child 103976
ExceptionHandler::SendContinueSignalToChild sent continue signal to child
ExceptionHandler::WaitForContinueSignal waiting for continue signal...

$ snap run --shell thunderbird ## FIXING IT
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

user@user-mycomputer:/$ ln -s /run/user/1000/wayland-0 $XDG_RUNTIME_DIR/ ; exit
$ snap run thunderbird ## NOW IT WORKS

$ lsb_release -rd ## UBUNTU VERSION
Description: Ubuntu 22.04.1 LTS
Release: 22.04

$ snap interfaces thunderbird ## SNAP CONFIGURATION
Slot Plug
gnome-3-38-2004:gnome-3-38-2004 thunderbird
gtk-common-themes:gtk-3-themes thunderbird
gtk-common-themes:icon-themes thunderbird
gtk-common-themes:sound-themes thunderbird
:audio-playback thunderbird
:browser-support thunderbird:browser-sandbox
:cups-control thunderbird
:desktop thunderbird
:desktop-legacy thunderbird
:gsettings thunderbird
:home thunderbird
:network thunderbird
:opengl thunderbird
:system-files thunderbird:etc-thunderbird-policies
:wayland thunderbird
thunderbird:dbus-daemon -
- thunderbird:avahi-observe
- thunderbird:camera
- thunderbird:gpg-keys
- thunderbird:network-control
- thunderbird:removable-media
- thunderbird:u2f-devices
- thunderbird:x11

$ snap info thunderbird ## THUNDERBIRD SNAP VERSION
...
installed: 102.7.0-1 (288) 106MB -

$ snap --version ## SNAPD etc VERSION
snap 2.58
snapd 2.58
series 16
ubuntu 22.04
kernel 5.15.0-57-generic


Expected results:

Thunderbird should have run natively on wayland (without me having to fiddle inside the snap container).

Note: such a workaround is basically necessary for every snap using wayland. The mir project mentions this in their documentation about using ubuntu-frame in IoT and provides a wayland-launch helper script.
For documentation and script see the “wayland interface dance” in https://mir-server.io/docs/iot-gui-snaps-made-easy