diff --git a/Makefile b/Makefile index 64df75b..b72d14e 100644 --- a/Makefile +++ b/Makefile @@ -55,11 +55,14 @@ install-service: fi install-service-systemd: - install -m655 ./assets/services/systemd.service /etc/systemd/system/lidm.service + install -m644 ./assets/services/systemd.service /etc/systemd/system/lidm.service @printf '\x1b[1m%s\x1b[0m\n\n' " don't forget to run 'systemctl enable lidm'" install-service-dinit: - install -m655 ./assets/services/dinit /etc/dinit.d/lidm + install -m644 ./assets/services/dinit /etc/dinit.d/lidm @printf '\x1b[1m%s\x1b[0m\n\n' " don't forget to run 'dinitctl enable lidm'" install-service-runit: rsync -a --no-owner --no-group ./assets/services/runit/. /etc/runit/sv/lidm @printf '\x1b[1m%s\x1b[0m\n\n' " don't forget to run 'ln -s /etc/runit/sv/lidm /run/runit/service' and 'sv enable lidm'" +install-service-openrc: + install -m755 ./assets/services/openrc /etc/init.d/lidm + @printf '\x1b[1m%s\x1b[0m\n\n' " don't forget to run 'rc-update add lidm'" diff --git a/README.md b/README.md index 996224d..fdd00c3 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ LiDM is like any [X Display Manager](https://en.wikipedia.org/wiki/X_display_man * Fast and possibly efficient. * Fully customizable, from strings, including action keys, to colors (I hope you know ansi escape codes) * Automatically detects xorg and wayland sessions, plus allowing to launch the default user shell (if enabled in config) -* Starts with many init systems (systemd, dinit and runit). +* Starts with many init systems (systemd, dinit, runit and openrc). ## WIP * Desktop's file `TryExec` key. @@ -60,7 +60,7 @@ We all know that the most important thing in a project is the ideology of the au # Usage ### Arguments -If a single argument is provided (don't even do `--` or standard parsing...), it passes that argument to `chvt` on startup, used (at least) by the dinit and runit services. +If a single argument is provided (don't even do `--` or standard parsing...), it passes that argument to `chvt` on startup, used (at least) by most service files. ### Program On top of pure intuition: diff --git a/assets/services/README.md b/assets/services/README.md index 5598c98..38c0647 100644 --- a/assets/services/README.md +++ b/assets/services/README.md @@ -8,17 +8,21 @@ There's make scripts to automatically copy the service files to the proper locat The manuall steps for installation are: ## Systemd -* Copy `systemd.service` to `/etc/systemd/system/lidm.service`. +* Copy `systemd.service` to `/etc/systemd/system/lidm.service` * To enable it you can run `systemctl enable lidm` ## Dinit -* Copy `dinit` to `/etc/dinit.d/lidm`. -* To enable it, run `dinitctl enable lidm`. +* Copy `dinit` to `/etc/dinit.d/lidm` +* To enable it, run `dinitctl enable lidm` ## Runit -* Copy `runit/` to `/etc/runit/sv/lidm/`. -* Add the service with `ln -s /etc/runit/sv/lidm /run/runit/service`. +* Copy `runit/` to `/etc/runit/sv/lidm/` +* Add the service with `ln -s /etc/runit/sv/lidm /run/runit/service` * And to enable it `sv enable lidm` +## OpenRC +* Copy `openrc` to `/etc/init.d/lidm` +* Enable the service with `rc-update add lidm` + > [!WARNING] > Make sure to disable any other service that might run on tty7, such us lightdm or most display managers out there. diff --git a/assets/services/openrc b/assets/services/openrc new file mode 100755 index 0000000..969aab3 --- /dev/null +++ b/assets/services/openrc @@ -0,0 +1,31 @@ +#!/usr/bin/openrc-run +description="start agetty on a terminal line" +supervisor=supervise-daemon +port=tty7 +respawn_period="${respawn_period:-60}" +term_type="${term_type:-linux}" +command=/sbin/agetty +command_args_foreground="${agetty_options} ${port} ${baud} ${term_type} -nl /bin/lidm -o 7" +pidfile="/run/${RC_SVCNAME}.pid" + +depend() { + after local + keyword -prefix + provide getty +} + +start_pre() { + if [ "$port" = "$RC_SVCNAME" ]; then + eerror "${RC_SVCNAME} cannot be started directly. You must create" + eerror "symbolic links to it for the ports you want to start" + eerror "agetty on and add those to the appropriate runlevels." + return 1 + else + export EINFO_QUIET="${quiet:-yes}" + fi +} + +stop_pre() +{ + export EINFO_QUIET="${quiet:-yes}" +}