Disappointng. One more thing and then I’m all out ideas. That should have worked if xdg-desktop-portal is able to read the files (specially desktop-used-apps) in ~/.local/share/flatpak/db/
One thing that would aid in troubleshooting is installing the flatpak executable for the simple reason that it’s much easier to use than constructing syntactically fragile gdbus commands.
Fortunately, for our purposes it’s not required that you install the full flatpak package, but just the flatpak executable from it. This is how I have it on my system.
$ sudo apt install libostree-1-1 --no-install-recommends required by flatpak
$ apt download flatpak to fetch flatpak package
- Extract flatpak binary from deb package into current directory
$ dpkg-deb --fsys-tarfile flatpak_1.16.6-1_amd64.deb |tar -xvf - --strip-components=3 ./usr/bin/flatpak
- move flatpak binary to ~/bin directory. If you don’t have ~/bin, create it.
Now with the flatpak executable in your $PATH, you can use it to read and edit values within the permissionstore.
First, delete snap.firefox permission for application/pdf handler
$ flatpak permission-remove desktop-used-apps application/pdf snap.firefox
Confirm it’s gone
$ flatpak permission-show snap.firefox
We could use flatpak to add the permission back, but that won’t tell us why xdg-desktop-portal is apparently failing to do it or why its not reading the values stored.
So let’s try this:
- Close all snap user applications you have opened including firefox. Anything that uses xdg-desktop-portal should be closed. Goal is to minimize debug output specifically to firefox’s interaction with xdg-desktop-portal
- In a terminal, execute
~$ /usr/libexec/xdg-desktop-portal -v -r 2>&1 |tee portal-debug.txt
- While that’s running, open firefox and choose and open a pdf link.
- When the xdg-desktop-portal dialog appears choose Evince (Document Viewer) and let it open the pdf.
- Close evince and firefox. Switch to terminal an enter Ctrl-C to quit the xdg-desktop-portal program.
- Examine the portal-debug.txt file and look at the entries towards the very bottom:
portal-debug.txt
XDP: Looking for portals configuration in '/home/gpmitch/.config/xdg-desktop-portal/ubuntu-portals.conf'
XDP: Looking for portals configuration in '/home/gpmitch/.config/xdg-desktop-portal/gnome-portals.conf'
XDP: Looking for portals configuration in '/home/gpmitch/.config/xdg-desktop-portal/portals.conf'
XDP: Looking for portals configuration in '/etc/xdg/xdg-ubuntu-wayland/xdg-desktop-portal/ubuntu-portals.conf'
XDP: Looking for portals configuration in '/etc/xdg/xdg-ubuntu-wayland/xdg-desktop-portal/gnome-portals.conf'
XDP: Looking for portals configuration in '/etc/xdg/xdg-ubuntu-wayland/xdg-desktop-portal/portals.conf'
XDP: Looking for portals configuration in '/etc/xdg/xdg-desktop-portal/ubuntu-portals.conf'
XDP: Looking for portals configuration in '/etc/xdg/xdg-desktop-portal/gnome-portals.conf'
XDP: Looking for portals configuration in '/etc/xdg/xdg-desktop-portal/portals.conf'
XDP: Looking for portals configuration in '/etc/xdg-desktop-portal/ubuntu-portals.conf'
XDP: Looking for portals configuration in '/etc/xdg-desktop-portal/gnome-portals.conf'
XDP: Looking for portals configuration in '/etc/xdg-desktop-portal/portals.conf'
XDP: Looking for portals configuration in '/home/gpmitch/.local/share/xdg-desktop-portal/ubuntu-portals.conf'
XDP: Looking for portals configuration in '/home/gpmitch/.local/share/xdg-desktop-portal/gnome-portals.conf'
XDP: Looking for portals configuration in '/home/gpmitch/.local/share/xdg-desktop-portal/portals.conf'
XDP: Looking for portals configuration in '/usr/share/ubuntu-wayland/xdg-desktop-portal/ubuntu-portals.conf'
XDP: Looking for portals configuration in '/usr/share/ubuntu-wayland/xdg-desktop-portal/gnome-portals.conf'
XDP: Looking for portals configuration in '/usr/share/ubuntu-wayland/xdg-desktop-portal/portals.conf'
XDP: Looking for portals configuration in '/usr/share/gnome/xdg-desktop-portal/ubuntu-portals.conf'
XDP: Looking for portals configuration in '/usr/share/gnome/xdg-desktop-portal/gnome-portals.conf'
XDP: Looking for portals configuration in '/usr/share/gnome/xdg-desktop-portal/portals.conf'
XDP: Looking for portals configuration in '/usr/local/share/xdg-desktop-portal/ubuntu-portals.conf'
XDP: Looking for portals configuration in '/usr/local/share/xdg-desktop-portal/gnome-portals.conf'
XDP: Looking for portals configuration in '/usr/local/share/xdg-desktop-portal/portals.conf'
XDP: Looking for portals configuration in '/usr/share/xdg-desktop-portal/ubuntu-portals.conf'
XDP: Looking for portals configuration in '/usr/share/xdg-desktop-portal/gnome-portals.conf'
XDP: Preferred portals for interface 'default': gnome, gtk
XDP: Preferred portals for interface 'org.freedesktop.impl.portal.Secret': gnome-keyring
XDP: Using portal configuration file '/usr/share/xdg-desktop-portal/gnome-portals.conf' for desktop 'gnome'
XDP: load portals from /usr/share/xdg-desktop-portal/portals
XDP: loading /usr/share/xdg-desktop-portal/portals/gnome-keyring.portal
XDP: portal implementation supports org.freedesktop.impl.portal.Secret
XDP: loading /usr/share/xdg-desktop-portal/portals/gnome.portal
XDP: portal implementation supports org.freedesktop.impl.portal.Access
XDP: portal implementation supports org.freedesktop.impl.portal.Account
XDP: portal implementation supports org.freedesktop.impl.portal.AppChooser
XDP: portal implementation supports org.freedesktop.impl.portal.Background
XDP: portal implementation supports org.freedesktop.impl.portal.Clipboard
XDP: portal implementation supports org.freedesktop.impl.portal.DynamicLauncher
XDP: portal implementation supports org.freedesktop.impl.portal.FileChooser
XDP: portal implementation supports org.freedesktop.impl.portal.InputCapture
XDP: portal implementation supports org.freedesktop.impl.portal.Lockdown
XDP: portal implementation supports org.freedesktop.impl.portal.Print
XDP: portal implementation supports org.freedesktop.impl.portal.RemoteDesktop
XDP: portal implementation supports org.freedesktop.impl.portal.ScreenCast
XDP: portal implementation supports org.freedesktop.impl.portal.Screenshot
XDP: portal implementation supports org.freedesktop.impl.portal.Settings
XDP: portal implementation supports org.freedesktop.impl.portal.Wallpaper
XDP: loading /usr/share/xdg-desktop-portal/portals/gtk.portal
XDP: portal implementation supports org.freedesktop.impl.portal.FileChooser
XDP: portal implementation supports org.freedesktop.impl.portal.AppChooser
XDP: portal implementation supports org.freedesktop.impl.portal.Print
XDP: portal implementation supports org.freedesktop.impl.portal.Notification
XDP: portal implementation supports org.freedesktop.impl.portal.Inhibit
XDP: portal implementation supports org.freedesktop.impl.portal.Access
XDP: portal implementation supports org.freedesktop.impl.portal.Account
XDP: portal implementation supports org.freedesktop.impl.portal.Email
XDP: portal implementation supports org.freedesktop.impl.portal.DynamicLauncher
XDP: portal implementation supports org.freedesktop.impl.portal.Lockdown
XDP: portal implementation supports org.freedesktop.impl.portal.Settings
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.Lockdown (config)
XDP: providing portal org.freedesktop.portal.MemoryMonitor
XDP: providing portal org.freedesktop.portal.PowerProfileMonitor
XDP: providing portal org.freedesktop.portal.NetworkMonitor
XDP: providing portal org.freedesktop.portal.ProxyResolver
XDP: providing portal org.freedesktop.portal.Trash
XDP: providing portal org.freedesktop.portal.GameMode
XDP: providing portal org.freedesktop.portal.Realtime
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.Settings (config)
XDP: Found 'gtk' in configuration for default
XDP: Using gtk.portal for org.freedesktop.impl.portal.Settings (config)
XDP: providing portal org.freedesktop.portal.Settings
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.FileChooser (config)
XDP: providing portal org.freedesktop.portal.FileChooser
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.AppChooser (config)
XDP: providing portal org.freedesktop.portal.OpenURI
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.Print (config)
XDP: providing portal org.freedesktop.portal.Print
XDP: Found 'gtk' in configuration for default
XDP: Using gtk.portal for org.freedesktop.impl.portal.Notification (config)
XDP: providing portal org.freedesktop.portal.Notification
XDP: Found 'gtk' in configuration for default
XDP: Using gtk.portal for org.freedesktop.impl.portal.Inhibit (config)
XDP: providing portal org.freedesktop.portal.Inhibit
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.Access (config)
XDP: providing portal org.freedesktop.portal.Device
XDP: providing portal org.freedesktop.portal.WebExtensions
XDP: providing portal org.freedesktop.portal.Location
XDP: providing portal org.freedesktop.portal.Camera
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.Screenshot (config)
XDP: providing portal org.freedesktop.portal.Screenshot
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.Background (config)
XDP: Starting background app monitor
XDP: providing portal org.freedesktop.portal.Background
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.Wallpaper (config)
XDP: providing portal org.freedesktop.portal.Wallpaper
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.Account (config)
XDP: using org.freedesktop.impl.portal.Account at org.freedesktop.impl.portal.desktop.gnome
XDP: providing portal org.freedesktop.portal.Account
XDP: Found 'gtk' in configuration for default
XDP: Using gtk.portal for org.freedesktop.impl.portal.Email (config)
XDP: providing portal org.freedesktop.portal.Email
XDP: Found 'gnome-keyring' in configuration for org.freedesktop.impl.portal.Secret
XDP: Using gnome-keyring.portal for org.freedesktop.impl.portal.Secret (config)
XDP: providing portal org.freedesktop.portal.Secret
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.DynamicLauncher (config)
XDP: providing portal org.freedesktop.portal.DynamicLauncher
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.ScreenCast (config)
XDP: providing portal org.freedesktop.portal.ScreenCast
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.RemoteDesktop (config)
XDP: providing portal org.freedesktop.portal.RemoteDesktop
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.Clipboard (config)
XDP: providing portal org.freedesktop.portal.Clipboard
XDP: Found 'gnome' in configuration for default
XDP: Using gnome.portal for org.freedesktop.impl.portal.InputCapture (config)
XDP: providing portal org.freedesktop.portal.InputCapture
XDP: org.freedesktop.portal.Desktop acquired
XDP: Running: snap routine portal-info 28434
XDP: Running app windows changed, wake up monitor thread
XDP: webextensions session owned by ':1.275' created
XDP: Checking background permissions
XDP: Checking background permissions
XDP: document portal returned empty doc id for path '/home/gpmitch/Downloads/SUL_Marketplace_Cooking-Instructions_Final.pdf'
XDP: OpenFile: translating path value '/home/gpmitch/Downloads/SUL_Marketplace_Cooking-Instructions_Final.pdf' to host path '/home/gpmitch/Downloads/SUL_Marketplace_Cooking-Instructions_Final.pdf'
XDP: Content type for file /home/gpmitch/Downloads/SUL_Marketplace_Cooking-Instructions_Final.pdf: application/pdf
XDP: Default handler org.gnome.Evince for file, application/pdf
XDP: Recommended handlers for file, application/pdf: wine, org.gnome.Evince, chromium_chromium, vivaldi_vivaldi-stable, display-im6.q16, chromium_daemon, firefox_firefox, gimp_gimp, libreoffice_draw
XDP: Found in permission store: handler: (null), count: 0 / 3, always ask: 0
XDP: (null)
XDP: Opening app chooser
XDP: Received choice org.gnome.Evince
XDP: Launching org.gnome.Evince file:///home/gpmitch/Downloads/SUL_Marketplace_Cooking-Instructions_Final.pdf
XDP: Found in permission store: handler: (null), count: 0 / 3, always ask: 0
XDP: updating permissions for snap.firefox: content-type application/pdf, handler org.gnome.Evince, count 1 / 3
XDP: Read org.freedesktop.appearance color-scheme
XDP: Read org.freedesktop.appearance contrast
XDP: Running app windows changed, wake up monitor thread
Specifically this section:
XDP: Found in permission store: handler: (null), count: 0 / 3, always ask: 0
XDP: (null)
XDP: Opening app chooser
XDP: Received choice org.gnome.Evince
XDP: Launching org.gnome.Evince file:///home/gpmitch/Downloads/SUL_Marketplace_Cooking-Instructions_Final.pdf
XDP: Found in permission store: handler: (null), count: 0 / 3, always ask: 0
XDP: updating permissions for snap.firefox: content-type application/pdf, handler org.gnome.Evince, count 1 / 3
xdg-desktop-portal looks to see if there’s an entry for snap.firefox on how to handle application/pdf. Doesn’t find one, but is aware that the application/pdf files are default handled by Evince, so it selects it by default and opens it and passes the pdf URI when user chooses it. It reports count of 0 for how many times this has occurred before. Always ask is set to 0 or false. If evince launch is successful it increments the count successfully.
Look over the file here and see if it matches what you see on your system. The only things that should be that different is the pdf file to open and home directory paths.