#!/bin/sh

if [[ $# -eq 0 ]] ; then
    echo "lock-screen [ enable | disable | suspend | lock | start ]"
    exit
fi

case ${1} in
    locker-command)
        i3lock -c 536a77 -e -f -n
        ;;
    locker-command-fork)
        i3lock -c 536a77 -e -f
        ;;
    lock)
        ssh-add -D
        xidlehook-client --socket ~/.xidlehook.sock \
                         control --action trigger --timer 0
        ;;
    daemon)
        [ -e ~/.xidlehook.sock ] && rm ~/.xidlehook.sock
        echo "Starting xidlehook"
	echo "DISPLAY=${DISPLAY}"
        xidlehook --socket ~/.xidlehook.sock \
                  --not-when-fullscreen \
                  --not-when-audio \
                  --detect-sleep \
                  --timer 300 "lock-screen locker-command" ""
        ;;
    start)
        if ! ps aux | grep ' [x]idlehook ' > /dev/null ; then
            tmu -e screenlocker screenlocker 'lock-screen daemon'
        fi
        if ! ps aux | grep '[-]-member Lock' > /dev/null ; then
            tmu -e screenlocker dbus-lock 'lock-screen dbus-listen-lock'
        fi
        if ! ps aux | grep '[-]-member PrepareForSleep' > /dev/null ; then
            tmu -e screenlocker dbus-suspend 'lock-screen dbus-listen-suspend'
        fi
        ;;
    dbus-listen-lock)
        echo "Listening for org.freedesktop.login1.Session.Lock()"
        dbus-listen --system \
                    --interface org.freedesktop.login1.Session \
                    --member 'Lock' \
                    lock-screen lock
        ;;
    dbus-listen-suspend)
        echo "Listening for org.freedesktop.login1.Manager.PrepareForSleep()"
        dbus-listen --system \
                    --interface org.freedesktop.login1.Manager \
                    --member 'PrepareForSleep' \
                    lock-screen lock
        ;;
    disable)
        xidlehook-client --socket ~/.xidlehook.sock \
                         control --action disable --timer 0
        ;;
    enable)
        xidlehook-client --socket ~/.xidlehook.sock \
                         controll --action enable --timer 0
        ;;
    suspend)
        systemctl suspend
        ;;
    hibernate)
        systemctl hibernate
        ;;
    suspend-hibernate)
        systemctl suspend-hibernate
        ;;
    *)
        echo "lock-screen [ enable | disable | lock | start | suspend | hibernate | suspend-hibernate ]"
esac
