You are not logged in.
[ALPM] upgraded xdg-desktop-portal (1.20.4-1 -> 1.22.0-1)
After doing this upgrade I noticed that dark mode in my cinnamon Desktop stopped working. Looking at the logs revealed that my xdg-desktop-portal.service is failing with the following message:
Jun 10 22:44:54 archlinux systemd[1185]: Dependency failed for Portal service.
Jun 10 22:44:54 archlinux systemd[1185]: xdg-desktop-portal.service: Job xdg-desktop-portal.service/start failed with result 'dependency'.
$ systemctl --user start xdg-desktop-portal.service
A dependency job for xdg-desktop-portal.service failed. See 'journalctl -xe' for details.
$journalctl -xe
Jun 11 07:02:50 archlinux systemd[1185]: Current graphical user session is inactive.
Jun 11 07:02:50 archlinux systemd[1185]: Dependency failed for Portal service.
Starting $ /usr/lib/xdg-desktop-portal from the shell brings back dark mode as a workaround.
[edit]
For now the workaround mentioned in the github issue linked by wekauwau works for me:
$ systemctl --user edit xdg-desktop-portal.service --drop-in=override
$ cat /home/ldierk/.config/systemd/user/xdg-desktop-portal.service.d/override.conf
[Unit]
Requisite=
Requires=graphical-session.target
[edit2]
The solution posted by tekstryder also works for me, so I mark this solved.
$ systemctl --user edit --full xdg-desktop-portal.service
$ systemctl --user cat xdg-desktop-portal.service
# /home/ldierk/.config/systemd/user/xdg-desktop-portal.service
[Unit]
Description=Portal service
PartOf=graphical-session.target
#Requisite=graphical-session.target # removed = workaround
Requires=dbus.service
After=dbus.service graphical-session-pre.target[Service]
Type=dbus
BusName=org.freedesktop.portal.Desktop
ExecStart=/usr/lib/xdg-desktop-portal
Slice=session.slice
Last edited by ldierk (2026-06-11 15:04:47)
Offline
Maybe it's related to this
Offline
I have to admit that I don't fully understand the issue you linked, but my environment probably fits the description.
graphical-session.target and xdg-desktop-portal.service reside in /usr/lib/systemd/user/.
xdg-desktop-portal.service has a requisite of graphical-session.target.
There is no systemd service for cinnamon. I assume lightdm is starting it.
root 115907 754 0 Jun10 ? 00:00:00 lightdm --session-child 12 20
ldierk 116029 115907 0 Jun10 ? 00:00:00 /usr/lib/cinnamon-session/cinnamon-session-binary --session cinnamon
$ cat /usr/lib/systemd/user/xdg-desktop-portal.service
[Unit]
Description=Portal service
PartOf=graphical-session.target
Requisite=graphical-session.target
After=graphical-session.target[Service]
Type=dbus
BusName=org.freedesktop.portal.Desktop
ExecStart=/usr/lib/xdg-desktop-portal
Slice=session.slice
$ cat /usr/lib/systemd/system/lightdm.service
[Unit]
Description=Light Display Manager
Documentation=man:lightdm(1)
Conflicts=getty@tty1.service
After=getty@tty1.service systemd-user-sessions.service plymouth-quit.service acpid.service[Service]
ExecStart=/usr/bin/lightdm
Restart=always
IgnoreSIGPIPE=no
BusName=org.freedesktop.DisplayManager[Install]
Alias=display-manager.service
Last edited by ldierk (2026-06-11 06:47:56)
Offline
I filed an Arch issue yesterday to see if the maintainer will consider patching out the Requisite=graphical-session.target:
• https://gitlab.archlinux.org/archlinux/ … rk_items/4
It hasn't been rejected outright at least.
And yes as @wekauwau found, the relevant upstream issue is:
• https://github.com/flatpak/xdg-desktop- … ssues/1983
Caused by this MR:
• https://github.com/flatpak/xdg-desktop-portal/pull/1830
For now you can just use a drop-in. I stole the Ubuntu patch method:
~ ❯ systemctl --user cat xdg-desktop-portal.service
# /home/tekstryder/.config/systemd/user/xdg-desktop-portal.service
[Unit]
Description=Portal service
PartOf=graphical-session.target
#Requisite=graphical-session.target # removed = workaround
Requires=dbus.service
After=dbus.service graphical-session-pre.target
[Service]
Type=dbus
BusName=org.freedesktop.portal.Desktop
ExecStart=/usr/lib/xdg-desktop-portal
Slice=session.sliceJust remember to zap that file away if we get a distro-patched pkgrel bump.
Offline
For Sway users, the drop-in workaround is no longer required:
• https://gitlab.archlinux.org/archlinux/ … 37ebef70bb
This accomodates the x-d-p change by creating sway-session.target which binds to graphical-session.target.
Offline
I have also encountered this issue on hyprland after the update.
It has successfully fixed by starting my hyprland session with:
dbus-run-session start-hyprland instead of just start-hyprland. This ensures graphical-session.target to run, which was a dependency of xdg-desktop-portal.
Offline
dbus-run-session start-hyprlandinstead of just start-hyprland.
Yikes. Please, no.
That method should never be used for a variety of reasons (do your research), but foremost is that services launched by Hyprland won't inherit a sane systemd user session environment
To see just how broken a session you've created, let's compare the process trees:
$ start-hyprland
zsh───start-hyprland───Hyprland─┬─gammastep
├─hypridle
└─ptyxis───ptyxis-agent───zsh───pstree
systemd─┬─(sd-pam)
├─at-spi-bus-laun───dbus-broker-lau───dbus-broker
├─at-spi2-registr
├─dbus-broker-lau───dbus-broker
├─dconf-service
├─gvfsd
├─gvfsd-fuse
├─pipewire
├─wireplumber
├─xdg-desktop-por
├─xdg-desktop-por
├─xdg-document-po───fusermount3
└─xdg-permission-$ dbus-run-session start-hyprland
at-spi-bus-laun───dbus-daemon
at-spi2-registr
dconf-service
gvfsd
gvfsd-fuse
zsh───dbus-run-sessio─┬─dbus-daemon
└─start-hyprland───Hyprland─┬─gammastep
├─hypridle
└─ptyxis───ptyxis-agent───zsh───pstree
systemd─┬─(sd-pam)
├─dbus-broker-lau───dbus-broker
├─pipewire
└─wireplumber
xdg-desktop-por
xdg-desktop-por
xdg-document-po───fusermount3
xdg-permission-Offline