#!/bin/sh

LOGFILE=/var/log/ldm.log

. /usr/share/ltsp/ltsp-common-functions

logit() {
    if [ -n "${LOGFILE}" ]; then
        echo "$1" >> ${LOGFILE}
    else
        echo "$1"
    fi 
}

if [ -n "${LDM_USERNAME}" -a -n "$(/usr/bin/id ${LDM_USERNAME})" ]; then
    true
    #logit "LDM_USERNAME is valid"
else
    logit "Unknown user:  $LDM_USERNAME"
    exit 1
fi

if [ -z "$DISPLAY" ];then 
    logit "Unknown DISPLAY"
    exit 1
fi

# Initialize LTSP_COMMAND as blank
reset_xprop(){
    xprop -root -f $1 8s -set $1 ""
}

reset_xprop LTSP_COMMAND
reset_xprop LTSP_COMMAND_WAIT

# Make sure the local user has access to X
chown ${LDM_USERNAME} $XAUTHORITY

if boolean_is_true "$SOUND" ; then
    PULSE_SERVER="PULSE_SERVER=127.0.0.1"
fi

# Poll for LTSP_COMMAND changes and execute
while :; do
    LTSP_COMMAND="$(xatomwait LTSP_COMMAND)"
    [ "$?" != 0 ] && exit 

    LTSP_COMMAND=$(echo "${LTSP_COMMAND}"|sed -e 's/^LTSP_COMMAND = //' -e 's/^"//' -e 's/"$//')
    LTSP_COMMAND_WAIT=$(xprop -root -notype LTSP_COMMAND_WAIT |sed -e 's/^LTSP_COMMAND_WAIT = //' -e 's/^"//' -e 's/"$//')
    if [ -n "${LTSP_COMMAND}" ]; then
        logit "Executing the following command as ${LDM_USERNAME}: ${LTSP_COMMAND} "

        if [ "$LTSP_COMMAND_WAIT" = "true" ]; then
            su - ${LDM_USERNAME} -c "DISPLAY=$DISPLAY $PULSE_SERVER XAUTHORITY=$XAUTHORITY ${LTSP_COMMAND}"
        else
            su - ${LDM_USERNAME} -c "DISPLAY=$DISPLAY $PULSE_SERVER XAUTHORITY=$XAUTHORITY ${LTSP_COMMAND}" &
        fi

        reset_xprop LTSP_COMMAND
        reset_xprop LTSP_COMMAND_WAIT
    fi
done
