#!/sbin/runscript # Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License, v2 # $Header: /home/cvsroot/gentoo-x86/x11-base/xfree/files/4.3.99.8/xdm.start,v 1.1 2003/07/11 22:54:09 spyderous Exp $ # This is here to serve as a note to myself, and future developers. # # Any Display manager (gdm,kdm,xdm) have the following problem: if # it is started before any getty, and no vt is specified, it will # usually run on vt2. When the getty on vt2 then starts, and the # DM is already started, the getty will take control of the keyboard, # leaving us with a "dead" keyboard. # # Resolution: add the following line to /etc/inittab # # x:a:once:/etc/X11/startDM.sh # # and have /etc/X11/startDM.sh start the DM in daemon mode if # a lock is present (with the info of what DM should be started), # else just fall through. # # How this basically works, is the "a" runlevel is a additional # runlevel that you can use to fork processes with init, but the # runlevel never gets changed to this runlevel. Along with the "a" # runlevel, the "once" key word means that startDM.sh will only be # run when we specify it to run, thus eliminating respawning # startDM.sh when "xdm" is not added to the default runleve, as was # done previously. # # This script then just calls "tellinit a", and init will run # /etc/X11/startDM.sh after the current runlevel completes (this # script should only be added to the actual runlevel the user is # using). # # Martin Schlemmer # aka Azarah # 04 March 2002 # Start X Font Server before X depend() { use xfs hotplug } setup_dm() { source /etc/profile.env export PATH="/bin:/sbin:/usr/bin:/usr/sbin:${ROOTPATH}" local MY_XDM="$(echo ${DISPLAYMANAGER} | awk '{ print tolower($1) }')" case "${MY_XDM}" in kdm|kde|kde2|kde3) EXE="$(which kdm)" ;; entrance*) EXE="$(which entranced)" ;; gdm|gnome) EXE=/usr/bin/gdm ;; wdm) EXE=/usr/bin/wdm ;; *) EXE= for x in /usr/bin /usr/X11R6/bin do # Fix #65586, where MY_XDM is empty so EXE=somedir [ -x "${x}/${MY_XDM}" -a -f "${x}/${MY_XDM}" ] \ && EXE="${x}/${MY_XDM}" done [ -z "${EXE}" ] && EXE="/usr/X11R6/bin/xdm" ;; esac test ! -x "${EXE}" && EXE=/usr/X11R6/bin/xdm SERVICE="${EXE##*/}" } start() { local result setup_dm ebegin "Starting Display Manager ${SERVICE}" # Great new Gnome2 feature, AA # We enable this by default export GDK_USE_XFT=1 /sbin/start-stop-daemon --start --quiet --exec ${EXE} tty7 result="$?" wait; if [ "${retval}" -ne 0 ] then # make sure we do not have a misbehaving DM killall -9 ${EXE##*/} fi eend ${retval} "Error stopping Display Manager" }