#!/bin/sh -efu

export XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0

ret=0

user="${1:-}"
if [ -z "$user" ]; then
    user="$(pklogin_finder)" || ret=$?
fi

if [ $ret -eq 0 -a -n "$user" ]; then
	sessions="$(loginctl -p Sessions --value show-user "$user" 2>&1)" || ret=$?
	state=
	if [ $ret -eq 0 ]; then
		state="$(loginctl -p State --value show-user "$user" 2>&1)" || ret=$?
	fi
	if [ $ret -eq 0 -a -n "$sessions" -a -n "$state" ]; then
		case "$state" in
			# FIXME: Only active?
			offline|lingering|online|active)
				loginctl activate "${sessions%%[, ]*}"
				;;
			*)
				# start a new login
				dm-tool switch-to-user "$user"
				;;
		esac
	elif [ -n "$sessions" ]; then
		case "$sessions" in
			*No*user*known*|*Failed*to*)
				# start a new login too
				dm-tool switch-to-user "$user"
				;;
		esac
	fi
fi
