blob: 2b291dfce15fa5049f068e4034d8af4df1dd84ea (
plain) (
tree)
|
|
function wait_for_wm()
{
# This just waits until there's a window manager.
while [[ "$(DISPLAY=:0.0 XAUTHORITY=${XAUTHORITY} xprop -root _NET_SUPPORTING_WM_CHECK)" =~ "no such atom" ]]; do
sleep 2
done
}
function runscript()
{
logger "openslx: runscript: looking for a script to run..."
ERR=0
if [ -f "$SLXCONFIGFILE" ]; then
[ -z "$SCRIPTEXT" -o "$SCRIPTEXT" = "bat" ] && \
logger "openslx utility: runscript: Script extension empty or \'bat\', trying anyway."
if [ -f "$DISKMOUNTDIR/runscript${SCRIPTEXT}" ]; then
logger "openslx utility: runscript: found script $DISKMOUNTDIR/runscript${SCRIPTEXT}."
logger "openslx utility: runscript: script options: scriptuser: ${SCRIPTUSER}, scriptvisibility: ${SCRIPTVISIBILITY}."
case "$SCRIPTUSER" in
0) USERPART=""
;;
1) USERPART=" su -c - $LOCALUSER "
;;
*) logger "openslx utility: runscript: Unknown script user or script user not set. Running as user ${LOCALUSER}."
# USERPART="" # old default: Running as root
USERPART=" su -c - $LOCALUSER "
;;
esac
case "$SCRIPTVISIBILITY" in
0) # 0=hidden
logger "openslx utility: runscript: Starting script hidden."
echo "$USERPART $DISKMOUNTDIR/runscript${SCRIPTEXT}"
$USERPART "$DISKMOUNTDIR/runscript${SCRIPTEXT}" &
;;
1) # 1=normal
logger "openslx utility: runscript: Starting script maximised."
get_xauthfile
wait_for_wm
if [ -n "$USERPART" ]; then
DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART "xterm $DISKMOUNTDIR/runscript${SCRIPTEXT}" &
else
DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART xterm "$DISKMOUNTDIR/runscript${SCRIPTEXT}" &
fi
;;
2) # 2=minimized (xterm -iconic)
logger "openslx utility: runscript: starting script minimised."
get_xauthfile
wait_for_wm
# Truly not the best way to wait until the desktop environment is ready, but there's no common way to
# check for DE readiness. Until then, we'll sleep.
sleep 20
if [ -n "$USERPART" ]; then
DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART "xterm -iconic $DISKMOUNTDIR/runscript${SCRIPTEXT}" &
else
DISPLAY=:0.0 XAUTHORITY="${XAUTHORITY}" $USERPART xterm -iconic "$DISKMOUNTDIR/runscript${SCRIPTEXT}" &
fi
;;
*) # *=?
logger "openslx utility: runscript: unkown scriptVisibility $SCRIPTVISIBILITY."
;;
esac
if [ "$ERR" -eq 0 ]; then
logger "openslx utility: runscript: runscript${SCRIPTEXT} ok, errorlevel ${ERR}."
else
logger "openslx utility: runscript: Script error ${ERR}."
fi
else
logger "openslx utility: runscript: script $DISKMOUNTDIR/runscript${SCRIPTEXT} not found."
fi
else
logger "openslx utility: runscript: Could not find $SLXCONFIGFILE."
exit 1
fi
}
|