create mango-session.target
This commit is contained in:
parent
207dac004e
commit
e7b71de3d8
|
|
@ -1,5 +1,10 @@
|
||||||
|
# Blueman is attached to mango-session.target so it does not start during
|
||||||
|
# early default.target boot, where WAYLAND_DISPLAY may be missing and start-pre
|
||||||
|
# can hang until timeout.
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Blueman Applet
|
Description=Blueman Applet
|
||||||
|
StartLimitIntervalSec=0
|
||||||
|
PartOf=mango-session.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
|
|
@ -7,7 +12,6 @@ ExecStartPre=/usr/bin/sh -c 'until [ -n "$WAYLAND_DISPLAY" ] && [ -S "$XDG_RUNTI
|
||||||
ExecStart=/usr/bin/blueman-applet
|
ExecStart=/usr/bin/blueman-applet
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=2
|
RestartSec=2
|
||||||
StartLimitIntervalSec=0
|
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=mango-session.target
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
# GCR prompter provides keyring prompt dialogs used by secret-service flows.
|
||||||
|
#
|
||||||
|
# Why this unit exists:
|
||||||
|
# - In compositor-only sessions this helper may not be auto-started.
|
||||||
|
# - Running it explicitly avoids missing prompt UI in keyring unlock paths.
|
||||||
|
#
|
||||||
|
# Why it is tied to mango-session.target:
|
||||||
|
# - It is a GUI helper and should follow the compositor session lifecycle.
|
||||||
|
[Unit]
|
||||||
|
Description=GCR Prompter
|
||||||
|
PartOf=mango-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/lib/gcr-prompter
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=2
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=mango-session.target
|
||||||
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
# gnome-keyring daemon for secrets + ssh components in TTY-launched mango
|
||||||
|
# sessions where PAM/autostart integration may not be present.
|
||||||
|
#
|
||||||
|
# Why this unit exists:
|
||||||
|
# - Ensures Secret Service (org.freedesktop.secrets) is available at login.
|
||||||
|
# - Avoids browser startup delays caused by secret-service timeouts.
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - This runs in foreground so systemd can supervise it directly.
|
||||||
|
# - SSH agent socket is created under %t/keyring/ssh.
|
||||||
|
[Unit]
|
||||||
|
Description=GNOME Keyring Daemon (Mango Session)
|
||||||
|
PartOf=mango-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/gnome-keyring-daemon --foreground --components=secrets,ssh
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=2
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=mango-session.target
|
||||||
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
# User target for GUI applets that must start only after mango has initialized
|
||||||
|
# a real Wayland session and exported session environment variables to
|
||||||
|
# systemd --user. We explicitly start this target from mango config once per
|
||||||
|
# login, which avoids the default.target race where WAYLAND_DISPLAY is not yet
|
||||||
|
# present in the user manager environment.
|
||||||
|
#
|
||||||
|
# Why this exists:
|
||||||
|
# - default.target starts too early for Wayland-dependent desktop applets
|
||||||
|
# - applets like waybar/swww/blueman then block in ExecStartPre and may timeout
|
||||||
|
# - starting one dedicated target after environment import is deterministic
|
||||||
|
#
|
||||||
|
# What depends on this:
|
||||||
|
# - waybar.service
|
||||||
|
# - swww.service
|
||||||
|
# - blueman-applet.service
|
||||||
|
#
|
||||||
|
# Start path:
|
||||||
|
# - mango exec-once runs:
|
||||||
|
# systemctl --user import-environment ...
|
||||||
|
# dbus-update-activation-environment --systemd ...
|
||||||
|
# systemctl --user start mango-session.target
|
||||||
|
#
|
||||||
|
# Stop path:
|
||||||
|
# - services are PartOf=mango-session.target, so stopping the target cleanly
|
||||||
|
# stops all attached applets.
|
||||||
|
[Unit]
|
||||||
|
Description=Mango Session Target
|
||||||
|
Documentation=man:systemd.target(5)
|
||||||
|
RefuseManualStop=no
|
||||||
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
/home/ray/.config/systemd/user/blueman-applet.service
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
/home/ray/.config/systemd/user/gcr-prompter.service
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
/home/ray/.config/systemd/user/gnome-keyring-session.service
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
/home/ray/.config/systemd/user/polkit-gnome-agent.service
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
/home/ray/.config/systemd/user/swww.service
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
/home/ray/.config/systemd/user/waybar.service
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Polkit authentication UI agent for non-DE Wayland sessions.
|
||||||
|
#
|
||||||
|
# Why this unit exists:
|
||||||
|
# - On WM/compositor-only sessions, no desktop environment may auto-start a
|
||||||
|
# polkit agent.
|
||||||
|
# - Without an agent, privilege prompts can fail to appear.
|
||||||
|
#
|
||||||
|
# Why it is tied to mango-session.target:
|
||||||
|
# - This agent is GUI session scoped and should only exist while the compositor
|
||||||
|
# session is active.
|
||||||
|
[Unit]
|
||||||
|
Description=Polkit GNOME Authentication Agent
|
||||||
|
PartOf=mango-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
Environment=NO_AT_BRIDGE=1
|
||||||
|
ExecStart=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=2
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=mango-session.target
|
||||||
|
|
||||||
|
|
@ -1,14 +1,18 @@
|
||||||
|
# swww is attached to mango-session.target instead of default.target so it
|
||||||
|
# starts only after Wayland session environment has been imported into
|
||||||
|
# systemd --user by mango startup.
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=swww wallpaper daemon
|
Description=swww wallpaper daemon
|
||||||
After=default.target
|
PartOf=mango-session.target
|
||||||
PartOf=default.target
|
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
|
# Keep a small readiness gate to avoid connecting before the compositor socket
|
||||||
|
# exists. With the target-based startup this should pass immediately.
|
||||||
ExecStartPre=/usr/bin/sh -c 'until [ -n "$WAYLAND_DISPLAY" ] && [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; do sleep 0.2; done'
|
ExecStartPre=/usr/bin/sh -c 'until [ -n "$WAYLAND_DISPLAY" ] && [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; do sleep 0.2; done'
|
||||||
ExecStart=/usr/bin/swww-daemon
|
ExecStart=/usr/bin/swww-daemon
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=1
|
RestartSec=1
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=mango-session.target
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,19 @@
|
||||||
|
# Waybar is attached to mango-session.target instead of default.target to avoid
|
||||||
|
# startup races in TTY-launched Wayland sessions. The target is started only
|
||||||
|
# after mango exports WAYLAND_DISPLAY/DBUS env into systemd --user.
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Waybar
|
Description=Waybar
|
||||||
Documentation=man:waybar(5)
|
Documentation=man:waybar(5)
|
||||||
After=default.target
|
PartOf=mango-session.target
|
||||||
PartOf=default.target
|
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
|
# Guard against rare timing jitter: do not exec waybar until the compositor
|
||||||
|
# socket actually exists for the display advertised in user-manager env.
|
||||||
ExecStartPre=/usr/bin/sh -c 'until [ -n "$WAYLAND_DISPLAY" ] && [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; do sleep 0.2; done'
|
ExecStartPre=/usr/bin/sh -c 'until [ -n "$WAYLAND_DISPLAY" ] && [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; do sleep 0.2; done'
|
||||||
ExecStart=/usr/bin/waybar
|
ExecStart=/usr/bin/waybar
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=1
|
RestartSec=1
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=mango-session.target
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
[Unit]
|
||||||
|
Description=ydotool daemon
|
||||||
|
After=default.target
|
||||||
|
PartOf=default.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/ydotoold
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=1
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
Loading…
Reference in New Issue