# ───────────────────────────────────────────────────────────────────────────── # Portal backend routing for the Hyprland session # # This overrides /usr/share/xdg-desktop-portal/hyprland-portals.conf, which # ships `default=hyprland;gtk` and no Secret mapping. # # Why each line: # hyprland -> Screenshot, ScreenCast, GlobalShortcuts, InputCapture # (this is what makes OBS / Sunshine / Zoom screen sharing work) # gtk -> FileChooser, Settings, Notification, Print, Access # Settings is load-bearing: xdg-desktop-portal-gtk reads # gsettings' org.gnome.desktop.interface and serves # org.freedesktop.appearance, which is how libadwaita apps know # to be dark. # Secret -> gnome-keyring. Its own portal file is UseIn=gnome, so under # XDG_CURRENT_DESKTOP=Hyprland nothing would claim Secret and # Flatpak apps needing credential storage would fail. # Background -> xdg-desktop-portal-gnome. It's the only installed backend # that implements this interface (gnome.portal is UseIn=gnome, # same problem as Secret above), and it runs as a standalone # daemon that doesn't need GNOME Shell or gnome-session -- # confirmed live: it starts cleanly under Hyprland and Flatpak # apps' RequestBackground calls succeed. Without this mapping # nothing serves org.freedesktop.portal.Background at all, so # any Flatpak app's own "run/start on login" toggle silently # fails (Bitwarden logged this on every launch). # # xdg-desktop-portal-gnome stays installed and is now used for one interface # here; it is still the default handler for the GNOME session. # ───────────────────────────────────────────────────────────────────────────── [preferred] default=hyprland;gtk org.freedesktop.impl.portal.Screenshot=hyprland org.freedesktop.impl.portal.ScreenCast=hyprland org.freedesktop.impl.portal.Secret=gnome-keyring org.freedesktop.impl.portal.Background=gnome