From bbeb6ac387ad5aa933310a7572d8de4462bc356a Mon Sep 17 00:00:00 2001 From: José Romildo Malaquias Date: Fri, 17 Apr 2020 13:39:03 -0300 Subject: hicolor-icon-theme: add hook to symlink inherited icon themes --- pkgs/data/icons/hicolor-icon-theme/setup-hook.sh | 41 ++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'pkgs/data/icons') diff --git a/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh b/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh index f07bab4b269..9a6b5f405ca 100644 --- a/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh +++ b/pkgs/data/icons/hicolor-icon-theme/setup-hook.sh @@ -11,3 +11,44 @@ hicolorIconThemeHook() { # I think this is meant to be a runtime dep addEnvHooks "${hostOffset:?}" hicolorIconThemeHook + + +# Make symbolic links of parent icon themes that are inherited in the +# icon themes installed by the package. +symlinkParentIconThemes() { + if [ -e $out/share/icons ]; then + echo Symlinking parent icon themes... + local theme + local theme_name + local inheritance + local parent + local parent_theme + local dir + local parent_path + for theme in $out/share/icons/*/index.theme; do + theme_name="${theme%/*}" + theme_name="${theme_name##*/}" + echo " theme: $theme_name" + inheritance=$(sed -rne 's,^Inherits=(.*)$,\1,p' $theme) + IFS=',' read -ra parent_themes <<< "$inheritance" + for parent_theme in "${parent_themes[@]}"; do + parent_path="" + if [ -e "$out/share/icons/$parent_theme" ]; then + parent_path="$(realpath $out/share/icons/$parent_theme)" + else + IFS=':' read -ra dirs <<< $XDG_ICON_DIRS + for parent_dir in "${dirs[@]}"; do + if [ -e "$parent_dir/icons/$parent_theme/index.theme" ]; then + parent_path=$(realpath "$parent_dir/icons/$parent_theme") + ln -s "$parent_path" "$out/share/icons/" + break + fi + done + fi + echo " parent: $parent_theme -> $parent_path" + done + done + fi +} + +preFixupHooks+=(symlinkParentIconThemes) -- cgit 1.4.1