#!/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