diff options
-rw-r--r-- | nixos/modules/services/x11/desktop-managers/plasma5.nix | 24 | ||||
-rw-r--r-- | pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch | 22 |
2 files changed, 43 insertions, 3 deletions
diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix index ace9dd5321b..e5be9bf2769 100644 --- a/nixos/modules/services/x11/desktop-managers/plasma5.nix +++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix @@ -226,7 +226,29 @@ in security.pam.services.slim.enableKwallet = true; # Update the start menu for each user that is currently logged in - system.userActivationScripts.plasmaSetup = "${pkgs.libsForQt5.kservice}/bin/kbuildsycoca5"; + system.userActivationScripts.plasmaSetup = '' + # 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 + + # xdg-desktop-settings generates this empty file but + # it makes kbuildsyscoca5 fail silently. To fix this + # remove that menu if it exists. + rm -fv $HOME/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu + + # Remove the kbuildsyscoca5 cache. It will be regenerated + # immediately after. This is necessary for kbuildsyscoca5 to + recognize that software that has been removed. + rm -fv $HOME/.cache/ksycoca* + + ${pkgs.libsForQt5.kservice}/bin/kbuildsycoca5 + ''; }) ]; diff --git a/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch b/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch index dd5f7321f0e..dde4a3c819f 100644 --- a/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch +++ b/pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch @@ -81,7 +81,7 @@ index 714a9bf1..9733c612 100644 fi # Boot sequence: -@@ -33,61 +42,133 @@ fi +@@ -33,61 +42,142 @@ fi # # * Then ksmserver is started which takes control of the rest of the startup sequence @@ -102,6 +102,15 @@ index 714a9bf1..9733c612 100644 +# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html +rm -fv $HOME/.cache/icon-cache.kcache + ++# xdg-desktop-settings generates this empty file but ++# it makes kbuildsyscoca5 fail silently. To fix this ++# remove that menu if it exists. ++rm -fv $HOME/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu ++ ++# Remove the kbuildsyscoca5 cache. It will be regenerated immediately after. ++# This is necessary for kbuildsyscoca5 to recognize that software that has been removed. ++rm -fv $HOME/.cache/ksycoca* ++ +# Qt writes a weird ‘libraryPath’ line to +# ~/.config/Trolltech.conf that causes the KDE plugin +# paths of previous KDE invocations to be searched. @@ -721,7 +730,7 @@ diff --git a/startkde/startplasmacompositor.cmake b/startkde/startplasmacomposit index dd9e304d..12132f9e 100644 --- a/startkde/startplasmacompositor.cmake +++ b/startkde/startplasmacompositor.cmake -@@ -1,118 +1,165 @@ +@@ -1,118 +1,174 @@ #!/bin/sh # -# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ ) @@ -749,6 +758,15 @@ index dd9e304d..12132f9e 100644 +# See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html +rm -fv $HOME/.cache/icon-cache.kcache + ++# xdg-desktop-settings generates this empty file but ++# it makes kbuildsyscoca5 fail silently. To fix this ++# remove that menu if it exists. ++rm -fv $HOME/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu ++ ++# Remove the kbuildsyscoca5 cache. It will be regenerated immediately after. ++# This is necessary for kbuildsyscoca5 to recognize that software that has been removed. ++rm -fv $HOME/.cache/ksycoca* ++ +# Qt writes a weird ‘libraryPath’ line to +# ~/.config/Trolltech.conf that causes the KDE plugin +# paths of previous KDE invocations to be searched. |