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
For Sway users, the drop-in workaround is no longer required:
• https://gitlab.archlinux.org/archlinux/ … 37ebef70bb
This accommodates the x-d-p change by creating sway-session.target which binds to graphical-session.target.
In a similar vein, hyprland users can apply this patch...
• https://github.com/hyprwm/Hyprland/comp … ion-target
...which works in the same way.
As Hyprland and Sway are my only environments, I've ditched my drop-in service and will just carry the hyprland patch going forward.
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.
Hi!
I'm using sway (version 1:1.12-3, logging in via sddm) and I still see the exact issue OP has reported, i.e. `journalctrl --user -u xdg-portal-portal.service` contains:
systemd[606]: Dependency failed for Portal service.
systemd[606]: xdg-desktop-portal.service: Job xdg-desktop-portal.service/start failed with result 'dependency'.Could I be doing something wrong or does the workaround not (fully) work?
Offline
logging in via sddm
And when you don't?
What is the portal service behavior when you start your Sway session directly from a TTY?
$ swayOffline
the_isz wrote:logging in via sddm
And when you don't?
What is the portal service behavior when you start your Sway session directly from a TTY?
$ sway
Thanks for your quick response!
When I start sway directly from a TTY, the behavior is exactly the same.
Do you want me to try anything else?
Offline
Logging in with SDDM disabled provide the outputs of:
$ pacman -Qiikk sway$ pacman -Qs portal$ systemctl --user status xdg-desktop-portal.service xdg-desktop-portal-gtk.serviceEDIT:
-and-
sort <(journalctl -b --user --no-hostname -t xdg-desktop-portal-gtk --no-pager "$@") <(journalctl -b --user --no-hostname -t xdg-document-portal --no-pager "$@") <(journalctl -b --user --no-hostname -t /usr/lib/xdg-desktop-portal --no-pager "$@") <(journalctl -b --user --no-hostname -t systemd --no-pager "$@" | grep -i portal)Last edited by tekstryder (Today 17:03:38)
Offline
As for my Arch packaging issue, latest comment (compositor-agnostic):
• https://gitlab.archlinux.org/archlinux/ … ote_500710
Since it breaks so many desktop environments, and there is no easy way to fix all of them to provide the graphical-session.target, I'm going to apply this patch proposed by an upstream maintainer:
https://github.com/flatpak/xdg-desktop-portal/pull/2027
Ultimately this will take the same patching approach as Ubuntu.
diff --git a/desktop-portal/xdg-desktop-portal.service.in b/desktop-portal/xdg-desktop-portal.service.in
index 1029f5901..d7a9e8b55 100644
--- a/desktop-portal/xdg-desktop-portal.service.in
+++ b/desktop-portal/xdg-desktop-portal.service.in
@@ -4,7 +4,8 @@
[Unit]
Description=Portal service
PartOf=graphical-session.target
-Requisite=graphical-session.target
+Requires=dbus.service
+After=dbus.service
After=graphical-session.target
[Service]Offline