#!/sbin/openrc-run

description="The X Display Manager"

command="/usr/bin/xdm"
pidfile="/var/run/xdm.pid"

HEED_DEFAULT_DISPLAY_MANAGER=true
DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager

extra_started_commands="reload force_reload"

depend() {
	need localmount
	use logger
	after localmount rsyslog
	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 X display manager (xdm); it is not the default display manager"
			return 1
		fi
	fi
}

start() {
	start_pre || return $?
	ebegin "Starting X display manager"
	if start-stop-daemon --start --quiet --pidfile "$pidfile" \
		--name "$(basename "$command")" --startas "$command"; then
		eend 0
	else
		eend 0
	fi
}

stop() {
	ebegin "Stopping X display manager"
	if [ ! -f "$pidfile" ]; then
		eend 0
		return 0
	fi
	if start-stop-daemon --stop --quiet --pidfile "$pidfile" \
		--name "$(basename "$command")" --retry TERM/5/TERM/5; then
		rm -f "$pidfile"
		eend 0
	else
		eend $?
	fi
}

reload() {
	ebegin "Reloading X display manager configuration"
	start-stop-daemon --stop --quiet --pidfile "$pidfile" \
		--name "$(basename "$command")" --signal 1 || true
	eend 0
}

force_reload() {
	reload
}

status() {
	status_of_proc -p "$pidfile" "$command" xdm
}
