diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-11-25 11:01:23 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-11-25 11:01:23 +0400 |
| commit | f085384bc70fb1ac5d19bcb71547b87bb475ee8c (patch) | |
| tree | 21f7b302c83f00931533b3a303489e3179198efe | |
| parent | 9eb5d5c22d1c470587c4fad06ed92b753a88d290 (diff) | |
| download | niri-f085384bc70fb1ac5d19bcb71547b87bb475ee8c.tar.gz niri-f085384bc70fb1ac5d19bcb71547b87bb475ee8c.tar.bz2 niri-f085384bc70fb1ac5d19bcb71547b87bb475ee8c.zip | |
Add and call niri-shutdown.target
Sometimes graphical-session.target lingers on after niri quits, leading
to services not being started on a quick relogin. To work around this,
add and run a systemd target that conflicts with
graphical-session.target and forces its shutdown.
| -rw-r--r-- | Cargo.toml | 1 | ||||
| -rw-r--r-- | README.md | 1 | ||||
| -rwxr-xr-x | resources/niri-session | 3 | ||||
| -rw-r--r-- | resources/niri-shutdown.target | 7 |
4 files changed, 12 insertions, 0 deletions
@@ -84,6 +84,7 @@ assets = [ { source = "resources/niri.desktop", dest = "/usr/share/wayland-sessions/", mode = "644" }, { source = "resources/niri-portals.conf", dest = "/usr/share/xdg-desktop-portal/", mode = "644" }, { source = "resources/niri.service", dest = "/usr/lib/systemd/user/", mode = "644" }, + { source = "resources/niri-shutdown.target", dest = "/usr/lib/systemd/user/", mode = "644" }, ] [package.metadata.generate-rpm.requires] alacritty = "*" @@ -64,6 +64,7 @@ To do that, put files into the correct directories according to this table. | `resources/niri.desktop` | `/usr/share/wayland-sessions/` | | `resources/niri-portals.conf` | `/usr/share/xdg-desktop-portal/` | | `resources/niri.service` | `/usr/lib/systemd/user/` | +| `resources/niri-shutdown.target` | `/usr/lib/systemd/user/` | Doing this will make niri appear in GDM and, presumably, other display managers. diff --git a/resources/niri-session b/resources/niri-session index 46d73aa2..0ba9af34 100755 --- a/resources/niri-session +++ b/resources/niri-session @@ -40,5 +40,8 @@ fi # Start niri and wait for it to terminate. systemctl --user --wait start niri.service +# Force stop of grahical-session.target. +systemctl --user start --job-mode=replace-irreversibly niri-shutdown.target + # Unset environment that we've set. systemctl --user unset-environment WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP diff --git a/resources/niri-shutdown.target b/resources/niri-shutdown.target new file mode 100644 index 00000000..769ea16f --- /dev/null +++ b/resources/niri-shutdown.target @@ -0,0 +1,7 @@ +[Unit] +Description=Shutdown running niri session +DefaultDependencies=no +StopWhenUnneeded=true + +Conflicts=graphical-session.target graphical-session-pre.target +After=graphical-session.target graphical-session-pre.target |
