#!/bin/sh
# xlogin.sh
# 2013-05-18
# by Gernot Walzl
# Logs in a user into the running X session by sending commands to KDM.
DISPLAY=${DISPLAY:-":0"}
print_usage () {
echo "Usage: $0 {login|logout|lock|unlock}"
}
getXuser () {
export XUSER=$(who | grep -m1 " $DISPLAY " | awk '{print $1}')
}
login () {
echo -n "Username: "
read USERNAME
echo -n "Password: "
read -s PASSWORD
echo ""
kdmctl login "$DISPLAY" now "$USERNAME" "$PASSWORD"
}
logout () {
DISPLAY="$DISPLAY" kdmctl suicide
}
lock () {
getXuser
su $XUSER -c "DISPLAY=$DISPLAY qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock"
su $XUSER -c "DISPLAY=$DISPLAY xset dpms force off"
}
unlock () {
getXuser
su $XUSER -c "DISPLAY=$DISPLAY qdbus org.freedesktop.ScreenSaver /ScreenSaver SetActive False"
}
case "$1" in
'login')
login
;;
'logout')
logout
;;
'lock')
lock
;;
'unlock')
unlock
;;
*)
print_usage
;;
esac