#!/usr/sbin/openrc-run
# OpenRC translation of the former SysV slim.init
# Copyright 1998-2005 Branden Robinson / 2006 Eugene Konev (orig. logic)
#           2026 Aitor <aitor@genuen.org> (OpenRC)

description="Simple Login Manager (SLiM)"

command="/usr/bin/slim"
pidfile="/run/slim.pid"

HEED_DEFAULT_DISPLAY_MANAGER="${HEED_DEFAULT_DISPLAY_MANAGER:-true}"
DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager

depend() {
	need localmount dbus
	use logger
	after bootmisc elogind x11-common
	provide xdm display-manager
}

start_pre() {
	[ -x "$command" ] || return 1

	if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ] && \
		[ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ]; then
		if [ "$(cat "$DEFAULT_DISPLAY_MANAGER_FILE" 2>/dev/null)" != "$command" ]; then
			einfo "Not starting SLiM; it is not the default display manager"
			return 1
		fi
	fi

	if [ -x /bin/plymouth ]; then
		/bin/plymouth quit || true
	fi

	mkdir -p -m 01777 /tmp/.X11-unix /tmp/.ICE-unix 2>/dev/null || true
}

start() {
	start_pre || return $?
	ebegin "Starting ${RC_SVCNAME}"
	# SysV used: start-stop-daemon … --startas slim -- -d
	start-stop-daemon --start --quiet \
		--pidfile "$pidfile" \
		--name "$(basename "$command")" \
		--startas "$command" -- -d
	eend $?
}

stop() {
	ebegin "Stopping ${RC_SVCNAME}"
	# SysV: --retry TERM/5/TERM/5
	start-stop-daemon --stop --quiet \
		--pidfile "$pidfile" \
		--name "$(basename "$command")" \
		--retry TERM/5/TERM/5
	ret=$?
	rm -f "$pidfile"
	eend $ret
}
