diff options
Diffstat (limited to 'pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/startkde.patch')
-rw-r--r-- | pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/startkde.patch | 372 |
1 files changed, 372 insertions, 0 deletions
diff --git a/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/startkde.patch b/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/startkde.patch new file mode 100644 index 00000000000..eea0ae4c199 --- /dev/null +++ b/pkgs/desktops/kde-5/plasma-5.6/plasma-workspace/startkde.patch @@ -0,0 +1,372 @@ +Index: plasma-workspace-5.5.5/startkde/startkde.cmake +=================================================================== +--- plasma-workspace-5.5.5.orig/startkde/startkde.cmake ++++ plasma-workspace-5.5.5/startkde/startkde.cmake +@@ -1,8 +1,36 @@ +-#!/bin/sh ++#!@bash@ + # + # DEFAULT KDE STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + ++set -x ++ ++# The KDE icon cache is supposed to update itself ++# automatically, but it uses the timestamp on the icon ++# theme directory as a trigger. Since in Nix the ++# timestamp is always the same, this doesn't work. So as ++# a workaround, nuke the icon cache on login. This isn't ++# perfect, since it may require logging out after ++# installing new applications to update the cache. ++# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html ++rm -fv $HOME/.cache/icon-cache.kcache ++ ++# Qt writes a weird ‘libraryPath’ line to ++# ~/.config/Trolltech.conf that causes the KDE plugin ++# paths of previous KDE invocations to be searched. ++# Obviously using mismatching KDE libraries is potentially ++# disastrous, so here we nuke references to the Nix store ++# in Trolltech.conf. A better solution would be to stop ++# Qt from doing this wackiness in the first place. ++if [ -e $HOME/.config/Trolltech.conf ]; then ++ @sed@ -e '/nix\\store\|nix\/store/ d' -i $HOME/.config/Trolltech.conf ++fi ++ ++# (NixOS) We run kbuildsycoca5 before starting the user session because things ++# may be missing or moved if they have run nixos-rebuild and it may not be ++# possible for them to start Konsole to run it manually! ++@kbuildsycoca5@ ++ + if test "x$1" = x--failsafe; then + KDE_FAILSAFE=1 # General failsafe flag + KWIN_COMPOSE=N # Disable KWin's compositing +@@ -17,29 +45,16 @@ trap 'echo GOT SIGHUP' HUP + # we have to unset this for Darwin since it will screw up KDE's dynamic-loading + unset DYLD_FORCE_FLAT_NAMESPACE + +-# in case we have been started with full pathname spec without being in PATH +-bindir=`echo "$0" | sed -n 's,^\(/.*\)/[^/][^/]*$,\1,p'` +-if [ -n "$bindir" ]; then +- qbindir=`qtpaths --binaries-dir` +- qdbus=$qbindir/qdbus +- case $PATH in +- $bindir|$bindir:*|*:$bindir|*:$bindir:*) ;; +- *) PATH=$bindir:$PATH; export PATH;; +- esac +-else +- qdbus=qdbus +-fi +- + # Check if a KDE session already is running and whether it's possible to connect to X +-kcheckrunning ++@kcheckrunning@ + kcheckrunning_result=$? + if test $kcheckrunning_result -eq 0 ; then +- echo "KDE seems to be already running on this display." +- xmessage -geometry 500x100 "KDE seems to be already running on this display." > /dev/null 2>/dev/null ++ echo "KDE seems to be already running on this display." ++ @xmessage@ -geometry 500x100 "KDE seems to be already running on this display." + exit 1 + elif test $kcheckrunning_result -eq 2 ; then + echo "\$DISPLAY is not set or cannot connect to the X server." +- exit 1 ++ exit 1 + fi + + # Boot sequence: +@@ -57,13 +72,8 @@ fi + # * 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 +- +-mkdir -p $configDir ++configDir=$(@qtpaths@ --writable-path GenericConfigLocation) ++mkdir -p "$configDir" + + #This is basically setting defaults so we can use them with kstartupconfig5 + cat >$configDir/startupconfigkeys <<EOF +@@ -102,42 +112,10 @@ XftSubPixel=none + EOF + } + +-# Make sure the Oxygen font is installed +-# This is necessary for setups where CMAKE_INSTALL_PREFIX +-# is not in /usr. fontconfig looks in /usr, ~/.fonts and +-# $XDG_DATA_HOME for fonts. In this case, we symlink the +-# Oxygen font under ${XDG_DATA_HOME} and make it known to +-# fontconfig +- +-usr_share="/usr/share" +-install_share="@KDE_INSTALL_FULL_DATADIR@" +- +-if [ ! $install_share = $usr_share ]; then +- +- if [ ${XDG_DATA_HOME} ]; then +- fontsDir="${XDG_DATA_HOME}/fonts" +- else +- fontsDir="${HOME}/.fonts" +- fi +- +- test -d $fontsDir || { +- mkdir -p $fontsDir +- } +- +- oxygenDir=$fontsDir/oxygen +- prefixDir="@KDE_INSTALL_FULL_DATADIR@/fonts/oxygen" +- +- # if the oxygen dir doesn't exist, create a symlink to be sure that the +- # Oxygen font is available to the user +- test -d $oxygenDir || test -d $prefixDir && { +- test -h $oxygenDir || ln -s $prefixDir $oxygenDir && fc-cache $oxygenDir +- } +-fi +- +-kstartupconfig5 ++@out@/bin/kstartupconfig5 + returncode=$? + if test $returncode -ne 0; then +- xmessage -geometry 500x100 "kstartupconfig5 does not exist or fails. The error code is $returncode. Check your installation." ++ @xmessage@ -geometry 500x100 "kstartupconfig5 does not exist or fails. The error code is $returncode. Check your installation." + exit 1 + fi + [ -r $configDir/startupconfig ] && . $configDir/startupconfig +@@ -146,9 +124,11 @@ if test "$kdeglobals_kscreen_scalefactor + export QT_DEVICE_PIXEL_RATIO=$kdeglobals_kscreen_scalefactor + fi + ++XCURSOR_PATH=~/.icons:$(echo "$XDG_DATA_DIRS" | @tr@ ":" "\n" | @sed@ 's,$,/icons,g' | @tr@ "\n" ":") ++export XCURSOR_PATH ++ + # XCursor mouse theme needs to be applied here to work even for kded or ksmserver + if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ; then +- @EXPORT_XCURSOR_PATH@ + + kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize" + if test $? -eq 10; then +@@ -164,21 +144,39 @@ if test -n "$kcminputrc_mouse_cursorthem + fi + fi + +-if test "$kcmfonts_general_forcefontdpi" -ne 0; then +- xrdb -quiet -merge -nocpp <<EOF +-Xft.dpi: $kcmfonts_general_forcefontdpi +-EOF +-fi ++# Set a left cursor instead of the standard X11 "X" cursor, since I've heard ++# from some users that they're confused and don't know what to do. This is ++# especially necessary on slow machines, where starting KDE takes one or two ++# minutes until anything appears on the screen. ++# ++# If the user has overwritten fonts, the cursor font may be different now ++# so don't move this up. ++# ++@xsetroot@ -cursor_name left_ptr + + dl=$DESKTOP_LOCKED + unset DESKTOP_LOCKED # Don't want it in the environment + ++# Make sure that D-Bus is running ++# D-Bus autolaunch is broken ++if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then ++ eval `@dbus-launch@ --sh-syntax --exit-with-session` ++fi ++if @qdbus@ >/dev/null 2>/dev/null; then ++ : # ok ++else ++ echo 'startkde: Could not start D-Bus. Can you call qdbus?' 1>&2 ++ test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++ @xmessage@ -geometry 500x100 "Could not start D-Bus. Can you call qdbus?" ++ exit 1 ++fi ++ + ksplash_pid= + if test -z "$dl"; then + # the splashscreen and progress indicator + case "$ksplashrc_ksplash_engine" in + KSplashQML) +- ksplash_pid=`ksplashqml "${ksplashrc_ksplash_theme}" --pid` ++ ksplash_pid=`@out@/bin/ksplashqml "${ksplashrc_ksplash_theme}" --pid` + ;; + None) + ;; +@@ -201,8 +199,7 @@ fi + # For anything else (that doesn't set env vars, or that needs a window manager), + # better use the Autostart folder. + +-# TODO: Use GenericConfigLocation once we depend on Qt 5.4 +-scriptpath=`qtpaths --paths ConfigLocation | tr ':' '\n' | sed 's,$,/plasma-workspace,g'` ++scriptpath=$(@qtpaths@ --paths GenericConfigLocation | tr ':' '\n' | @sed@ 's,$,/plasma-workspace,g') + + # Add /env/ to the directory to locate the scripts to be sourced + for prefix in `echo $scriptpath`; do +@@ -232,7 +229,7 @@ usr_odir=$HOME/.fonts/kde-override + usr_fdir=$HOME/.fonts + + if test -n "$KDEDIRS"; then +- kdedirs_first=`echo "$KDEDIRS"|sed -e 's/:.*//'` ++ kdedirs_first=`echo "$KDEDIRS" | @sed@ -e 's/:.*//'` + sys_odir=$kdedirs_first/share/fonts/override + sys_fdir=$kdedirs_first/share/fonts + else +@@ -245,23 +242,13 @@ fi + # add the user's dirs to the font path, as they might simply have been made + # read-only by the administrator, for whatever reason. + +-test -d "$sys_odir" && xset +fp "$sys_odir" +-test -d "$usr_odir" && (mkfontdir "$usr_odir" ; xset +fp "$usr_odir") +-test -d "$usr_fdir" && (mkfontdir "$usr_fdir" ; xset fp+ "$usr_fdir") +-test -d "$sys_fdir" && xset fp+ "$sys_fdir" ++test -d "$sys_odir" && @xset@ +fp "$sys_odir" ++test -d "$usr_odir" && ( @mkfontdir@ "$usr_odir" ; @xset@ +fp "$usr_odir" ) ++test -d "$usr_fdir" && ( @mkfontdir@ "$usr_fdir" ; @xset@ fp+ "$usr_fdir" ) ++test -d "$sys_fdir" && @xset@ fp+ "$sys_fdir" + + # Ask X11 to rebuild its font list. +-xset fp rehash +- +-# Set a left cursor instead of the standard X11 "X" cursor, since I've heard +-# from some users that they're confused and don't know what to do. This is +-# especially necessary on slow machines, where starting KDE takes one or two +-# minutes until anything appears on the screen. +-# +-# If the user has overwritten fonts, the cursor font may be different now +-# so don't move this up. +-# +-xsetroot -cursor_name left_ptr ++@xset@ fp rehash + + # Get Ghostscript to look into user's KDE fonts dir for additional Fontmap + if test -n "$GS_LIB" ; then +@@ -274,26 +261,6 @@ fi + + echo 'startkde: Starting up...' 1>&2 + +-# Make sure that the KDE prefix is first in XDG_DATA_DIRS and that it's set at all. +-# The spec allows XDG_DATA_DIRS to be not set, but X session startup scripts tend +-# to set it to a list of paths *not* including the KDE prefix if it's not /usr or +-# /usr/local. +-if test -z "$XDG_DATA_DIRS"; then +- XDG_DATA_DIRS="@CMAKE_INSTALL_PREFIX@/@SHARE_INSTALL_PREFIX@:/usr/share:/usr/local/share" +-fi +-export XDG_DATA_DIRS +- +-# Make sure that D-Bus is running +-if $qdbus >/dev/null 2>/dev/null; then +- : # ok +-else +- echo 'startkde: Could not start D-Bus. Can you call qdbus?' 1>&2 +- test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?" +- exit 1 +-fi +- +- + # Mark that full KDE session is running (e.g. Konqueror preloading works only + # with full KDE running). The KDE_FULL_SESSION property can be detected by + # any X client connected to the same X session, even if not launched +@@ -318,11 +285,11 @@ fi + # + KDE_FULL_SESSION=true + export KDE_FULL_SESSION +-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true ++@xprop@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true + + KDE_SESSION_VERSION=5 + export KDE_SESSION_VERSION +-xprop -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 ++@xprop@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 + + KDE_SESSION_UID=`id -ru` + export KDE_SESSION_UID +@@ -332,11 +299,11 @@ export XDG_CURRENT_DESKTOP + + # At this point all the environment is ready, let's send it to kwalletd if running + if test -n "$PAM_KWALLET_LOGIN" ; then +- env | socat STDIN UNIX-CONNECT:$PAM_KWALLET_LOGIN ++ env | @socat@ STDIN UNIX-CONNECT:$PAM_KWALLET_LOGIN + fi + # ...and also to kwalletd5 + if test -n "$PAM_KWALLET5_LOGIN" ; then +- env | socat STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN ++ env | @socat@ STDIN UNIX-CONNECT:$PAM_KWALLET5_LOGIN + fi + + # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment +@@ -349,18 +316,18 @@ if test $? -ne 0; then + # Startup error + echo 'startkde: Could not sync environment to dbus.' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null +- xmessage -geometry 500x100 "Could not sync environment to dbus." ++ @xmessage@ -geometry 500x100 "Could not sync environment to dbus." + exit 1 + fi + + # 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 ++LD_BIND_NOW=true @start_kdeinit_wrapper@ --kded +kcminit_startup + if test $? -ne 0; then + # Startup error + echo 'startkde: 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." ++ @xmessage@ -geometry 500x100 "Could not start kdeinit5. Check your installation." + exit 1 + fi + +@@ -379,27 +346,27 @@ test -n "$KDEWM" && KDEWM="--windowmanag + # lock now and do the rest of the KDE startup underneath the locker. + KSMSERVEROPTIONS="" + test -n "$dl" && KSMSERVEROPTIONS=" --lockscreen" +-kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS ++@kwrapper5@ @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS + if test $? -eq 255; then + # Startup error + echo 'startkde: 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." ++ @xmessage@ -geometry 500x100 "Could not start ksmserver. Check your installation." + fi + +-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true` ++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_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 +@@ -411,12 +378,12 @@ echo 'startkde: Shutting down...' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null + + # Clean up +-kdeinit5_shutdown ++@kdeinit5_shutdown@ + + unset KDE_FULL_SESSION +-xprop -root -remove KDE_FULL_SESSION ++@xprop@ -root -remove KDE_FULL_SESSION + unset KDE_SESSION_VERSION +-xprop -root -remove KDE_SESSION_VERSION ++@xprop@ -root -remove KDE_SESSION_VERSION + unset KDE_SESSION_UID + + echo 'startkde: Done.' 1>&2 |