niri is delayed from starting if network is unavailable
If my network connection is down after booting up, after logging in I always get this message:
`graphical.target is queued for start, waiting for 60s...`
**On my desktop**, with ethernet, if my power goes out and I reboot my machine it gets to the point where I can login before my router is ready.
**On my laptop**, if I'm at a new location where wifi isn't configured, niri will be delayed for 1 minute before starting.
**In both cases**, niri will eventually start once the network is available or that 60s timeout is reached.
I am using uwsm to start niri, this runs in my zsh profile after logging in:
```sh
if uwsm check may-start; then exec uwsm start -- niri.desktop; fi
```
This desktop entry was created by niri during installation:
```
$ cat /usr/share/wayland-sessions/niri.desktop
[Desktop Entry]
Name=Niri
Comment=A scrollable-tiling Wayland compositor
Exec=niri-session
Type=Application
DesktopNames=niri
```
Given niri is being managed by uwsm, I am guessing there is some network dependency on whatever systemd unit file is being created for niri by uwsm, or is that not the case?
I did a little bit of poking around and found this, but it didn't seem to have much in it:
```sh
$ cat /run/user/1000/systemd/user/wayland-wm@niri.desktop.service.d/50_custom.conf
# injected by uwsm, do not edit
[Unit]
X-UWSMMark=niri.desktop
Description=Main service for Niri, A scrollable-tiling Wayland compositor
```
I'm using vanilla Arch, here's dependencies for that target, `systemd-networkd.service` is in there:
```
$ systemctl list-dependencies graphical.target
graphical.target
○ ├─display-manager.service
● └─multi-user.target
● ├─dbus-broker.service
● ├─docker.service
● ├─lactd.service
● ├─systemd-ask-password-wall.path
● ├─systemd-logind.service
● ├─systemd-networkd.service
● ├─systemd-user-sessions.service
● ├─basic.target
● │ ├─-.mount
● │ ├─tmp.mount
● │ ├─paths.target
● │ ├─slices.target
● │ │ ├─-.slice
● │ │ └─system.slice
● │ ├─sockets.target
● │ │ ├─dbus.socket
● │ │ ├─dirmngr@etc-pacman.d-gnupg.socket
● │ │ ├─dm-event.socket
● │ │ ├─gpg-agent-browser@etc-pacman.d-gnupg.socket
● │ │ ├─gpg-agent-extra@etc-pacman.d-gnupg.socket
● │ │ ├─gpg-agent-ssh@etc-pacman.d-gnupg.socket
● │ │ ├─gpg-agent@etc-pacman.d-gnupg.socket
● │ │ ├─keyboxd@etc-pacman.d-gnupg.socket
● │ │ ├─polkit-agent-helper.socket
● │ │ ├─sshd-unix-local.socket
● │ │ ├─systemd-ask-password.socket
● │ │ ├─systemd-bootctl.socket
● │ │ ├─systemd-coredump.socket
● │ │ ├─systemd-creds.socket
● │ │ ├─systemd-factory-reset.socket
● │ │ ├─systemd-hostnamed.socket
● │ │ ├─systemd-importd.socket
● │ │ ├─systemd-journald-dev-log.socket
● │ │ ├─systemd-journald.socket
● │ │ ├─systemd-logind-varlink.socket
● │ │ ├─systemd-machined.socket
● │ │ ├─systemd-mute-console.socket
● │ │ ├─systemd-networkd-resolve-hook.socket
● │ │ ├─systemd-networkd-varlink.socket
● │ │ ├─systemd-networkd.socket
○ │ │ ├─systemd-pcrextend.socket
○ │ │ ├─systemd-pcrlock.socket
● │ │ ├─systemd-repart.socket
● │ │ ├─systemd-resolved-monitor.socket
● │ │ ├─systemd-resolved-varlink.socket
● │ │ ├─systemd-sysext.socket
● │ │ ├─systemd-udevd-control.socket
● │ │ ├─systemd-udevd-kernel.socket
● │ │ ├─systemd-udevd-varlink.socket
● │ │ └─systemd-userdbd.socket
● │ ├─sysinit.target
● │ │ ├─dev-hugepages.mount
● │ │ ├─dev-mqueue.mount
● │ │ ├─kmod-static-nodes.service
● │ │ ├─ldconfig.service
● │ │ ├─proc-sys-fs-binfmt_misc.automount
● │ │ ├─sys-fs-fuse-connections.mount
● │ │ ├─sys-kernel-config.mount
● │ │ ├─sys-kernel-debug.mount
● │ │ ├─sys-kernel-tracing.mount
● │ │ ├─systemd-ask-password-console.path
○ │ │ ├─systemd-binfmt.service
● │ │ ├─systemd-boot-random-seed.service
○ │ │ ├─systemd-firstboot.service
○ │ │ ├─systemd-hibernate-clear.service
● │ │ ├─systemd-hwdb-update.service
● │ │ ├─systemd-journal-catalog-update.service
● │ │ ├─systemd-journal-flush.service
● │ │ ├─systemd-journald.service
○ │ │ ├─systemd-machine-id-commit.service
● │ │ ├─systemd-modules-load.service
● │ │ ├─systemd-network-generator.service
○ │ │ ├─systemd-pcrmachine.service
○ │ │ ├─systemd-pcrnvdone.service
○ │ │ ├─systemd-pcrphase-sysinit.service
○ │ │ ├─systemd-pcrphase.service
○ │ │ ├─systemd-pcrproduct.service
● │ │ ├─systemd-random-seed.service
○ │ │ ├─systemd-repart.service
● │ │ ├─systemd-resolved.service
● │ │ ├─systemd-sysctl.service
● │ │ ├─systemd-sysusers.service
● │ │ ├─systemd-timesyncd.service
● │ │ ├─systemd-tmpfiles-setup-dev-early.service
● │ │ ├─systemd-tmpfiles-setup-dev.service
● │ │ ├─systemd-tmpfiles-setup.service
○ │ │ ├─systemd-tpm2-setup-early.service
○ │ │ ├─systemd-tpm2-setup.service
● │ │ ├─systemd-udev-trigger.service
● │ │ ├─systemd-udevd.service
● │ │ ├─systemd-update-done.service
● │ │ ├─systemd-update-utmp.service
● │ │ ├─cryptsetup.target
● │ │ ├─imports.target
● │ │ ├─integritysetup.target
● │ │ ├─local-fs.target
● │ │ │ ├─-.mount
● │ │ │ ├─boot.mount
● │ │ │ ├─data-backup.mount
● │ │ │ ├─data-storage.mount
○ │ │ │ ├─systemd-fsck-root.service
● │ │ │ ├─systemd-remount-fs.service
● │ │ │ └─tmp.mount
● │ │ ├─swap.target
● │ │ │ └─dev-zram0.swap
● │ │ └─veritysetup.target
● │ └─timers.target
● │ ├─archlinux-keyring-wkd-sync.timer
● │ ├─fstrim.timer
● │ ├─man-db.timer
● │ ├─paccache.timer
● │ ├─shadow.timer
● │ └─systemd-tmpfiles-clean.timer
● ├─getty.target
● │ └─getty@tty1.service
● └─remote-fs.target
○ └─var-lib-machines.mount
```
关闭于 2026-03-07 8 条评论