# ───────────────────────────────────────────────────────────────────────────── # 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, Notification, Print, Access, and Settings as # the fallback behind gnome (see below) # 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). # # Settings -> gnome FIRST, gtk behind it. The frontend merges Settings # backends in order, so this is additive rather than a swap. # It has to be this way round because xdg-desktop-portal-gtk # cannot serve org.freedesktop.appearance accent-color at all -- # the string does not appear in the 1.15.3 binary -- so # libadwaita applications rendered in GNOME blue no matter what # accent this desktop was set to. The gnome backend serves it, # and gtk staying listed means color-scheme still resolves if # the gnome backend is ever unavailable. # # xdg-desktop-portal-gnome stays installed and is now used for two interfaces # 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 org.freedesktop.impl.portal.Settings=gnome;gtk