Call for testing: native messaging support in the Firefox snap

Then that’s what’s wrong: the portal will look for manifests in ~/.mozilla/native-messaging-hosts/ and in /usr/lib/mozilla/native-messaging-hosts/, not under ~/snap/firefox/….

1 Like

ok. thanks. I will try that.
But it is confusing. The file in .mozilla/ is created by the keepassxc-snap-helper.sh script only when you lie and claim that firefox is not installed as a snap.

Edit: still not working. Is it maybe a problem that both firefox and keepassxc are snaps?
Edit 2: restarted everything one more time. now it works.

I just wanted to confirm that I experienced the same behavior in KDE. The KeePassXC browser extension connected when launched from the terminal or from the application menu with Launch Feedback set to No Feedback. When launched from the menu with Bouncing feedback, the KeePassXC browser extension will not connect.

I do not have Zoom installed; perhaps there are other applications that can cause the same issue?

With snap Firefox 106.0b6 and KDE I was able to get tridactyl and plasma-integration working after a reboot. I did more mucking about with flatpak permissions and symlinking ~/.mozilla than was necessary – the key was rebooting

1 Like

finally connector is working i have the compiled connector on my system i used it to install the new version of the connector in opera no more v6 error

I cannot get Firefox as a snap and KeePass from the PPA to work. I guess this :point_down: could be related, but I have no idea how to fix it.

$ flatpak permissions webextensions
error: The given address is empty
[Parent 16163: Main Thread]: D/NativeMessagingPortal NativeMessagingPortal::NativeMessagingPortal()
[Parent 16163: Main Thread]: D/NativeMessagingPortal will be used
[Parent 16163: Main Thread]: D/NativeMessagingPortal NativeMessagingPortal::DelayedCall::DelayedCall()
[Parent 16163: Main Thread]: D/NativeMessagingPortal failed to get a D-Bus proxy: The given address is empty
[Parent 16163, Main Thread] WARNING: OnProxyReady error: The given address is empty: 'glib warning', file /build/firefox/parts/firefox/build/toolkit/xre/nsSigHandlers.cpp:167

** (firefox-beta:16163): WARNING **: 09:49:55.137: OnProxyReady error: The given address is empty
[Parent 16163: Main Thread]: D/NativeMessagingPortal is not available
[Parent 16163: Main Thread]: D/NativeMessagingPortal NativeMessagingPortal::DelayedCall::~DelayedCall()
[Parent 16163: Main Thread]: D/NativeMessagingPortal will be used
[Parent 16163: Main Thread]: D/NativeMessagingPortal is not available

Firefox beta from snap:

$ snap list firefox
Name     Version    Rev   Tracking     Publisher  Notes
firefox  106.0b7-1  1912  latest/beta  mozilla✓   -
$ dpkg -l | grep keepassxc
ii  keepassxc                                                   2.7.1-1ppa1~jammy1                         amd64        KeePass Cross-Platform Community Edition
$ cat ~/.mozilla/native-messaging-hosts/org.keepassxc.keepassxc_browser.json 
{
    "allowed_extensions": [
        "keepassxc-browser@keepassxc.org"
    ],
    "description": "KeePassXC integration with native messaging support",
    "name": "org.keepassxc.keepassxc_browser",
    "path": "/usr/bin/keepassxc-proxy",
    "type": "stdio"
}

Yes, that’s confusing indeed. This is because it is indeed not supported by a stable snap yet. I’m making a note to suggest a change to that script once the support lands in stable.

1 Like

This error is relevant:

Sounds like the portal might not be available? Can you check whether xdg-desktop-portal is installed, and whether there is a process of the same name running?

1 Like

The process seems to be running:

$ ps aux | grep xdg-desktop-portal
slovdahl   14399  0.0  0.0 557844 17012 ?        Ssl  09:49   0:00 /usr/libexec/xdg-desktop-portal
slovdahl   14408  0.0  0.1 1295360 94448 ?       Ssl  09:49   0:05 /usr/libexec/xdg-desktop-portal-gnome
slovdahl   14784  0.0  0.0 348272 26924 ?        Ssl  09:49   0:01 /usr/libexec/xdg-desktop-portal-gtk

Not sure how relevant, but this is an old installation upgraded from Ubuntu 20.04 (and 18.04 before that, and probably 16.04 before that).

Also seeing this in the journal when starting Firefox:

okt 03 15:20:13 desk xdg-desktop-por[13826]: Could not find WebExtensions backend: cannot find native messaging server

And snap.snapd-desktop-integration.snapd-desktop-integration.service fails to start during boot:

