Skip to content
This repository has been archived by the owner on Apr 12, 2021. It is now read-only.

Commit

Permalink
plasma: handle ksycoca5 better
Browse files Browse the repository at this point in the history
- Remove xdg-desktop-menu-dummy.menu kbuildsycoca5. Not sure why we
  need it but it is a pretty big failure if it exists.
  See issue #56176.

- plasma: clear ksycoca cache before building

  This is needed to pick up on software removed since the last cache
  update. Otherwise it hangs around as zombies forever (or until the
  cache is cleared).

- Add the above + the icon cache cleanup to plasmaSetup

  This will be run for the logged in user on each nixos-rebuild.
  Unfortunately this only works if you are managing software through
  nixos-rebuild (nix-env users need to run this manually, otherwise
  log out and log back in).
  • Loading branch information
matthewbauer committed Mar 7, 2019
1 parent 1847b85 commit 393b359
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 3 deletions.
24 changes: 23 additions & 1 deletion nixos/modules/services/x11/desktop-managers/plasma5.nix
Expand Up @@ -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
'';
})
];

Expand Down
22 changes: 20 additions & 2 deletions pkgs/desktops/plasma-5/plasma-workspace/plasma-workspace.patch
Expand Up @@ -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

Expand All @@ -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.
Expand Down Expand Up @@ -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@ )
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit 393b359

Please sign in to comment.