summaryrefslogtreecommitdiff
path: root/gui-libs/display-manager-init/files
diff options
context:
space:
mode:
Diffstat (limited to 'gui-libs/display-manager-init/files')
-rw-r--r--gui-libs/display-manager-init/files/display-manager-setup.initd2
-rw-r--r--gui-libs/display-manager-init/files/display-manager.initd161
-rw-r--r--gui-libs/display-manager-init/files/startDM4
3 files changed, 67 insertions, 100 deletions
diff --git a/gui-libs/display-manager-init/files/display-manager-setup.initd b/gui-libs/display-manager-init/files/display-manager-setup.initd
index 05feeee8..a897bf99 100644
--- a/gui-libs/display-manager-init/files/display-manager-setup.initd
+++ b/gui-libs/display-manager-init/files/display-manager-setup.initd
@@ -7,7 +7,7 @@ depend() {
}
start() {
- if get_bootparam "nogui" ; then
+ if get_bootparam "nogui" || get_bootparam "nox"; then
touch /run/.nogui
fi
}
diff --git a/gui-libs/display-manager-init/files/display-manager.initd b/gui-libs/display-manager-init/files/display-manager.initd
index e650df96..3fff478e 100644
--- a/gui-libs/display-manager-init/files/display-manager.initd
+++ b/gui-libs/display-manager-init/files/display-manager.initd
@@ -1,7 +1,9 @@
#!/sbin/openrc-run
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License, v2
+retry="TERM/5/TERM/5"
+
# This is here to serve as a note to myself, and future developers.
#
# Any Display manager (gdm,kdm,xdm) has the following problem: if
@@ -46,9 +48,12 @@ depend() {
# (#291269) Start after quota, since some dm need readable home
# (#390609) gdm-3 will fail when dbus is not running
# (#366753) starting keymaps after X causes problems
+ # (#768834) race condition with elogind
after bootmisc consolefont modules netmount
after readahead-list ypbind autofs openvpn gpm lircmd
after quota keymaps
+ after elogind
+ after sssd
before alsasound
# Start before GUI
@@ -59,83 +64,77 @@ setup_dm() {
local MY_XDM
MY_XDM=$(echo "${DISPLAYMANAGER}" | tr '[:upper:]' '[:lower:]')
-
- NAME=
case "${MY_XDM}" in
kdm|kde)
- # Load our root path from profile.env
- # Needed for kdm
- PATH=${PATH}:$(. /etc/profile.env; echo "${ROOTPATH}")
- EXE=/usr/bin/kdm
- PIDFILE=/run/kdm.pid
+ command=/usr/bin/kdm
+ pidfile=/run/kdm.pid
;;
entrance*)
- EXE=/usr/sbin/entrance
- PIDFILE=/run/entrance.pid
+ command=/usr/sbin/entrance
+ pidfile=/run/entrance.pid
;;
gdm|gnome)
# gdm-3 and above has different paths
if [ -f /usr/sbin/gdm ]; then
- EXE=/usr/sbin/gdm
- PIDFILE=/run/gdm/gdm.pid
- START_STOP_ARGS="--background"
- AUTOCLEAN_CGROUP="yes"
+ command=/usr/sbin/gdm
+ pidfile=/run/gdm/gdm.pid
+ start_stop_daemon_args="--background"
else
- EXE=/usr/bin/gdm
- PIDFILE=/run/gdm.pid
+ command=/usr/bin/gdm
+ pidfile=/run/gdm.pid
fi
- [ "${RC_UNAME}" != "Linux" ] && NAME=gdm-binary
+ [ "${RC_UNAME}" != "Linux" ] && name=gdm-binary
;;
greetd)
- EXE=/usr/bin/greetd
- PIDFILE=/run/greetd.pid
- START_STOP_ARGS="-m --background"
+ command=/usr/bin/greetd
+ command_background=yes
+ pidfile=/run/greetd.pid
;;
wdm)
- EXE=/usr/bin/wdm
- PIDFILE=
+ command=/usr/bin/wdm
;;
gpe)
- EXE=/usr/bin/gpe-dm
- PIDFILE=/run/gpe-dm.pid
+ command=/usr/bin/gpe-dm
+ pidfile=/run/gpe-dm.pid
;;
lxdm)
- EXE=/usr/sbin/lxdm-binary
- PIDFILE=/run/lxdm.pid
- START_STOP_ARGS="--background"
+ command=/usr/sbin/lxdm-binary
+ pidfile=/run/lxdm.pid
+ start_stop_daemon_args="--background"
;;
lightdm)
- EXE=/usr/sbin/lightdm
- PIDFILE=/run/lightdm.pid
- START_STOP_ARGS="--background"
+ command=/usr/sbin/lightdm
+ pidfile=/run/lightdm.pid
+ start_stop_daemon_args="--background"
;;
sddm)
- EXE="/usr/bin/sddm"
- START_STOP_ARGS="-m --background"
- PIDFILE=/run/sddm.pid
+ command="/usr/bin/sddm"
+ command_background=yes
+ 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"
+ command="$(command -v ${MY_XDM} 2>/dev/null)"
+ pidfile="/run/${MY_XDM}.pid"
# warn user that they are 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."
+ if [ -z "${command}" ]; then
+ eerror "ERROR: Your XDM value is invalid."
+ eerror " 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 "${command}" ]; then
+ command=/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
+ eerror "ERROR: Please set your DISPLAYMANAGER variable in /etc/conf.d/display-manager,"
+ eerror " or install the x11-apps/xdm package"
+ return 1
fi
fi
+ return 0
}
# Check to see if something is defined on our VT
@@ -147,50 +146,34 @@ vtstatic() {
else
return 1
fi
+ return
}
-start() {
- local EXE NAME PIDFILE AUTOCLEAN_CGROUP
- setup_dm
+start_pre() {
+ setup_dm || return
if [ -f /run/.nogui ]; then
- einfo "Skipping ${EXE##*/}, /run/.nogui found or 'nogui' bootparam passed."
+ einfo "Skipping ${command##*/}, /run/.nogui found or 'nogui' bootparam passed."
rm /run/.nogui
- return 0
+ return 1
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}"
-
- if [ -n "${CHECKVT-y}" ] ; then
- if vtstatic "${CHECKVT:-7}" ; then
- if [ -x /sbin/telinit ] && [ "${SOFTLEVEL}" != "BOOT" ] && [ "${RC_SOFTLEVEL}" != "BOOT" ]; then
- ewarn "Something is already defined on VT ${CHECKVT:-7}, will start X later"
- telinit a >/dev/null 2>&1
- return 0
- else
- eerror "Something is already defined on VT ${CHECKVT:-7}, not starting"
- return 1
- fi
+ if vtstatic "${CHECKVT:-7}" ; then
+ if [ -x /sbin/telinit ] && [ "${SOFTLEVEL}" != "BOOT" ] && [ "${RC_SOFTLEVEL}" != "BOOT" ]; then
+ ewarn "Something is already defined on VT ${CHECKVT:-7}, will start X later"
+ telinit a >/dev/null 2>&1
+ return 0
+ else
+ eerror "Something is already defined on VT ${CHECKVT:-7}, not starting"
+ return 1
fi
fi
-
- /usr/bin/startDM
- eend 0
+ return 0
}
-stop() {
- local curvt retval
-
- retval=0
+stop_pre() {
if [ -t 0 ]; then
- if type fgconsole >/dev/null 2>&1; then
+ if command -v fgconsole >/dev/null 2>&1; then
curvt=$(fgconsole 2>/dev/null)
else
curvt=$(tty)
@@ -200,35 +183,19 @@ stop() {
esac
fi
fi
- 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}" 2>/dev/null; then
- start-stop-daemon --stop --exec "${myexe}" --retry TERM/5/TERM/5 \
- "${mypidfile:+--pidfile}" "${mypidfile}" \
- "${myname:+--name}" "${myname}"
- retval=${?}
- fi
+ return
+}
+stop_post() {
# switch back to original vt
if [ -n "${curvt}" ]; then
- if type chvt >/dev/null 2>&1; then
+ if command -v chvt >/dev/null 2>&1; then
chvt "${curvt}"
else
vidcontrol -s "$((curvt + 1))"
fi
fi
-
- eend ${retval} "Error stopping ${myservice}"
- return ${retval}
+ return
}
# vim: set ts=4 :
diff --git a/gui-libs/display-manager-init/files/startDM b/gui-libs/display-manager-init/files/startDM
index 976d1dd2..b23344bb 100644
--- a/gui-libs/display-manager-init/files/startDM
+++ b/gui-libs/display-manager-init/files/startDM
@@ -1,5 +1,5 @@
#!/bin/sh
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License, v2
# We need to source /etc/profile.env for stuff like $LANG to work
@@ -23,7 +23,7 @@ PIDFILE="$(get_options pidfile)"
START_STOP_ARGS="$(get_options start_stop_args)"
start-stop-daemon --start --exec "${EXEC}" \
-"${NAME:+--name}" "${NAME}" "${PIDFILE:+--pidfile}" "${PIDFILE}" ${START_STOP_ARGS} || \
+${NAME:+--name} ${NAME} ${PIDFILE:+--pidfile} ${PIDFILE} ${START_STOP_ARGS} || \
eerror "ERROR: could not start the Display Manager"
# vim:ts=4