okt 03 16:03:41 desk snapd-desktop-integration.snapd-desktop-integration[4620]: Sorry, home directories outside of /home are not currently supported.
okt 03 16:03:41 desk snapd-desktop-integration.snapd-desktop-integration[4620]: See https://forum.snapcraft.io/t/11209 for details.
okt 03 16:03:41 desk systemd[4525]: snap.snapd-desktop-integration.snapd-desktop-integration.service: Main process exited, code=exited, status=1/FAILURE
okt 03 16:03:41 desk systemd[4525]: snap.snapd-desktop-integration.snapd-desktop-integration.service: Failed with result 'exit-code'.

No idea what the error message means, my home directory is not outside /home.

I cannot open URLs with firefox <URL> from the terminal when Firefox is already running either, I wonder if both problems have the same root cause. :thinking:

EDIT: Seems like I’m not completely alone: https://askubuntu.com/questions/1426478/snap-firefox-is-already-running-but-is-not-responding

Now I also got this while starting Firefox, could it be related?

okt 03 19:52:54 desk systemd[5709]: Started snap.firefox.firefox.cf626230-5357-4854-a80d-ea2b7cdda834.scope.
okt 03 19:52:54 desk audit[1304]: USER_AVC pid=1304 uid=106 auid=4294967295 ses=4294967295 subj=? msg='apparmor="DENIED" operation="dbus_method_call"  bus="system" path="/org/freedesktop/DBus" interface="org.freedesktop.DBus" member="ListNames" mask="send" name="org.freedesktop.DBus" pid=17489 label="snap.firefox.firefox" peer_label="unconfined"
                                   exe="/usr/bin/dbus-daemon" sauid=106 hostname=? addr=? terminal=?'
okt 03 19:52:54 desk audit: MAC_TASK_CONTEXTS subj_apparmor=unconfined
okt 03 19:52:54 desk kernel: audit: type=1107 audit(1664815974.938:535): pid=1304 uid=106 auid=4294967295 ses=4294967295 subj=? msg='apparmor="DENIED" operation="dbus_method_call"  bus="system" path="/org/freedesktop/DBus" interface="org.freedesktop.DBus" member="ListNames" mask="send" name="org.freedesktop.DBus" pid=17489 label="snap.firefox.firefox" peer_label="unconfined"
                              exe="/usr/bin/dbus-daemon" sauid=106 hostname=? addr=? terminal=?'
okt 03 19:52:54 desk kernel: audit: type=1420 audit(1664815974.938:536): subj_apparmor=unconfined
okt 03 19:52:55 desk audit[17409]: SECCOMP auid=1000 uid=1000 gid=1000 ses=3 subj=? pid=17409 comm="firefox" exe="/snap/firefox/1912/usr/lib/firefox/firefox" sig=0 arch=c000003e syscall=314 compat=0 ip=0x7f4ad5ad873d code=0x50000
okt 03 19:52:55 desk kernel: audit: type=1326 audit(1664815975.018:537): auid=1000 uid=1000 gid=1000 ses=3 subj=? pid=17409 comm="firefox" exe="/snap/firefox/1912/usr/lib/firefox/firefox" sig=0 arch=c000003e syscall=314 compat=0 ip=0x7f4ad5ad873d code=0x50000
okt 03 19:52:55 desk kernel: audit: type=1107 audit(1664815975.286:540): pid=1304 uid=106 auid=4294967295 ses=4294967295 subj=? msg='apparmor="DENIED" operation="dbus_method_call"  bus="system" path="/org/freedesktop/DBus" interface="org.freedesktop.DBus" member="ListNames" mask="send" name="org.freedesktop.DBus" pid=17409 label="snap.firefox.firefox" peer_label="unconfined"
                              exe="/usr/bin/dbus-daemon" sauid=106 hostname=? addr=? terminal=?'
okt 03 19:52:55 desk kernel: audit: type=1420 audit(1664815975.286:541): subj_apparmor=unconfined
okt 03 19:52:55 desk audit: MAC_TASK_CONTEXTS subj_apparmor=unconfined
okt 03 19:52:55 desk audit[1304]: USER_AVC pid=1304 uid=106 auid=4294967295 ses=4294967295 subj=? msg='apparmor="DENIED" operation="dbus_method_call"  bus="system" path="/org/freedesktop/DBus" interface="org.freedesktop.DBus" member="ListNames" mask="send" name="org.freedesktop.DBus" pid=17409 label="snap.firefox.firefox" peer_label="unconfined"
                                   exe="/usr/bin/dbus-daemon" sauid=106 hostname=? addr=? terminal=?'
okt 03 19:52:55 desk audit: MAC_TASK_CONTEXTS subj_apparmor=unconfined

