diff options
Diffstat (limited to 'gui-libs/display-manager-init/files')
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 |