diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix index d7e72c4a7ae..b9498b1627f 100644 --- a/nixos/modules/services/x11/desktop-managers/plasma5.nix +++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix @@ -47,7 +47,7 @@ in ${getBin config.hardware.pulseaudio.package}/bin/pactl load-module module-device-manager "do_routing=1" ''} - exec "${plasma5.startkde}" + exec "${getBin plasma5.plasma-workspace}/bin/startkde" ''; }; diff --git a/pkgs/desktops/plasma-5/default.nix b/pkgs/desktops/plasma-5/default.nix index a9b3f178132..a828ba0fe7b 100644 --- a/pkgs/desktops/plasma-5/default.nix +++ b/pkgs/desktops/plasma-5/default.nix @@ -139,7 +139,6 @@ let polkit-kde-agent = callPackage ./polkit-kde-agent.nix {}; powerdevil = callPackage ./powerdevil.nix {}; sddm-kcm = callPackage ./sddm-kcm.nix {}; - startkde = callPackage ./startkde {}; systemsettings = callPackage ./systemsettings.nix {}; }; in diff --git a/pkgs/desktops/plasma-5/plasma-workspace/default.nix b/pkgs/desktops/plasma-5/plasma-workspace/default.nix index b28a1e87fb6..6fc6ef6d9e1 100644 --- a/pkgs/desktops/plasma-5/plasma-workspace/default.nix +++ b/pkgs/desktops/plasma-5/plasma-workspace/default.nix @@ -1,19 +1,23 @@ { - mkDerivation, lib, copyPathsToStore, + mkDerivation, lib, extra-cmake-modules, kdoctools, - isocodes, libdbusmenu, libSM, libXcursor, libXtst, pam, wayland, + coreutils, dbus, gnugrep, gnused, isocodes, libdbusmenu, libSM, libXcursor, + libXtst, pam, wayland, xmessage, xprop, xrdb, xsetroot, baloo, kactivities, kcmutils, kconfig, kcrash, kdbusaddons, kdeclarative, - kdelibs4support, kdesu, kglobalaccel, kidletime, kjsembed, knewstuff, + kdelibs4support, kdesu, kglobalaccel, kidletime, kinit, kjsembed, knewstuff, knotifyconfig, kpackage, krunner, kscreenlocker, ktexteditor, ktextwidgets, kwallet, kwayland, kwin, kxmlrpcclient, libkscreen, libksysguard, networkmanager-qt, phonon, plasma-framework, prison, solid, - qtgraphicaleffects, qtquickcontrols, qtquickcontrols2, qtscript, qtx11extras, + qtgraphicaleffects, qtquickcontrols, qtquickcontrols2, qtscript, qttools, + qtwayland, qtx11extras, }: +let inherit (lib) getBin getLib; in + mkDerivation { name = "plasma-workspace"; @@ -27,21 +31,47 @@ mkDerivation { kwallet kwayland kwin kxmlrpcclient libkscreen libksysguard networkmanager-qt phonon plasma-framework prison solid - qtgraphicaleffects qtquickcontrols qtquickcontrols2 qtscript qtx11extras + qtgraphicaleffects qtquickcontrols qtquickcontrols2 qtscript qtwayland qtx11extras ]; outputs = [ "out" "dev" "bin" ]; - patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); + cmakeFlags = [ + "-DNIXPKGS_XMESSAGE=${getBin xmessage}/bin/xmessage" + "-DNIXPKGS_MKDIR=${getBin coreutils}/bin/mkdir" + "-DNIXPKGS_XRDB=${getBin xrdb}/bin/xrdb" + "-DNIXPKGS_QTPATHS=${getBin qttools}/bin/qtpaths" + "-DNIXPKGS_XSETROOT=${getBin xsetroot}/bin/xsetroot" + "-DNIXPKGS_XPROP=${getBin xprop}/bin/xprop" + "-DNIXPKGS_ID=${getBin coreutils}/bin/id" + "-DNIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT=${getBin dbus}/bin/dbus-update-activation-environment" + "-DNIXPKGS_START_KDEINIT_WRAPPER=${getLib kinit}/lib/libexec/kf5/start_kdeinit_wrapper" + "-DNIXPKGS_QDBUS=${getBin qttools}/bin/qdbus" + "-DNIXPKGS_KWRAPPER5=${getBin kinit}/bin/kwrapper5" + "-DNIXPKGS_KREADCONFIG5=${getBin kconfig}/bin/kreadconfig5" + "-DNIXPKGS_GREP=${getBin gnugrep}/bin/grep" + "-DNIXPKGS_KDEINIT5_SHUTDOWN=${getBin kinit}/bin/kdeinit5_shutdown" + "-DNIXPKGS_SED=${getBin gnused}/bin/sed" + ]; - postPatch = '' - substituteInPlace startkde/kstartupconfig/kstartupconfig.cpp \ - --replace kdostartupconfig5 ''${!outputBin}/bin/kdostartupconfig5 + # To regenerate ./plasma-workspace.patch, + # + # > git clone https://github.com/ttuegel/plasma-workspace + # > cd plasma-workspace + # > git checkout nixpkgs/$x.$y # where $x.$y.$z == $version + # ... make some commits ... + # > git diff v$x.$y.$z + # + # Add upstream patches to the list below. For new patchs, particularly if not + # submitted upstream, please make a pull request and add it to + # ./plasma-workspace.patch. + patches = [ ./plasma-workspace.patch ]; + + preConfigure = '' + NIX_CFLAGS_COMPILE+=" -DNIXPKGS_KDOSTARTUPCONFIG5=\"''${!outputBin}/bin/kdostartupconfig5\"" + cmakeFlags+=" -DNIXPKGS_STARTPLASMA=''${!outputBin}/lib/libexec/startplasma" ''; postInstall = '' - rm "''${!outputBin}/bin/startkde" - rm "''${!outputBin}/bin/startplasmacompositor" - rm "''${!outputLib}/lib/libexec/startplasma" - rm -r "''${!outputBin}/share/wayland-sessions" + moveToOutput lib/libexec/startplasma ''${!outputBin} ''; } diff --git a/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch b/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch new file mode 100644 index 00000000000..1f4b83cf83b --- /dev/null +++ b/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch @@ -0,0 +1,1191 @@ +diff --git a/applets/batterymonitor/package/contents/ui/BatteryItem.qml b/applets/batterymonitor/package/contents/ui/BatteryItem.qml +index 7e2d9758..40a5797b 100644 +--- a/applets/batterymonitor/package/contents/ui/BatteryItem.qml ++++ b/applets/batterymonitor/package/contents/ui/BatteryItem.qml +@@ -26,7 +26,7 @@ import org.kde.plasma.components 2.0 as PlasmaComponents + import org.kde.plasma.extras 2.0 as PlasmaExtras + import org.kde.plasma.workspace.components 2.0 + import org.kde.kcoreaddons 1.0 as KCoreAddons +-import "logic.js" as Logic ++import "../code/logic.js" as Logic + + Item { + id: batteryItem +diff --git a/applets/batterymonitor/package/contents/ui/batterymonitor.qml b/applets/batterymonitor/package/contents/ui/batterymonitor.qml +index ae6d5919..c2f99c86 100644 +--- a/applets/batterymonitor/package/contents/ui/batterymonitor.qml ++++ b/applets/batterymonitor/package/contents/ui/batterymonitor.qml +@@ -25,7 +25,7 @@ import org.kde.plasma.plasmoid 2.0 + import org.kde.plasma.core 2.0 as PlasmaCore + import org.kde.kcoreaddons 1.0 as KCoreAddons + import org.kde.kquickcontrolsaddons 2.0 +-import "logic.js" as Logic ++import "../code/logic.js" as Logic + + Item { + id: batterymonitor +diff --git a/applets/lock_logout/contents/ui/lockout.qml b/applets/lock_logout/contents/ui/lockout.qml +index 80e7e53b..0083cf01 100644 +--- a/applets/lock_logout/contents/ui/lockout.qml ++++ b/applets/lock_logout/contents/ui/lockout.qml +@@ -23,7 +23,7 @@ import org.kde.plasma.plasmoid 2.0 + import org.kde.plasma.core 2.0 as PlasmaCore + import org.kde.plasma.components 2.0 + import org.kde.kquickcontrolsaddons 2.0 +-import "data.js" as Data ++import "../code/data.js" as Data + + Flow { + id: lockout +diff --git a/applets/notifications/package/contents/ui/main.qml b/applets/notifications/package/contents/ui/main.qml +index acdda88f..989de8ab 100644 +--- a/applets/notifications/package/contents/ui/main.qml ++++ b/applets/notifications/package/contents/ui/main.qml +@@ -28,7 +28,7 @@ import org.kde.plasma.extras 2.0 as PlasmaExtras + + import org.kde.plasma.private.notifications 1.0 + +-import "uiproperties.js" as UiProperties ++import "../code/uiproperties.js" as UiProperties + + MouseEventListener { + id: notificationsApplet +diff --git a/krunner/dbus/org.kde.krunner.service.in b/krunner/dbus/org.kde.krunner.service.in +index 85715214..294eab08 100644 +--- a/krunner/dbus/org.kde.krunner.service.in ++++ b/krunner/dbus/org.kde.krunner.service.in +@@ -1,4 +1,4 @@ + [D-BUS Service] + Name=org.kde.krunner +-Exec=@CMAKE_INSTALL_PREFIX@/bin/krunner ++Exec=@CMAKE_INSTALL_FULL_BINDIR@/krunner + +diff --git a/kuiserver/org.kde.kuiserver.service.in b/kuiserver/org.kde.kuiserver.service.in +index 7a86d07f..5b3030cc 100644 +--- a/kuiserver/org.kde.kuiserver.service.in ++++ b/kuiserver/org.kde.kuiserver.service.in +@@ -1,3 +1,3 @@ + [D-BUS Service] + Name=org.kde.kuiserver +-Exec=@CMAKE_INSTALL_PREFIX@/bin/kuiserver5 ++Exec=@CMAKE_INSTALL_FULL_BINDIR@/kuiserver5 +diff --git a/startkde/CMakeLists.txt b/startkde/CMakeLists.txt +index fe29f57a..247db953 100644 +--- a/startkde/CMakeLists.txt ++++ b/startkde/CMakeLists.txt +@@ -3,11 +3,6 @@ add_subdirectory(kstartupconfig) + add_subdirectory(ksyncdbusenv) + add_subdirectory(waitforname) + +-#FIXME: reconsider, looks fishy +-if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr") +- set(EXPORT_XCURSOR_PATH "XCURSOR_PATH=${CMAKE_INSTALL_PREFIX}/share/icons:$XCURSOR_PATH\":~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons\"; export XCURSOR_PATH") +-endif() +- + configure_file(startkde.cmake ${CMAKE_CURRENT_BINARY_DIR}/startkde @ONLY) + configure_file(startplasmacompositor.cmake ${CMAKE_CURRENT_BINARY_DIR}/startplasmacompositor @ONLY) + configure_file(startplasma.cmake ${CMAKE_CURRENT_BINARY_DIR}/startplasma @ONLY) +diff --git a/startkde/kstartupconfig/kstartupconfig.cpp b/startkde/kstartupconfig/kstartupconfig.cpp +index c9927855..bd506ce2 100644 +--- a/startkde/kstartupconfig/kstartupconfig.cpp ++++ b/startkde/kstartupconfig/kstartupconfig.cpp +@@ -147,5 +147,5 @@ int main() + fclose( keys ); + fclose( config ); + doit: +- return system( "kdostartupconfig5" ); ++ return system( NIXPKGS_KDOSTARTUPCONFIG5 ); + } +diff --git a/startkde/startkde.cmake b/startkde/startkde.cmake +index e9fa0bee..79e50a96 100644 +--- a/startkde/startkde.cmake ++++ b/startkde/startkde.cmake +@@ -1,22 +1,31 @@ + #!/bin/sh + # +-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) ++# NIXPKGS KDE STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + ++if test "x$1" = x--failsafe; then ++ KDE_FAILSAFE=1 # General failsafe flag ++ KWIN_COMPOSE=N # Disable KWin's compositing ++ QT_XCB_FORCE_SOFTWARE_OPENGL=1 ++ export KWIN_COMPOSE KDE_FAILSAFE QT_XCB_FORCE_SOFTWARE_OPENGL ++fi ++ + # When the X server dies we get a HUP signal from xinit. We must ignore it + # because we still need to do some cleanup. + trap 'echo GOT SIGHUP' HUP + +-# Check if a Plasma session already is running and whether it's possible to connect to X +-kcheckrunning ++# we have to unset this for Darwin since it will screw up KDE's dynamic-loading ++unset DYLD_FORCE_FLAT_NAMESPACE ++ ++# Check if a KDE session already is running and whether it's possible to connect to X ++@CMAKE_INSTALL_FULL_BINDIR@/kcheckrunning + kcheckrunning_result=$? +-if test $kcheckrunning_result -eq 0 ; then +- echo "Plasma seems to be already running on this display." +- xmessage -geometry 500x100 "Plasma seems to be already running on this display." > /dev/null 2>/dev/null +- exit 1 +-elif test $kcheckrunning_result -eq 2 ; then +- echo "\$DISPLAY is not set or cannot connect to the X server." +- exit 1 ++if [ $kcheckrunning_result -eq 0 ]; then ++ echo "KDE seems to be already running on this display." ++ exit 1 ++elif [ $kcheckrunning_result -eq 2 ]; then ++ echo "\$DISPLAY is not set or cannot connect to the X server." ++ exit 1 + fi + + # Boot sequence: +@@ -33,59 +42,132 @@ 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 ++export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" ++@NIXPKGS_MKDIR@ -p "$XDG_CONFIG_HOME" ++ ++# 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 $XDG_CONFIG_HOME/Trolltech.conf ]; then ++ @NIXPKGS_SED@ -e '/nix\\store\|nix\/store/ d' -i $XDG_CONFIG_HOME/Trolltech.conf + fi + +-mkdir -p $configDir ++@NIXPKGS_KBUILDSYCOCA5@ ++ ++# Set the default GTK 2 theme ++gtkrc2="$HOME/.gtkrc-2.0" ++breeze_gtkrc2="/run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc" ++if ! [ -e "$gtkrc2" ] && [ -e "$breeze_gtkrc2" ]; then ++ cat >"$gtkrc2" <"$gtk3_settings" <"$kcminputrc" <$configDir/startupconfigkeys <"$XDG_CONFIG_HOME/startupconfigkeys" <$plasmalocalerc <"$plasmalocalerc" <$kdeglobalsfile <"$kdeglobalsfile" <&2 + exit 1 + fi +-[ -r $configDir/startupconfig ] && . $configDir/startupconfig ++if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then ++ . "$XDG_CONFIG_HOME/startupconfig" ++fi + + if [ "$kdeglobals_kscreen_screenscalefactors" ]; then + export QT_SCREEN_SCALE_FACTORS="$kdeglobals_kscreen_screenscalefactors" +@@ -94,26 +176,33 @@ fi + #otherwise apps that manually opt in for high DPI get auto scaled by the developer AND manually scaled by us + export QT_AUTO_SCREEN_SCALE_FACTOR=0 + ++#Set the QtQuickControls style to our own: for QtQuickControls1 ++#it will fall back to Desktop, while it will use our own org.kde.desktop ++#for QtQuickControlsStyle and Kirigami ++export QT_QUICK_CONTROLS_STYLE=org.kde.desktop ++ ++XCURSOR_PATH=~/.icons ++IFS=":" read -r -a xdgDirs <<< "$XDG_DATA_DIRS" ++for xdgDir in "${xdgDirs[@]}"; do ++ XCURSOR_PATH="$XCURSOR_PATH:$xdgDir/icons" ++done ++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 +- XCURSOR_THEME=breeze_cursors +- export XCURSOR_THEME +- elif test -n "$kcminputrc_mouse_cursortheme"; then +- XCURSOR_THEME="$kcminputrc_mouse_cursortheme" +- export XCURSOR_THEME ++ if [ $? -eq 10 ]; then ++ export XCURSOR_THEME=breeze_cursors ++ elif [ -n "$kcminputrc_mouse_cursortheme" ]; then ++ export XCURSOR_THEME="$kcminputrc_mouse_cursortheme" + fi +- if test -n "$kcminputrc_mouse_cursorsize"; then +- XCURSOR_SIZE="$kcminputrc_mouse_cursorsize" +- export XCURSOR_SIZE ++ if [ -n "$kcminputrc_mouse_cursorsize" ]; then ++ export XCURSOR_SIZE="$kcminputrc_mouse_cursorsize" + fi + fi + +-if test "$kcmfonts_general_forcefontdpi" -ne 0; then +- xrdb -quiet -merge -nocpp </plasma-workspace/env/*.sh +-# (where correspond to the system and user's configuration +-# directories, as identified by Qt's qtpaths, e.g. $HOME/.config +-# and /etc/xdg/ on Linux) +-# +-# This is where you can define environment variables that will be available to +-# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` +-# or eval `gpg-agent --daemon`. +-# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script +-# +-# (see end of this file). +-# For anything else (that doesn't set env vars, or that needs a window manager), +-# better use the Autostart folder. +- +-scriptpath=`qtpaths --locate-dirs GenericConfigLocation plasma-workspace | tr ':' '\n'` +- +-# Add /env/ to the directory to locate the scripts to be sourced +-for prefix in `echo $scriptpath`; do +- for file in "$prefix"/env/*.sh; do +- test -r "$file" && . "$file" || true +- done +-done +- +-# Activate the kde font directories. +-# +-# There are 4 directories that may be used for supplying fonts for KDE. +-# +-# There are two system directories. These belong to the administrator. +-# There are two user directories, where the user may add her own fonts. +-# +-# The 'override' versions are for fonts that should come first in the list, +-# i.e. if you have a font in your 'override' directory, it will be used in +-# preference to any other. +-# +-# The preference order looks like this: +-# user override, system override, X, user, system +-# +-# Where X is the original font database that was set up before this script +-# runs. +- +-usr_odir=$HOME/.fonts/kde-override +-usr_fdir=$HOME/.fonts +- +-if test -n "$KDEDIRS"; then +- kdedirs_first=`echo "$KDEDIRS"|sed -e 's/:.*//'` +- sys_odir=$kdedirs_first/share/fonts/override +- sys_fdir=$kdedirs_first/share/fonts +-else +- sys_odir=$KDEDIR/share/fonts/override +- sys_fdir=$KDEDIR/share/fonts +-fi +- +-# We run mkfontdir on the user's font dirs (if we have permission) to pick +-# up any new fonts they may have installed. If mkfontdir fails, we still +-# 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" +- +-# 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 +@@ -208,28 +232,10 @@ xset fp rehash + # If the user has overwritten fonts, the cursor font may be different now + # so don't move this up. + # +-xsetroot -cursor_name left_ptr +- +-# Get Ghostscript to look into user's KDE fonts dir for additional Fontmap +-if test -n "$GS_LIB" ; then +- GS_LIB=$usr_fdir:$GS_LIB +- export GS_LIB +-else +- GS_LIB=$usr_fdir +- export GS_LIB +-fi ++@NIXPKGS_XSETROOT@ -cursor_name left_ptr + + 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 +- + # 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 +@@ -254,44 +260,65 @@ export XDG_DATA_DIRS + # + KDE_FULL_SESSION=true + export KDE_FULL_SESSION +-xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true ++@NIXPKGS_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 ++@NIXPKGS_XPROP@ -root -f KDE_SESSION_VERSION 32c -set KDE_SESSION_VERSION 5 + +-KDE_SESSION_UID=`id -ru` ++KDE_SESSION_UID=$(@NIXPKGS_ID@ -ru) + export KDE_SESSION_UID + + XDG_CURRENT_DESKTOP=KDE + export XDG_CURRENT_DESKTOP + ++# Enforce xcb QPA. Helps switching between Wayland and X sessions. ++export QT_QPA_PLATFORM=xcb ++ ++# Source scripts found in /plasma-workspace/env/*.sh ++# (where correspond to the system and user's configuration ++# directories, as identified by Qt's qtpaths, e.g. $HOME/.config ++# and /etc/xdg/ on Linux) ++# ++# This is where you can define environment variables that will be available to ++# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` ++# or eval `gpg-agent --daemon`. ++# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script ++# ++# (see end of this file). ++# For anything else (that doesn't set env vars, or that needs a window manager), ++# better use the Autostart folder. ++ ++IFS=":" read -r -a scriptpath <<< $(@NIXPKGS_QTPATHS@ --paths GenericConfigLocation) ++# Add /env/ to the directory to locate the scripts to be sourced ++for prefix in "${scriptpath[@]}"; do ++ for file in "$prefix"/plasma-workspace/env/*.sh; do ++ if [ -r "$file" ]; then ++ . "$file" ++ fi ++ done ++done ++ + # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment +-if which dbus-update-activation-environment >/dev/null 2>/dev/null ; then +- dbus-update-activation-environment --systemd --all +-else +- @CMAKE_INSTALL_FULL_LIBEXECDIR@/ksyncdbusenv +-fi +-if test $? -ne 0; then ++ ++if ! @NIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT@ --systemd --all; 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." + 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 @NIXPKGS_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." + exit 1 + fi + +-qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & ++@NIXPKGS_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 +@@ -303,34 +330,37 @@ qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit & + # 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. +-test -n "$KDEWM" && KDEWM="--windowmanager $KDEWM" ++if [ -n "$KDEWM" ]; then ++ KDEWM="--windowmanager $KDEWM" ++fi + # 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="" +-test -n "$dl" && KSMSERVEROPTIONS=" --lockscreen" +-kwrapper5 @CMAKE_INSTALL_FULL_BINDIR@/ksmserver $KDEWM $KSMSERVEROPTIONS ++if [ -n "$dl" ]; then ++ KSMSERVEROPTIONS=" --lockscreen" ++fi ++@NIXPKGS_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." + fi + + #Anything after here is logout/shutdown + +-wait_drkonqi=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Enabled --default true` ++wait_drkonqi=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true) + +-if test x"$wait_drkonqi"x = x"true"x ; then ++if [ 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=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Timeout --default 900) + wait_drkonqi_counter=0 +- while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do ++ while @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ -q "^[^w]*org.kde.drkonqi" ; do + sleep 5 + wait_drkonqi_counter=$((wait_drkonqi_counter+5)) +- if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then ++ if [ "$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" ++ @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ 'org.kde.drkonqi-' | while read address ; do ++ @NIXPKGS_QDBUS@ "$address" "/MainApplication" "quit" + done + break + fi +@@ -339,15 +369,17 @@ fi + + echo 'startkde: Shutting down...' 1>&2 + # just in case +-test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++if [ -n "$ksplash_pid" ]; then ++ kill "$ksplash_pid" 2>/dev/null ++fi + + # Clean up +-kdeinit5_shutdown ++@NIXPKGS_KDEINIT5_SHUTDOWN@ + + unset KDE_FULL_SESSION +-xprop -root -remove KDE_FULL_SESSION ++@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION + unset KDE_SESSION_VERSION +-xprop -root -remove KDE_SESSION_VERSION ++@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION + unset KDE_SESSION_UID + + echo 'startkde: Done.' 1>&2 +diff --git a/startkde/startplasma.cmake b/startkde/startplasma.cmake +index fd232bdf..e1c8fff6 100644 +--- a/startkde/startplasma.cmake ++++ b/startkde/startplasma.cmake +@@ -1,6 +1,6 @@ + #!/bin/sh + # +-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) ++# NIXPKGS Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + + # Boot sequence: +@@ -17,17 +17,13 @@ + # + # * 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 ++export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" ++if [ -r "$XDG_CONFIG_HOME/startupconfig" ]; then ++ . "$XDG_CONFIG_HOME/startupconfig" + 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 ++@NIXPKGS_XPROP@ -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true ++@NIXPKGS_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 ++LD_BIND_NOW=true @NIXPKGS_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 ++@NIXPKGS_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 +@@ -145,27 +89,26 @@ qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit + # 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 ++@NIXPKGS_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` ++wait_drkonqi=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Enabled --default true) + +-if test x"$wait_drkonqi"x = x"true"x ; then ++if [ 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=$(@NIXPKGS_KREADCONFIG5@ --file startkderc --group WaitForDrKonqi --key Timeout --default 900) + wait_drkonqi_counter=0 +- while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do ++ while @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ -q "^[^w]*org.kde.drkonqi" ; do + sleep 5 + wait_drkonqi_counter=$((wait_drkonqi_counter+5)) +- if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then ++ if [ "$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" ++ @NIXPKGS_QDBUS@ | @NIXPKGS_GREP@ 'org.kde.drkonqi-' | while read address ; do ++ @NIXPKGS_QDBUS@ "$address" "/MainApplication" "quit" + done + break + fi +@@ -174,15 +117,17 @@ fi + + echo 'startplasma: Shutting down...' 1>&2 + # just in case +-test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++if [ -n "$ksplash_pid" ]; then ++ kill "$ksplash_pid" 2>/dev/null ++fi + + # Clean up +-kdeinit5_shutdown ++@NIXPKGS_KDEINIT5_SHUTDOWN@ + + unset KDE_FULL_SESSION +-xprop -root -remove KDE_FULL_SESSION ++@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION + unset KDE_SESSION_VERSION +-xprop -root -remove KDE_SESSION_VERSION ++@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION + unset KDE_SESSION_UID + + echo 'startplasma: Done.' 1>&2 +diff --git a/startkde/startplasmacompositor.cmake b/startkde/startplasmacompositor.cmake +index 417a87d4..3f62745a 100644 +--- a/startkde/startplasmacompositor.cmake ++++ b/startkde/startplasmacompositor.cmake +@@ -1,173 +1,171 @@ + #!/bin/sh + # +-# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) ++# NIXPKGS Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) + # + +-# 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 ++# we have to unset this for Darwin since it will screw up KDE's dynamic-loading ++unset DYLD_FORCE_FLAT_NAMESPACE ++ ++export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" ++@NIXPKGS_MKDIR@ -p "$XDG_CONFIG_HOME" ++ ++# 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 $XDG_CONFIG_HOME/Trolltech.conf ]; then ++ @NIXPKGS_SED@ -e '/nix\\store\|nix\/store/ d' -i $XDG_CONFIG_HOME/Trolltech.conf + fi + +-# 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 ++@NIXPKGS_KBUILDSYCOCA5@ ++ ++# Set the default GTK 2 theme ++gtkrc2="$HOME/.gtkrc-2.0" ++breeze_gtkrc2="/run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc" ++if ! [ -e "$gtkrc2" ] && [ -e "$breeze_gtkrc2" ]; then ++ cat >"$gtkrc2" <"$gtk3_settings" <"$kcminputrc" <$configDir/startupconfigkeys <"$XDG_CONFIG_HOME/startupconfigkeys" <$plasmalocalerc <"$plasmalocalerc" <$kdeglobalsfile <"$kdeglobalsfile" </plasma-workspace/env/*.sh +-# (where correspond to the system and user's configuration +-# directories, as identified by Qt's qtpaths, e.g. $HOME/.config +-# and /etc/xdg/ on Linux) +-# +-# This is where you can define environment variables that will be available to +-# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` +-# or eval `gpg-agent --daemon`. +-# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script +-# +-# (see end of this file). +-# 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'` +- +-# Add /env/ to the directory to locate the scripts to be sourced +-for prefix in `echo $scriptpath`; do +- for file in "$prefix"/env/*.sh; do +- test -r "$file" && . "$file" +- done +-done +- + echo 'startplasmacompositor: 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="@KDE_INSTALL_FULL_DATADIR@:/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 ++if ! @NIXPKGS_QDBUS@ >/dev/null 2>/dev/null; then + echo 'startplasmacompositor: Could not start D-Bus. Can you call qdbus?' 1>&2 + test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null + exit 1 +@@ -202,7 +200,7 @@ export KDE_FULL_SESSION + KDE_SESSION_VERSION=5 + export KDE_SESSION_VERSION + +-KDE_SESSION_UID=`id -ru` ++KDE_SESSION_UID=$(@NIXPKGS_ID@ -ru) + export KDE_SESSION_UID + + XDG_CURRENT_DESKTOP=KDE +@@ -212,26 +210,47 @@ export XDG_CURRENT_DESKTOP + QT_QPA_PLATFORM=wayland + export QT_QPA_PLATFORM + ++# Source scripts found in /plasma-workspace/env/*.sh ++# (where correspond to the system and user's configuration ++# directories, as identified by Qt's qtpaths, e.g. $HOME/.config ++# and /etc/xdg/ on Linux) ++# ++# This is where you can define environment variables that will be available to ++# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` ++# or eval `gpg-agent --daemon`. ++# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script ++# ++# (see end of this file). ++# For anything else (that doesn't set env vars, or that needs a window manager), ++# better use the Autostart folder. ++ ++IFS=":" read -r -a scriptpath <<< $(@NIXPKGS_QTPATHS@ --paths GenericConfigLocation) ++# Add /env/ to the directory to locate the scripts to be sourced ++for prefix in "${scriptpath[@]}"; do ++ for file in "$prefix"/plasma-workspace/env/*.sh; do ++ if [ -r "$file" ]; then ++ . "$file" ++ fi ++ done ++done ++ + # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment +-if which dbus-update-activation-environment >/dev/null 2>/dev/null ; then +- dbus-update-activation-environment --systemd --all +-else +- @CMAKE_INSTALL_FULL_LIBEXECDIR@/ksyncdbusenv +-fi +-if test $? -ne 0; then +- # Startup error +- echo 'startplasmacompositor: Could not sync environment to dbus.' 1>&2 +- exit 1 ++if ! @NIXPKGS_DBUS_UPDATE_ACTIVATION_ENVIRONMENT@ --systemd --all; then ++ # Startup error ++ echo 'startkde: Could not sync environment to dbus.' 1>&2 ++ test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null ++ echo 'startplasmacompositor: Could not sync environment to dbus.' 1>&2 ++ exit 1 + fi + +-@KWIN_WAYLAND_BIN_PATH@ --xwayland --libinput --exit-with-session=@CMAKE_INSTALL_FULL_LIBEXECDIR@/startplasma ++@KWIN_WAYLAND_BIN_PATH@ --xwayland --libinput --exit-with-session=@NIXPKGS_STARTPLASMA@ + + echo 'startplasmacompositor: Shutting down...' 1>&2 + + unset KDE_FULL_SESSION +-xprop -root -remove KDE_FULL_SESSION ++@NIXPKGS_XPROP@ -root -remove KDE_FULL_SESSION + unset KDE_SESSION_VERSION +-xprop -root -remove KDE_SESSION_VERSION ++@NIXPKGS_XPROP@ -root -remove KDE_SESSION_VERSION + unset KDE_SESSION_UID + + echo 'startplasmacompositor: Done.' 1>&2 +diff --git a/startkde/waitforname/org.kde.plasma.Notifications.service.in b/startkde/waitforname/org.kde.plasma.Notifications.service.in +index 0a51b84b..f48b5d8a 100644 +--- a/startkde/waitforname/org.kde.plasma.Notifications.service.in ++++ b/startkde/waitforname/org.kde.plasma.Notifications.service.in +@@ -1,3 +1,3 @@ + [D-BUS Service] + Name=org.freedesktop.Notifications +-Exec=@CMAKE_INSTALL_PREFIX@/bin/plasma_waitforname org.freedesktop.Notifications ++Exec=@CMAKE_INSTALL_FULL_BINDIR@/plasma_waitforname org.freedesktop.Notifications diff --git a/pkgs/desktops/plasma-5/plasma-workspace/qml-import-path.patch b/pkgs/desktops/plasma-5/plasma-workspace/qml-import-path.patch deleted file mode 100644 index 3b3d318d3bb..00000000000 --- a/pkgs/desktops/plasma-5/plasma-workspace/qml-import-path.patch +++ /dev/null @@ -1,52 +0,0 @@ -Index: plasma-workspace-5.6.3/applets/batterymonitor/package/contents/ui/BatteryItem.qml -=================================================================== ---- plasma-workspace-5.6.3.orig/applets/batterymonitor/package/contents/ui/BatteryItem.qml -+++ plasma-workspace-5.6.3/applets/batterymonitor/package/contents/ui/BatteryItem.qml -@@ -26,7 +26,7 @@ import org.kde.plasma.components 2.0 as - import org.kde.plasma.extras 2.0 as PlasmaExtras - import org.kde.plasma.workspace.components 2.0 - import org.kde.kcoreaddons 1.0 as KCoreAddons --import "logic.js" as Logic -+import "../code/logic.js" as Logic - - Item { - id: batteryItem -Index: plasma-workspace-5.6.3/applets/batterymonitor/package/contents/ui/batterymonitor.qml -=================================================================== ---- plasma-workspace-5.6.3.orig/applets/batterymonitor/package/contents/ui/batterymonitor.qml -+++ plasma-workspace-5.6.3/applets/batterymonitor/package/contents/ui/batterymonitor.qml -@@ -25,7 +25,7 @@ import org.kde.plasma.plasmoid 2.0 - import org.kde.plasma.core 2.0 as PlasmaCore - import org.kde.kcoreaddons 1.0 as KCoreAddons - import org.kde.kquickcontrolsaddons 2.0 --import "logic.js" as Logic -+import "../code/logic.js" as Logic - - Item { - id: batterymonitor -Index: plasma-workspace-5.6.3/applets/lock_logout/contents/ui/lockout.qml -=================================================================== ---- plasma-workspace-5.6.3.orig/applets/lock_logout/contents/ui/lockout.qml -+++ plasma-workspace-5.6.3/applets/lock_logout/contents/ui/lockout.qml -@@ -23,7 +23,7 @@ import org.kde.plasma.plasmoid 2.0 - import org.kde.plasma.core 2.0 as PlasmaCore - import org.kde.plasma.components 2.0 - import org.kde.kquickcontrolsaddons 2.0 --import "data.js" as Data -+import "../code/data.js" as Data - - Flow { - id: lockout -Index: plasma-workspace-5.6.3/applets/notifications/package/contents/ui/main.qml -=================================================================== ---- plasma-workspace-5.6.3.orig/applets/notifications/package/contents/ui/main.qml -+++ plasma-workspace-5.6.3/applets/notifications/package/contents/ui/main.qml -@@ -28,7 +28,7 @@ import org.kde.plasma.extras 2.0 as Plas - - import org.kde.plasma.private.notifications 1.0 - --import "uiproperties.js" as UiProperties -+import "../code/uiproperties.js" as UiProperties - - MouseEventListener { - id: notificationsApplet diff --git a/pkgs/desktops/plasma-5/plasma-workspace/series b/pkgs/desktops/plasma-5/plasma-workspace/series deleted file mode 100644 index b9081298bd6..00000000000 --- a/pkgs/desktops/plasma-5/plasma-workspace/series +++ /dev/null @@ -1 +0,0 @@ -qml-import-path.patch diff --git a/pkgs/desktops/plasma-5/startkde/default.nix b/pkgs/desktops/plasma-5/startkde/default.nix deleted file mode 100644 index 3b04c037073..00000000000 --- a/pkgs/desktops/plasma-5/startkde/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - stdenv, lib, runCommand, substituteAll, dbus, gnugrep, gnused, kconfig, - kinit, kservice, plasma-desktop, plasma-workspace, xmessage, xprop, xrdb, - xsetroot, qttools, -}: - -let - - inherit (lib) getBin getLib; - - script = substituteAll { - src = ./startkde.sh; - inherit (stdenv) shell; - kbuildsycoca5 = "${getBin kservice}/bin/kbuildsycoca5"; - sed = "${getBin gnused}/bin/sed"; - kcheckrunning = "${getBin plasma-workspace}/bin/kcheckrunning"; - xmessage = "${getBin xmessage}/bin/xmessage"; - kstartupconfig5 = "${getBin plasma-workspace}/bin/kstartupconfig5"; - kapplymousetheme = "${getBin plasma-desktop}/bin/kapplymousetheme"; - xsetroot = "${getBin xsetroot}/bin/xsetroot"; - xrdb = "${getBin xrdb}/bin/xrdb"; - ksplashqml = "${getBin plasma-workspace}/bin/ksplashqml"; - qdbus = "${getBin qttools}/bin/qdbus"; - xprop = "${getBin xprop}/bin/xprop"; - qtpaths = "${getBin qttools}/bin/qtpaths"; - dbus_update_activation_environment = "${getBin dbus}/bin/dbus-update-activation-environment"; - start_kdeinit_wrapper = "${getLib kinit}/lib/libexec/kf5/start_kdeinit_wrapper"; - kwrapper5 = "${getBin kinit}/bin/kwrapper5"; - ksmserver = "${getBin plasma-workspace}/bin/ksmserver"; - kreadconfig5 = "${getBin kconfig}/bin/kreadconfig5"; - kdeinit5_shutdown = "${getBin kinit}/bin/kdeinit5_shutdown"; - }; - -in - -runCommand "startkde.sh" -{ preferLocalBuild = true; allowSubstitutes = false; } -'' - cp ${script} $out - chmod +x $out -'' diff --git a/pkgs/desktops/plasma-5/startkde/startkde.sh b/pkgs/desktops/plasma-5/startkde/startkde.sh deleted file mode 100755 index f8b4f4844e2..00000000000 --- a/pkgs/desktops/plasma-5/startkde/startkde.sh +++ /dev/null @@ -1,384 +0,0 @@ -#!@shell@ - -@kbuildsycoca5@ - -# Set the default GTK 2 theme -if ! [ -e $HOME/.gtkrc-2.0 ] \ - && [ -e /run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc ]; then - cat >$HOME/.gtkrc-2.0 <$HOME/.config/gtk-3.0/settings.ini <$configDir/kcminputrc <$configDir/startupconfigkeys <$plasmalocalerc <$kdeglobalsfile <&2 - -# 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 -# directly from the KDE session but e.g. using "ssh -X", kdesu. $KDE_FULL_SESSION -# however guarantees that the application is launched in the same environment -# like the KDE session and that e.g. KDE utilities/libraries are available. -# KDE_FULL_SESSION property is also only available since KDE 3.5.5. -# The matching tests are: -# For $KDE_FULL_SESSION: -# if test -n "$KDE_FULL_SESSION"; then ... whatever -# For KDE_FULL_SESSION property: -# xprop -root | grep "^KDE_FULL_SESSION" >/dev/null 2>/dev/null -# if test $? -eq 0; then ... whatever -# -# Additionally there is (since KDE 3.5.7) $KDE_SESSION_UID with the uid -# of the user running the KDE session. It should be rarely needed (e.g. -# after sudo to prevent desktop-wide functionality in the new user's kded). -# -# Since KDE4 there is also KDE_SESSION_VERSION, containing the major version number. -# Note that this didn't exist in KDE3, which can be detected by its absense and -# the presence of KDE_FULL_SESSION. -# -KDE_FULL_SESSION=true -export KDE_FULL_SESSION -@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 - -KDE_SESSION_UID=$(id -ru) -export KDE_SESSION_UID - -XDG_CURRENT_DESKTOP=KDE -export XDG_CURRENT_DESKTOP - -# Source scripts found in /plasma-workspace/env/*.sh -# (where correspond to the system and user's configuration -# directories, as identified by Qt's qtpaths, e.g. $HOME/.config -# and /etc/xdg/ on Linux) -# -# This is where you can define environment variables that will be available to -# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent` -# or eval `gpg-agent --daemon`. -# Note: if you do that, you should also put "ssh-agent -k" as a shutdown script -# -# (see end of this file). -# For anything else (that doesn't set env vars, or that needs a window manager), -# better use the Autostart folder. - -IFS=":" read -r -a scriptpath <<< $(@qtpaths@ --paths GenericConfigLocation) -# Add /env/ to the directory to locate the scripts to be sourced -for prefix in "${scriptpath[@]}"; do - for file in "$prefix"/plasma-workspace/env/*.sh; do - test -r "$file" && . "$file" || true - done -done - -# At this point all environment variables are set, let's send it to the DBus session server to update the activation environment -@dbus_update_activation_environment@ --systemd --all -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." - 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 @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." - exit 1 -fi - -@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. -test -n "$KDEWM" && KDEWM="--windowmanager $KDEWM" -# 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="" -test -n "$dl" && KSMSERVEROPTIONS=" --lockscreen" -@kwrapper5@ @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." -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 - 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" - done - break - fi - done -fi - -echo 'startkde: 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 'startkde: Done.' 1>&2