You are not logged in.
Brave and Chromium browsers fail to save or download files due to xdg-desktop-portal-gtk issues, often caused by a missing or broken portal service.
Solution:
We will remove xdg-desktop-portal-gtk, replace it with xdg-desktop-portal-xapp, and ensure browsers use the correct portal for file dialogs.
Step 1: Check Existing Portal Services
Run:
systemctl --user list-units --type=service | grep xdg-desktop-portal
If you see xdg-desktop-portal-gtk in a failed state, it's causing the issue.
Step 2: Remove xdg-desktop-portal-gtk
sudo pacman -Rns xdg-desktop-portal-gtk
This ensures the system no longer attempts to use GTK's implementation.
Step 3: Install xdg-desktop-portal-xapp
sudo pacman -S xdg-desktop-portal-xapp
This is the XApp (Cinnamon) implementation, which works better with Xfce and non-GNOME environments.
Step 4: Restart Portal Services
systemctl --user restart xdg-desktop-portal xdg-desktop-portal-xapp
Check if they are running correctly:
systemctl --user status xdg-desktop-portal xdg-desktop-portal-xapp
Both should show active (running).
Step 5: Restart Brave & Chromium with Correct Settings
Close all instances of Brave and Chromium:
pkill brave chromium
Now, start them using:
brave --enable-features=UseOzonePlatform --ozone-platform=wayland &
chromium --enable-features=UseOzonePlatform --ozone-platform=wayland &
If using Xorg, remove the --ozone-platform=wayland flag.
Step 6: Verify Portals Are Working
Check active portals:
xdg-desktop-portal --list
You should see xapp listed instead of gtk.
1️⃣ Set xdg-desktop-portal-xapp as the System-Wide Default
For a Single User
Create or edit this file:
mkdir -p ~/.config/environment.d
nano ~/.config/environment.d/xdg-desktop-portal.conf
Add the following line:
XDG_DESKTOP_PORTAL=xdg-desktop-portal-xapp
Save (Ctrl+X → Y → Enter) and apply:
systemctl --user restart xdg-desktop-portal xdg-desktop-portal-xapp
For All Users (System-Wide)
Edit or create:
sudo nano /etc/environment
Add:
XDG_DESKTOP_PORTAL=xdg-desktop-portal-xapp
Then reboot:
sudo reboot
2️⃣ Verify That xdg-desktop-portal-xapp is Active
Run:
systemctl --user status xdg-desktop-portal xdg-desktop-portal-xapp
You should see xdg-desktop-portal-xapp running and active.
Check the logs for any errors:
journalctl --user -b | grep xdg-desktop-portal
3️⃣ Test Browser & Apps Behavior
Restart your browser:
pkill brave chromium
brave &
chromium &
Try downloading a file. If the save dialog works fine, the change is successful.
If some apps break (e.g., missing file pickers in Flatpak apps), you may need to reinstall xdg-desktop-portal-gtk or use the XDG_CURRENT_DESKTOP=X-Generic appname workaround for individual apps.
"Great powers comes whit great responsibility"
Offline
So this is a PSA post that start's w/ an unspecific premise (some clients fail to save files, why? how?) and then instructs the intallation of the cinnamon-specific portal implementation. Specifically.
And ends with the caveat that this might break other clients…
https://wiki.archlinux.org/title/XDG_Desktop_Portal
If you want to use a specific portal implementaion, spoof XDG_CURRENT_DESKTOP
If there's any reference/documentaion reg. XDG_DESKTOP_PORTAL that'd belong into the wiki - I can't find that environment mentioned anywhere else on the internet.
What you really want to do (not using this shit-protocol at all aside) is to figure what the supposed issue w/ xdg-desktop-portal-gtk is and address that.
Offline