123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #!/usr/bin/openrc-run
- # Copyright 1999-2014 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License, v2
- depend() {
- need localmount xdm-setup
- # this should start as early as possible
- after bootmisc consolefont modules netmount
- after readahead-list ypbind autofs openvpn gpm lircmd
- after quota keymaps
- before alsasound
- # Start before X
- use elogind dbus xfs
- }
- setup_dm() {
- local MY_XDM
- MY_XDM=$(echo "${DISPLAYMANAGER}" | tr '[:upper:]' '[:lower:]')
- NAME=
- case "${MY_XDM}" in
- entrance*)
- EXE=/usr/bin/entrance
- PIDFILE=/run/entrance.pid
- ;;
- gdm|gnome)
- EXE=/usr/bin/gdm
- PIDFILE=/run/gdm/gdm.pid
- START_STOP_ARGS="--background"
- AUTOCLEAN_CGROUP="yes"
- ;;
- wdm)
- EXE=/usr/bin/wdm
- PIDFILE=
- ;;
- gpe)
- EXE=/usr/bin/gpe-dm
- PIDFILE=/run/gpe-dm.pid
- ;;
- lxdm)
- EXE=/usr/bin/lxdm-binary
- PIDFILE=/run/lxdm.pid
- START_STOP_ARGS="--background"
- ;;
- lightdm)
- EXE=/usr/bin/lightdm
- PIDFILE=/run/lightdm.pid
- START_STOP_ARGS="--background"
- ;;
- sddm)
- EXE="/usr/bin/sddm"
- START_STOP_ARGS="-m --background"
- PIDFILE=/run/sddm.pid
- ;;
- *)
- # first find out if there is such executable
- EXE="$(command -v ${MY_XDM} 2>/dev/null)"
- PIDFILE="/run/${MY_XDM}.pid"
- # warn user that he is doing sick things if the exe was not found
- if [ -z "${EXE}" ]; then
- echo "ERROR: Your XDM value is invalid."
- echo " No ${MY_XDM} executable could be found on your system."
- fi
- ;;
- esac
- if ! [ -x "${EXE}" ]; then
- EXE=/usr/bin/xdm
- PIDFILE=/run/xdm.pid
- if ! [ -x "/usr/bin/xdm" ]; then
- echo "ERROR: Please set your DISPLAYMANAGER variable in /etc/conf.d/xdm,"
- echo " or install x11-apps/xdm package"
- eend 255
- fi
- fi
- }
- start() {
- local EXE NAME PIDFILE AUTOCLEAN_CGROUP
- setup_dm
- if [ -f /etc/.noxdm ]; then
- einfo "Skipping ${EXE##*/}, /etc/.noxdm found or \"nox\" bootparam passed."
- rm /etc/.noxdm
- return 0
- fi
- ebegin "Setting up ${EXE##*/}"
- # save the prefered DM
- save_options "service" "${EXE}"
- save_options "name" "${NAME}"
- save_options "pidfile" "${PIDFILE}"
- save_options "start_stop_args" "${START_STOP_ARGS}"
- save_options "autoclean_cgroup" "${AUTOCLEAN_CGROUP:-no}"
- /etc/X11/startDM.sh
- eend 0
- }
- stop() {
- local retval
- retval=0
- local myexe myname mypidfile myservice
- myexe=$(get_options "service")
- myname=$(get_options "name")
- mypidfile=$(get_options "pidfile")
- myservice=${myexe##*/}
- yesno "${rc_cgroup_cleanup:-no}" || rc_cgroup_cleanup=$(get_options "autoclean_cgroup")
- [ -z "${myexe}" ] && return 0
- ebegin "Stopping ${myservice}"
- if start-stop-daemon --quiet --test --stop --exec "${myexe}"; then
- start-stop-daemon --stop --exec "${myexe}" --retry TERM/5/TERM/5 \
- ${mypidfile:+--pidfile} ${mypidfile} \
- ${myname:+--name} ${myname}
- retval=${?}
- fi
- eend ${retval} "Error stopping ${myservice}"
- return ${retval}
- }
- # vim: set ts=4 :
|