|
|
|
#!/bin/sh
|
|
|
|
### BEGIN INIT INFO
|
|
|
|
# Provides: x-display-manager kdm-trinity
|
|
|
|
# Required-Start: $local_fs $remote_fs
|
|
|
|
# Required-Stop: $local_fs $remote_fs
|
|
|
|
# Should-Start: console-screen
|
|
|
|
# Should-Stop: console-screen
|
|
|
|
# Default-Start: 2 3 4 5
|
|
|
|
# Default-Stop: 0 1 6
|
|
|
|
# Short-Description: X display manager for Trinity
|
|
|
|
# Description: KDM manages a collection of X servers, which may be on the local host or remote machines.
|
|
|
|
### END INIT INFO
|
|
|
|
# /etc/init.d/kdm-trinity: start or stop the X display manager
|
|
|
|
# Script originally stolen from the xdm package
|
|
|
|
#
|
|
|
|
# description: K Display Manager
|
|
|
|
#
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# To start kdm-trinity even if it is not the default display manager, change
|
|
|
|
# HEED_DEFAULT_DISPLAY_MANAGER to "false."
|
|
|
|
HEED_DEFAULT_DISPLAY_MANAGER=true
|
|
|
|
DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
|
|
|
|
|
|
|
|
KDEDIRS=/opt/trinity/
|
|
|
|
PATH=/opt/trinity/bin:/bin:/usr/bin:/sbin:/usr/sbin
|
|
|
|
DAEMON=/opt/trinity/bin/kdm
|
|
|
|
PIDFILE=/var/run/kdm.pid
|
|
|
|
UPGRADEFILE=/var/run/kdm.upgrade
|
|
|
|
|
|
|
|
# parameters to support kdm customization
|
|
|
|
KDMRC=/etc/trinity/kdm/kdmrc
|
|
|
|
BACKGROUNDRC=/etc/trinity/kdm/backgroundrc
|
|
|
|
|
|
|
|
#if configuration is changed by kdmtheme or other tools, don't do magick
|
|
|
|
if grep -q "Theme=@@@ToBeReplacedByDesktopBase@@@" ${KDMRC} && grep -q "Wallpaper=default_blue.jpg" ${BACKGROUNDRC}
|
|
|
|
then
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
KDMOVERRIDEDIR=/etc/default/kdm-trinity.d
|
|
|
|
KDMCFGDIR=/var/run/kdm-trinity
|
|
|
|
KDMCFG=$KDMCFGDIR/kdmrc
|
|
|
|
BACKGROUNDCFG=$KDMCFGDIR/backgroundrc
|
|
|
|
|
|
|
|
test -x $DAEMON || exit 0
|
|
|
|
|
|
|
|
# uncomment, if you want auto-logon to be runlevel-dependant
|
|
|
|
#test "$runlevel" || { runlevel=`runlevel`; runlevel=${runlevel#* }; }
|
|
|
|
#test "$runlevel" = 4 && ARG=-autolog || ARG=-noautolog
|
|
|
|
|
|
|
|
# uncomment, if you want tons of debug info in your syslog
|
|
|
|
#ARG="$ARG -debug 255"
|
|
|
|
|
|
|
|
# we use an alternative kdm master configuration file
|
|
|
|
ARG="$ARG -config $KDMCFG"
|
|
|
|
|
|
|
|
# we source overrides. run-parts sorts the list in a predictable order
|
|
|
|
if [ -d "$KDMOVERRIDEDIR" ]; then
|
|
|
|
for part in $(run-parts --list "$KDMOVERRIDEDIR" 2>/dev/null || true); do
|
|
|
|
. "$part"
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
# we generate kdm configuration files
|
|
|
|
genkdmconf --in $KDMCFGDIR 1> /dev/null
|
|
|
|
|
|
|
|
# we update kdm configuration files (only overridden values)
|
|
|
|
[ -n "$USEBACKGROUND" ] && sed -i "s|^#\?UseBackground=.*|UseBackground=$USEBACKGROUND|" $KDMCFG
|
|
|
|
[ -n "$BACKGROUNDCFG" ] && sed -i "s|^#\?BackgroundCfg=.*|BackgroundCfg=$BACKGROUNDCFG|" $KDMCFG
|
|
|
|
[ -n "$USETHEME" ] && sed -i "s|^#\?UseTheme=.*|UseTheme=$USETHEME|" $KDMCFG
|
|
|
|
[ -n "$THEME" ] && sed -i "s|^#\?Theme=.*|Theme=$THEME|" $KDMCFG
|
|
|
|
[ -n "$WALLPAPER" ] && sed -i "s|^#\?Wallpaper=.*|Wallpaper=`readlink -f $WALLPAPER`|" $BACKGROUNDCFG
|
|
|
|
|
|
|
|
|
|
|
|
fi
|
|
|
|
# autologin overrides are useful for live debian environment
|
|
|
|
if [ -n "$AUTOLOGINUSER" ]; then
|
|
|
|
sed -i "s|^#\?AutoLoginEnable=.*|AutoLoginEnable=true|" $KDMCFG
|
|
|
|
sed -i "s|^#\?AutoLoginUser=.*|AutoLoginUser=$AUTOLOGINUSER|" $KDMCFG
|
|
|
|
fi
|
|
|
|
[ -n "$AUTOLOGINDELAY" ] && sed -i "s|^#\?AutoLoginDelay=.*|AutoLoginDelay=$AUTOLOGINDELAY|" $KDMCFG
|
|
|
|
[ -n "$AUTOLOGINAGAIN" ] && sed -i "s|^#\?AutoLoginAgain=.*|AutoLoginAgain=$AUTOLOGINAGAIN|" $KDMCFG
|
|
|
|
[ -n "$AUTOLOGINLOCKED" ] && sed -i "s|^#\?AutoLoginLocked=.*|AutoLoginLocked=$AUTOLOGINLOCKED|" $KDMCFG
|
|
|
|
|
|
|
|
# If we upgraded the daemon, we can't use the --exec argument to
|
|
|
|
# start-stop-daemon since the inode will have changed. The risk here is that
|
|
|
|
# in a situation where the daemon died, its pidfile was not cleaned up, and
|
|
|
|
# some other process is now running under that pid, start-stop-daemon will send
|
|
|
|
# signals to an innocent process. However, this seems like a corner case.
|
|
|
|
# C'est la vie!
|
|
|
|
if [ -e $UPGRADEFILE ]; then
|
|
|
|
SSD_ARGS="--pidfile $PIDFILE --startas $DAEMON"
|
|
|
|
else
|
|
|
|
SSD_ARGS="--pidfile $PIDFILE --exec $DAEMON"
|
|
|
|
fi
|
|
|
|
|
|
|
|
stillrunning () {
|
|
|
|
if expr "$(cat /proc/$DAEMONPID/cmdline 2> /dev/null)" : "$DAEMON" > /dev/null 2>&1; then
|
|
|
|
true
|
|
|
|
else
|
|
|
|
# if the daemon does not remove its own pidfile, we will
|
|
|
|
rm -f $PIDFILE $UPGRADEFILE
|
|
|
|
false
|
|
|
|
fi;
|
|
|
|
}
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
start)
|
|
|
|
if [ -e $DEFAULT_DISPLAY_MANAGER_FILE ] &&
|
|
|
|
[ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] &&
|
|
|
|
[ "$(cat $DEFAULT_DISPLAY_MANAGER_FILE)" != "$DAEMON" ]; then
|
|
|
|
echo "Not starting K Display Manager (kdm-trinity); it is not the default display manager."
|
|
|
|
else
|
|
|
|
echo -n "Starting K Display Manager: kdm-trinity"
|
|
|
|
start-stop-daemon --start --quiet $SSD_ARGS -- $ARG || echo -n " already running"
|
|
|
|
echo "."
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
|
|
|
|
restart)
|
|
|
|
/etc/init.d/kdm-trinity stop
|
|
|
|
if [ -f $PIDFILE ]; then
|
|
|
|
if stillrunning; then
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
/etc/init.d/kdm-trinity start
|
|
|
|
;;
|
|
|
|
|
|
|
|
reload)
|
|
|
|
echo -n "Reloading K Display Manager configuration..."
|
|
|
|
if start-stop-daemon --stop --signal 1 --quiet $SSD_ARGS; then
|
|
|
|
echo "done."
|
|
|
|
else
|
|
|
|
echo "kdm-trinity not running."
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
|
|
|
|
force-reload)
|
|
|
|
/etc/init.d/kdm-trinity reload
|
|
|
|
;;
|
|
|
|
|
|
|
|
stop)
|
|
|
|
echo -n "Stopping K Display Manager: kdm-trinity"
|
|
|
|
if [ ! -f $PIDFILE ]; then
|
|
|
|
echo " not running ($PIDFILE not found)."
|
|
|
|
exit 0
|
|
|
|
else
|
|
|
|
DAEMONPID=$(cat $PIDFILE | tr -d '[:blank:]')
|
|
|
|
KILLCOUNT=1
|
|
|
|
if [ ! -e $UPGRADEFILE ]; then
|
|
|
|
if start-stop-daemon --stop --quiet $SSD_ARGS; then
|
|
|
|
# give kdm's signal handler a second to catch its breath
|
|
|
|
sleep 1
|
|
|
|
else
|
|
|
|
echo -n " not running"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
while [ $KILLCOUNT -le 5 ]; do
|
|
|
|
if stillrunning; then
|
|
|
|
kill $DAEMONPID
|
|
|
|
else
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
sleep 1
|
|
|
|
KILLCOUNT=$(( $KILLCOUNT + 1 ))
|
|
|
|
done
|
|
|
|
if stillrunning; then
|
|
|
|
echo -n " not responding to TERM signal (pid $DAEMONPID)"
|
|
|
|
else
|
|
|
|
rm -f $UPGRADEFILE
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
echo "."
|
|
|
|
|
|
|
|
# Launches usplash on shutdown
|
|
|
|
if ( `grep -q '\( \|^\)splash\( \|$\)' /proc/cmdline` && `which usplash_down >/dev/null` ) ; then
|
|
|
|
usplash_down
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
echo "Usage: /etc/init.d/kdm-trinity {start|stop|restart|reload|force-reload}"
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
exit 0
|