diff --git a/startkde/startplasma.cmake b/startkde/startplasma.cmake index 2904e8fd..59dc7b78 100644 --- a/startkde/startplasma.cmake +++ b/startkde/startplasma.cmake @@ -1,198 +1,185 @@ #!/bin/sh # # DEFAULT KDE STARTUP SCRIPT ( @PROJECT_VERSION@ ) # # Boot sequence: # # kdeinit is used to fork off processes which improves memory usage # and startup time. # # * kdeinit starts klauncher first. # * Then kded is started. kded is responsible for keeping the sycoca # database up to date. When an up to date database is present it goes # into the background and the startup continues. # * Then kdeinit starts kcminit. kcminit performs initialisation of # certain devices according to the user's settings # # * Then ksmserver is started which takes control of the rest of the startup sequence # We need to create config folder so we can write startupconfigkeys if [ ${XDG_CONFIG_HOME} ]; then configDir=$XDG_CONFIG_HOME; else configDir=${HOME}/.config; #this is the default, http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html fi [ -r $configDir/startupconfig ] && . $configDir/startupconfig if test "$kcmfonts_general_forcefontdpi" -ne 0; then xrdb -quiet -merge -nocpp <&2 # export our session variables to the Xwayland server xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 # We set LD_BIND_NOW to increase the efficiency of kdeinit. # kdeinit unsets this variable before loading applications. LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup if test $? -ne 0; then # Startup error echo 'startplasma: Could not start kdeinit5. Check your installation.' 1>&2 test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation." exit 1 fi -$qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit +qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit # finally, give the session control to the session manager # see kdebase/ksmserver for the description of the rest of the startup sequence # if the KDEWM environment variable has been set, then it will be used as KDE's # window manager instead of kwin. # if KDEWM is not set, ksmserver will ensure kwin is started. # kwrapper5 is used to reduce startup time and memory usage # kwrapper5 does not return useful error codes such as the exit code of ksmserver. # We only check for 255 which means that the ksmserver process could not be # started, any problems thereafter, e.g. ksmserver failing to initialize, # will remain undetected. # If the session should be locked from the start (locked autologin), # lock now and do the rest of the KDE startup underneath the locker. KSMSERVEROPTIONS=" --no-lockscreen" kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS if test $? -eq 255; then # Startup error echo 'startplasma: Could not start ksmserver. Check your installation.' 1>&2 test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null xmessage -geometry 500x100 "Could not start ksmserver. Check your installation." fi wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true` if test x"$wait_drkonqi"x = x"true"x ; then # wait for remaining drkonqi instances with timeout (in seconds) wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900` wait_drkonqi_counter=0 - while $qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do + while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do sleep 5 wait_drkonqi_counter=$((wait_drkonqi_counter+5)) if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then # ask remaining drkonqis to die in a graceful way - $qdbus | grep 'org.kde.drkonqi-' | while read address ; do - $qdbus "$address" "/MainApplication" "quit" + qdbus | grep 'org.kde.drkonqi-' | while read address ; do + qdbus "$address" "/MainApplication" "quit" done break fi done fi echo 'startplasma: Shutting down...' 1>&2 # just in case test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null # Clean up kdeinit5_shutdown unset KDE_FULL_SESSION xprop -root -remove KDE_FULL_SESSION unset KDE_SESSION_VERSION xprop -root -remove KDE_SESSION_VERSION unset KDE_SESSION_UID echo 'startplasma: Done.' 1>&2