default=gtk is used for org.freedesktop.impl.portal.Inhibit. However,
xdg-desktop-portal-gtk's implementation of this interface tries to use
the DBus interfaces org.gnome.SessionManager and
org.freedesktop.ScreenSaver, neither of which is implemented by Sway.
One way this manifests is that newer versions of Firefox will not
idle-inhibit when playing videos.
Adding org.freedesktop.impl.portal.Inhibit=none to sway-portals.conf
will cause at least Firefox to use wayland's idle-inhibit protocol
instead, which sway does implement.
Fixes#2
The ScreenCast portal was misspelled as Screencast, which causes
xdg-desktop-portal to fall back to using the deprecated UseIn key from
the portal definitions, leading to a different portal being used if
multiple portals providing ScreenCast are installed.
Fixes#1
(cherry picked from commit e6a592c9d59ecbec5b5f89be989b8cc6e1072822)
As of version 1.17, xdg-desktop-portal requires desktops to declare
which portals should be used. For Sway, this requires a file
/usr/share/xdg-desktop-portal/sway-portals.conf (or a local user
config).
A reasonable default is to use GTK for the file picker (as wlr doesn't
have file picker support) and wlr for screencast/screenshot support.
Fedora does this similarly. [1]
Upstream is not interested in shipping a configuration file [2] so we
need to do it downstream.
Fixes#72297Fixes#79883
[1] https://src.fedoraproject.org/rpms/sway/blob/rawhide/f/sway-portals.conf
[2] https://github.com/swaywm/sway/issues/7773