Also share unchanged dirs across schemes when installing -s all

The non-folder directories are identical for every scheme of the same
light/dark color, not just within one scheme. Link them to the global
default theme when it exists, and fall back to the scheme default so a
single-scheme install (the AUR split packages) still dedupes.
This commit is contained in:
Atay Özcan
2026-06-22 22:31:31 +02:00
parent 5c45c861b7
commit 0761779f8a
+15 -8
View File
@@ -142,17 +142,24 @@ install() {
ln -sf status status@2x
)
# Only the folder icons (apps, places) change with the accent color, so the
# other directories are identical to the default theme of the same scheme and
# color. Link them instead of keeping a full copy per accent variant. This is
# skipped when the default theme isn't installed (e.g. a single -t variant).
if [[ "${theme}" != '' && "${color}" != '' ]]; then
local BASE_DIR="${dest}/${name}${scheme}${color}"
if [[ -d "${BASE_DIR}" ]]; then
# Only the folder icons (apps, places) change with the scheme and accent
# color. Every other directory is identical for all variants of the same
# light/dark color, so link them to the default theme instead of keeping a
# full copy per variant. Prefer the global default (covers -s all), fall back
# to the scheme default (covers a single scheme), and skip linking when no
# default is present so a standalone -t variant still installs in full.
if [[ "${color}" != '' ]]; then
local base=
if [[ ( "${theme}" != '' || "${scheme}" != '' ) && -d "${dest}/${name}${color}" ]]; then
base="${name}${color}"
elif [[ "${theme}" != '' && -d "${dest}/${name}${scheme}${color}" ]]; then
base="${name}${scheme}${color}"
fi
if [[ -n "${base}" ]]; then
for dir in actions categories devices emblems mimetypes status; do
if [[ -d "${THEME_DIR}/${dir}" && ! -L "${THEME_DIR}/${dir}" ]]; then
rm -rf "${THEME_DIR}/${dir}"
ln -sf "../${name}${scheme}${color}/${dir}" "${THEME_DIR}/${dir}"
ln -sf "../${base}/${dir}" "${THEME_DIR}/${dir}"
fi
done
fi