That at least means that the correct version of the XDG desktop portal is running. But it complains that it cannot find the manifest for a native app that was requested by an extension. It could be that it’s for another manifest that you haven’t installed though, not necessarily for the keepassxc one.

Would you mind filing a separate issue to get this problem investigated?

Can you share details on your desktop environment, whether it’s an X11 or Wayland session, relevant environment variables, etc?

No, it’s normal for a call to the very generic org.freedesktop.DBus.ListNames method to be denied.

1 Like

https://github.com/snapcore/snapd-desktop-integration/issues/23

Ubuntu 22.04.1, Gnome 42.4, X11 (but tested Wayland too, same problem).

Comparing with a clean Ubuntu 22.04 VM, I found these differences that I found relevant:

Environment variable Current Clean VM
DBUS_SESSION_BUS_ADDRESS [empty] unix:path=/run/user/1000/bus
DESKTOP_SESSION ubuntu ubuntu-xorg
XDG_CONFIG_DIRS /etc/xdg/xdg-ubuntu:/etc/xdg /etc/xdg/xdg-ubuntu-xorg:/etc/xdg/xdg-ubuntu:/etc/xdg
XDG_DATA_DIRS /usr/share/ubuntu:/usr/share/gnome:/home/slovdahl/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop:/var/lib/snapd/desktop /usr/share/ubuntu-xorg:/usr/share/gnome:/usr/share/ubuntu:/home/slovdahl/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
XDG_SESSION_DESKTOP ubuntu ubuntu-xorg

Are there other relevant environment variables? :thinking:

DBUS_SESSION_BUS_ADDRESS being empty is very suspicious, and looks like it could explain the problem.

1 Like

Indeed. Any idea of why it would not be set?

I tried setting it to the same value as the clean VM had when starting Firefox with DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus firefox and then doing DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus firefox google.com, and that actually opened the URL in the existing browser window :+1:

It also seems to fix the webextensions issue:

$ MOZ_LOG=NativeMessagingPortal:5 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus firefox_beta
[GFX1-]: glxtest: VA-API test failed: failed to initialise VAAPI connection.
ATTENTION: default value of option mesa_glthread overridden by environment.
ATTENTION: default value of option mesa_glthread overridden by environment.
[2022-10-05T11:21:41Z ERROR glean_core::metrics::ping] Invalid reason code startup for ping background-update
[Parent 1134864: Main Thread]: D/NativeMessagingPortal NativeMessagingPortal::NativeMessagingPortal()
[Parent 1134864: Main Thread]: D/NativeMessagingPortal will be used
[Parent 1134864: Main Thread]: D/NativeMessagingPortal NativeMessagingPortal::DelayedCall::DelayedCall()
[Parent 1134864: Main Thread]: D/NativeMessagingPortal D-Bus proxy ready for name org.freedesktop.portal.Desktop, path /org/freedesktop/portal/desktop, interface org.freedesktop.portal.WebExtensions
[Parent 1134864: Main Thread]: D/NativeMessagingPortal is available

And also setting the environment variable for flatpak gives me something that looks better:

$ DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus flatpak permissions webextensions
Table         Object                          App               Permissions Data
webextensions org.keepassxc.keepassxc_browser snap.firefox_beta no          0x00

So… How to get the environment variable properly set? :thinking:

usually your desktop session should be designed in a way that it spawns a dbus first thing before launching anything else… this should also export the variable with the correct path …

did you tinker in any way with your desktop session or your login manager (GDM most likely) ?

or is there anything else that is special about your desktop session that might differ from a standard desktop one ?

1 Like

Nothing that I can recall at least. :thinking: Any hints on what files I could compare with a clean Ubuntu 22.04 installation to find out? Nothing in /etc/bash.bashrc, /etc/profile, ~/.profile or ~/.bashrc stands out at least.

Alright, this is a bit embarrassing… I even tried to grep through my home folder and /etc for DBUS_SESSION_BUS_ADDRESS, but couldn’t find anything relevant for some reason. Until now when I happened to check the .desktop entry for my terminal application (in ~/.local/share/applications)…

Exec=env DBUS_SESSION_BUS_ADDRESS='' terminator

No recollection of where this comes from, but it has probably been there for 5-10 to years and been retained through backups.

1 Like

I was able to enable native-messaging with my app with the flatpak command to set the permission.

As I want to add the permission without installing flatpak, I’m exploring the DBus route (with org.freedesktop.impl.portal.PermissionStore) but I must restart the user session the be able to activate the permission.

Does anyone know how to refresh the PermissionStore without a session reset?

Yeah this is quite tricky. I can get native messaging starting from krunner only with sh -c 'firefox'. Running firefox or snap run firefox from it’s integrated terminal doesn’t work.