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]EDIT:
Patched xdg-desktop-portal 1.22.1-2 is now available, rendering the drop-in unnecessary.
• https://gitlab.archlinux.org/archlinux/ … type=heads
Last edited by tekstryder (Today 21:37:11)
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)
$ pacman -Qiik sway
Name : sway
Version : 1:1.12-3
Description : Tiling Wayland compositor and replacement for the i3 window manager
Architecture : x86_64
URL : https://swaywm.org/
Licenses : MIT
Groups : None
Provides : wayland-compositor
Depends On : cairo gdk-pixbuf2 libevdev.so=2-64 libinput libjson-c.so=5-64 libpixman-1.so=0-64 libudev.so=1-64 libwayland-server.so=0-64 libxcb
libxkbcommon.so=0-64 pango pcre2 ttf-font wlroots0.20 xcb-util-wm
Optional Deps : brightnessctl: Brightness adjustment tool used in the default configuration
foot: Terminal emulator used in the default configuration
grim: Screenshot utility used in the default configuration
i3status: Status line generation
libpulse: Volume adjustment tool (pactl) used in the default configuration [installed]
mako: Lightweight notification daemon [installed]
playerctl: Media player controller used in the default configuration
polkit: System privilege control. Required if not using seatd service [installed]
swaybg: Wallpaper tool for sway [installed]
sway-contrib: Collection of user-contributed scripts for sway
swayidle: Idle management daemon [installed]
swaylock: Screen locker [installed]
waybar: Highly customizable bar
wmenu: Application launcher used in default config
xorg-xwayland: X11 support [installed]
xdg-desktop-portal-gtk: Default xdg-desktop-portal for file picking [installed]
xdg-desktop-portal-wlr: xdg-desktop-portal backend
Required By : None
Optional For : None
Conflicts With : None
Replaces : None
Installed Size : 5,64 MiB
Packager : Brett Cornwall <ainola@archlinux.org>
Build Date : Sa 13 Jun 2026 21:56:17 CEST
Install Date : Fr 19 Jun 2026 08:43:36 CEST
Install Reason : Explicitly installed
Install Script : Yes
Validated By : Signature
Backup Files : /etc/sway/config [unmodified]
/etc/sway/config.d/50-systemd-user.conf [unmodified]
Extended Data : pkgtype=pkg
sway: 61 total files, 0 missing files$ pacman -Qs portal
local/xdg-desktop-portal 1.22.1-1
Desktop integration portals for sandboxed apps
local/xdg-desktop-portal-gtk 1.15.3-1
A backend implementation for xdg-desktop-portal using GTK$ systemctl --user status xdg-desktop-portal.service xdg-desktop-portal-gtk.service
○ xdg-desktop-portal.service - Portal service
Loaded: loaded (/usr/lib/systemd/user/xdg-desktop-portal.service; static)
Active: inactive (dead)
Jun 21 23:21:06 hostname systemd[566]: Dependency failed for Portal service.
Jun 21 23:21:06 hostname systemd[566]: xdg-desktop-portal.service: Job xdg-desktop-portal.service/start failed with result 'dependency'.
Jun 21 23:21:29 hostname systemd[566]: Dependency failed for Portal service.
Jun 21 23:21:29 hostname systemd[566]: xdg-desktop-portal.service: Job xdg-desktop-portal.service/start failed with result 'dependency'.
Jun 21 23:23:00 hostname systemd[1715]: Dependency failed for Portal service.
Jun 21 23:23:00 hostname systemd[1715]: xdg-desktop-portal.service: Job xdg-desktop-portal.service/start failed with result 'dependency'.
○ xdg-desktop-portal-gtk.service - Portal service (GTK/GNOME implementation)
Loaded: loaded (/usr/lib/systemd/user/xdg-desktop-portal-gtk.service; static)
Active: inactive (dead)$ 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)
Jun 21 23:21:06 systemd[566]: Dependency failed for Portal service.
Jun 21 23:21:06 systemd[566]: xdg-desktop-portal.service: Job xdg-desktop-portal.service/start failed with result 'dependency'.
Jun 21 23:21:29 systemd[566]: Dependency failed for Portal service.
Jun 21 23:21:29 systemd[566]: xdg-desktop-portal.service: Job xdg-desktop-portal.service/start failed with result 'dependency'.
Jun 21 23:23:00 systemd[1715]: Dependency failed for Portal service.
Jun 21 23:23:00 systemd[1715]: xdg-desktop-portal.service: Job xdg-desktop-portal.service/start failed with result 'dependency'.
-- No entries --
-- No entries --
-- No entries --Hope this helps. Thanks for looking into this!
Offline
@the_isz, see comment #13 and update to the patched pkgrel bump xdg-desktop-portal 1.22.1-2.
Either log out of your session and start afresh or after updating run...
systemctl --user daemon-reload
systemctl --user restart xdg-desktop-portal.service xdg-desktop-portal-gtk.service
systemctl --user status xdg-desktop-portal.service xdg-desktop-portal-gtk.serviceLast edited by tekstryder (Today 21:39:33)
Offline
About the sway situation, check /etc/sway/config.d/50-systemd-user.conf and find end command that's supposed to start the target
exec systemctl --user set-environment XDG_CURRENT_DESKTOP=sway && \
systemctl --user import-environment DISPLAY \
SWAYSOCK \
WAYLAND_DISPLAY \
XDG_CURRENT_DESKTOP && touch /tmp/wtf.1.proof \
systemctl --user start sway-session.target && touch /tmp/wtf.2.proof and see whether either /tmp/wtf.*.proof is created (this is unrelated to the xdg-desktop-portal update)
Offline