> 1. Firefox is trying to call org.freedesktop.portal.FileChooser. The provided "method" in xdg (is that what you call it, a method?) is org.freedesktop.impl.portal.FileChooser. Dunno if the .impl missing in one of those means anything.
Those dotted names are interfaces, not methods.
The fact that there are two interfaces with/without .impl is an xdg-desktop-portal thing. The way it works is that the sandboxed application talks to the interface *without* .impl, which is provided by the desktop-agnostic xdg-desktop-portal service. x-d-p uses portals.conf(5) to choose an appropriate desktop-specific *backend*, like perhaps x-d-p-gtk or x-d-p-lxqt, which provides the version of the interface *with* .impl.
For some interfaces like FileChooser the version with/without .impl are very similar, but for other interfaces it isn't an obvious 1:1 mapping.
> 2. Running "/usr/libexec/xdg-desktop-portal --verbose --replace" in a terminal fixes the problem while that command is left running. The problem immediately resurfaces when the process is terminated.
That probably means that the variable $XDG_CURRENT_DESKTOP is set correctly in your terminal, but incorrectly in the activation environment. When you are in the bad state, what is $XDG_CURRENT_DESKTOP in your shell, and what is it in `systemctl show-environment`?
> 1. Firefox is trying to call org.freedesktop .portal. FileChooser. The provided "method" in xdg (is that what you call it, a method?) is org.freedesktop .impl.portal. FileChooser. Dunno if the .impl missing in one of those means anything.
Those dotted names are interfaces, not methods.
The fact that there are two interfaces with/without .impl is an xdg-desktop-portal thing. The way it works is that the sandboxed application talks to the interface *without* .impl, which is provided by the desktop-agnostic xdg-desktop-portal service. x-d-p uses portals.conf(5) to choose an appropriate desktop-specific *backend*, like perhaps x-d-p-gtk or x-d-p-lxqt, which provides the version of the interface *with* .impl.
For some interfaces like FileChooser the version with/without .impl are very similar, but for other interfaces it isn't an obvious 1:1 mapping.
> 2. Running "/usr/libexec/ xdg-desktop- portal --verbose --replace" in a terminal fixes the problem while that command is left running. The problem immediately resurfaces when the process is terminated.
That probably means that the variable $XDG_CURRENT_ DESKTOP is set correctly in your terminal, but incorrectly in the activation environment. When you are in the bad state, what is $XDG_CURRENT_ DESKTOP in your shell, and what is it in `systemctl show-environment`?