mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-24 02:01:18 +07:00
Add support for running as a dinit service (#728)
* Added dinit services * Added dinit support to niri-session * Replaced shutdown script for dinit with a single command execution * Added dinit service files to Getting Started install tables * Fix typo in resources/dinit/niri Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com> * Fixed mistakes in wiki/Getting-Started.md Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com> * niri-session does not start dinit anymore --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
type = process
|
||||||
|
command = niri --session
|
||||||
|
restart = false
|
||||||
|
working-dir = $HOME
|
||||||
|
depends-on = dbus
|
||||||
|
after = niri-shutdown
|
||||||
|
chain-to = niri-shutdown
|
||||||
|
options: always-chain
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
type = scripted
|
||||||
|
command = dinitctl -u setenv WAYLAND_DISPLAY= XDG_SESSION_TYPE= XDG_CURRENT_DESKTOP= NIRI_SOCKET=
|
||||||
|
restart = false
|
||||||
@@ -11,6 +11,8 @@ if [ -n "$SHELL" ] &&
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Try to detect the service manager that is being used
|
||||||
|
if hash systemctl &> /dev/null; then
|
||||||
# Make sure there's no already running session.
|
# Make sure there's no already running session.
|
||||||
if systemctl --user -q is-active niri.service; then
|
if systemctl --user -q is-active niri.service; then
|
||||||
echo 'A niri session is already running.'
|
echo 'A niri session is already running.'
|
||||||
@@ -39,3 +41,21 @@ systemctl --user start --job-mode=replace-irreversibly niri-shutdown.target
|
|||||||
|
|
||||||
# Unset environment that we've set.
|
# Unset environment that we've set.
|
||||||
systemctl --user unset-environment WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP NIRI_SOCKET
|
systemctl --user unset-environment WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP NIRI_SOCKET
|
||||||
|
elif hash dinitctl &> /dev/null; then
|
||||||
|
# Check that the user dinit daemon is running
|
||||||
|
if ! pgrep -u $(id -u) dinit &> /dev/null; then
|
||||||
|
echo "dinit user daemon is not running."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make sure there's no already running session.
|
||||||
|
if dinitctl --user is-started niri &> /dev/null; then
|
||||||
|
echo 'A niri session is already running.'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start niri
|
||||||
|
dinitctl --user start niri
|
||||||
|
else
|
||||||
|
echo "No systemd or dinit detected, please use niri --session instead."
|
||||||
|
fi
|
||||||
|
|||||||
+10
-6
@@ -8,8 +8,8 @@ After installing, start niri from your display manager like GDM.
|
|||||||
Press <kbd>Super</kbd><kbd>T</kbd> to run a terminal ([Alacritty]) and <kbd>Super</kbd><kbd>D</kbd> to run an application launcher ([fuzzel]).
|
Press <kbd>Super</kbd><kbd>T</kbd> to run a terminal ([Alacritty]) and <kbd>Super</kbd><kbd>D</kbd> to run an application launcher ([fuzzel]).
|
||||||
To exit niri, press <kbd>Super</kbd><kbd>Shift</kbd><kbd>E</kbd>.
|
To exit niri, press <kbd>Super</kbd><kbd>Shift</kbd><kbd>E</kbd>.
|
||||||
|
|
||||||
If you're not using a display manager, you should run `niri-session` (systemd) or `niri --session` (not systemd) from a TTY.
|
If you're not using a display manager, you should run `niri-session` (systemd/dinit) or `niri --session` (others) from a TTY.
|
||||||
The `--session` flag will make niri import its environment variables globally into systemd and D-Bus, and start its D-Bus services.
|
The `--session` flag will make niri import its environment variables globally into the system manager and D-Bus, and start its D-Bus services.
|
||||||
|
|
||||||
You can also run `niri` inside an existing desktop session.
|
You can also run `niri` inside an existing desktop session.
|
||||||
Then it will open as a window, where you can give it a try.
|
Then it will open as a window, where you can give it a try.
|
||||||
@@ -178,8 +178,10 @@ To do that, put files into the correct directories according to this table.
|
|||||||
| `resources/niri-session` | `/usr/bin/` |
|
| `resources/niri-session` | `/usr/bin/` |
|
||||||
| `resources/niri.desktop` | `/usr/share/wayland-sessions/` |
|
| `resources/niri.desktop` | `/usr/share/wayland-sessions/` |
|
||||||
| `resources/niri-portals.conf` | `/usr/share/xdg-desktop-portal/` |
|
| `resources/niri-portals.conf` | `/usr/share/xdg-desktop-portal/` |
|
||||||
| `resources/niri.service` | `/usr/lib/systemd/user/` |
|
| `resources/niri.service` (systemd) | `/usr/lib/systemd/user/` |
|
||||||
| `resources/niri-shutdown.target` | `/usr/lib/systemd/user/` |
|
| `resources/niri-shutdown.target` (systemd) | `/usr/lib/systemd/user/` |
|
||||||
|
| `resources/dinit/niri` (dinit) | `/usr/lib/dinit.d/user/` |
|
||||||
|
| `resources/dinit/niri-shutdown` (dinit) | `/usr/lib/dinit.d/user/` |
|
||||||
|
|
||||||
Doing this will make niri appear in GDM and other display managers.
|
Doing this will make niri appear in GDM and other display managers.
|
||||||
|
|
||||||
@@ -195,8 +197,10 @@ These may vary depending on your distribution.
|
|||||||
| `resources/niri-session` | `/usr/local/bin/` |
|
| `resources/niri-session` | `/usr/local/bin/` |
|
||||||
| `resources/niri.desktop` | `/usr/local/share/wayland-sessions/` |
|
| `resources/niri.desktop` | `/usr/local/share/wayland-sessions/` |
|
||||||
| `resources/niri-portals.conf` | `/usr/local/share/xdg-desktop-portal/` |
|
| `resources/niri-portals.conf` | `/usr/local/share/xdg-desktop-portal/` |
|
||||||
| `resources/niri.service` | `/etc/systemd/user/` |
|
| `resources/niri.service` (systemd) | `/etc/systemd/user/` |
|
||||||
| `resources/niri-shutdown.target` | `/etc/systemd/user/` |
|
| `resources/niri-shutdown.target` (systemd) | `/etc/systemd/user/` |
|
||||||
|
| `resources/dinit/niri` (dinit) | `/etc/dinit.d/user/` |
|
||||||
|
| `resources/dinit/niri-shutdown` (dinit) | `/etc/dinit.d/user/` |
|
||||||
|
|
||||||
[Alacritty]: https://github.com/alacritty/alacritty
|
[Alacritty]: https://github.com/alacritty/alacritty
|
||||||
[fuzzel]: https://codeberg.org/dnkl/fuzzel
|
[fuzzel]: https://codeberg.org/dnkl/fuzzel
|
||||||
|
|||||||
Reference in New Issue
Block a user