gtk3.setupHook: clear icon-theme.cache in preFixup
Packages often run gtk-update-icon-cache to include their icons in themes’ icon cache. However, since each package is installed to its own prefix, the files will only collide. For that reason we are removing the icon-theme.cache from applications. Previously, we did that in hicolor-icon-theme setup hook but, since it is actually gtk3’s utility that creates the cache, we thought it would be appropriate to let its setup hook handle the clearing.
This commit is contained in:
parent
0902f08e0d
commit
8f91e87ded
2 changed files with 24 additions and 13 deletions
|
@ -1,21 +1,13 @@
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
# Populate XDG_ICON_DIRS
|
# Populate XDG_ICON_DIRS
|
||||||
hicolorIconThemeHook() {
|
hicolorIconThemeHook() {
|
||||||
|
|
||||||
# where to find icon themes
|
# where to find icon themes
|
||||||
if [ -d "$1/share/icons" ]; then
|
if [ -d "$1/share/icons" ]; then
|
||||||
addToSearchPath XDG_ICON_DIRS $1/share
|
addToSearchPath XDG_ICON_DIRS "$1/share"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# I think this is meant to be a runtime dep
|
# I think this is meant to be a runtime dep
|
||||||
addEnvHooks "$hostOffset" hicolorIconThemeHook
|
addEnvHooks "${hostOffset:?}" hicolorIconThemeHook
|
||||||
|
|
||||||
# Remove icon cache
|
|
||||||
hicolorPreFixupPhase() {
|
|
||||||
rm -f $out/share/icons/hicolor/icon-theme.cache
|
|
||||||
rm -f $out/share/icons/HighContrast/icon-theme.cache
|
|
||||||
}
|
|
||||||
|
|
||||||
preFixupPhases="$preFixupPhases hicolorPreFixupPhase"
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,29 @@
|
||||||
|
# shellcheck shell=bash
|
||||||
|
|
||||||
fixupOutputHooks+=(_gtk3CleanComments)
|
fixupOutputHooks+=(_gtk3CleanComments)
|
||||||
|
|
||||||
# Clean comments that link to generator of the file
|
# Clean comments that link to generator of the file
|
||||||
_gtk3CleanComments() {
|
_gtk3CleanComments() {
|
||||||
local f="$prefix/lib/gtk-3.0/3.0.0/immodules.cache"
|
local f="${prefix:?}/lib/gtk-3.0/3.0.0/immodules.cache"
|
||||||
if [ -f "$f" ]; then
|
if [ -f "$f" ]; then
|
||||||
sed 's|Created by .*bin/gtk-query-|Created by bin/gtk-query-|' -i "$f"
|
sed 's|Created by .*bin/gtk-query-|Created by bin/gtk-query-|' -i "$f"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Packages often run gtk-update-icon-cache to include their icons in themes’ icon cache.
|
||||||
|
# However, since each package is installed to its own prefix, the files will only collide.
|
||||||
|
dropIconThemeCache() {
|
||||||
|
if [[ -z "${dontDropIconThemeCache:-}" ]]; then
|
||||||
|
local icondir="${out:?}/share/icons"
|
||||||
|
if [[ -d "${icondir}" ]]; then
|
||||||
|
# App icons are supposed to go to hicolor theme, since it is a fallback theme as per [icon-theme-spec], but some might still choose to install stylized icons to other themes.
|
||||||
|
find "${icondir}" -name 'icon-theme.cache' -print0 \
|
||||||
|
| while IFS= read -r -d '' file; do
|
||||||
|
echo "Removing ${file}"
|
||||||
|
rm -f "${file}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
preFixupPhases="$preFixupPhases dropIconThemeCache"
|
||||||
|
|
Loading…
Reference in a new issue