# Copyright 1999-2024 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=8
MY_PN="kde"
if [[ "${PV}" == *_pre* ]]; then
MY_PV=""
SRC_A="${MY_PV}.tar.gz"
else
MY_PV="${PV}"
SRC_A="v${MY_PV}.tar.gz"
fi
MY_P="${MY_PN}-${MY_PV}"
DESCRIPTION="Soothing pastel theme for KDE"
HOMEPAGE="https://github.com/catppuccin/kde"
SRC_URI="https://github.com/catppuccin/${MY_PN}/archive/${SRC_A} -> ${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~x86"
# order as in ./install.sh !IMPORTANT!
FLAVOURS="mocha macchiato frappe latte"
ACCENTS="rosewater flamingo pink mauve red maroon peach yellow green teal sky sapphire blue lavender"
STYLES="modern classic"
setup_iuse() {
local i
for i in ${FLAVOURS}; do
IUSE_FLAVOURS="${IUSE_FLAVOURS# } catppuccin_flavours_${i}"
done
for i in ${ACCENTS}; do
IUSE_ACCENTS="${IUSE_ACCENTS# } catppuccin_accents_${i}"
done
for i in ${STYLES}; do
IUSE_STYLES="${IUSE_STYLES# } catppuccin_styles_${i}"
done
IUSE="${IUSE_FLAVOURS} ${IUSE_ACCENTS} ${IUSE_STYLES}"
# defaults
for i in catppuccin_flavours_mocha catppuccin_accents_lavender catppuccin_styles_classic; do
IUSE="${IUSE/${i}/+${i}}"
done
}
setup_iuse
# require at least one of each
# only allow 1 style because their directory names clash
REQUIRED_USE="
|| ( ${IUSE_FLAVOURS} )
|| ( ${IUSE_ACCENTS} )
^^ ( ${IUSE_STYLES} )
"
S="${WORKDIR}/${MY_P}"
src_prepare() {
einfo "Removing unneded steps from install.sh"
# we don't need these deps
sed -i -e '/check_command_exists ".*"/d' install.sh || die "sed failed"
# remove unnecessary sleeps, they just slow things down
sed -i -e '/.*sleep.*/d' install.sh || die "sed failed"
# don't use kpackagetool
sed -i -e '/.*kpackagetool.*/d' install.sh || die "sed failed"
default
}
src_compile() {
# we need these as arrays
local flavours=( ${FLAVOURS} )
local accents=( ${ACCENTS} )
local styles=( ${STYLES} )
mkdir -p "${WORKDIR}"/out/{aurorae,global,color}
# aurorae theme depends on flavour and style
for flavour in "${!flavours[@]}"; do
use "catppuccin_flavours_${flavours[${flavour}]}" || continue
for style in "${!styles[@]}"; do
use "catppuccin_styles_${styles[${style}]}" || continue
einfo "Making '${styles[${style}]}' windowdecorations for flavour '${flavours[${flavour}]}'"
./install.sh "$(( flavour + 1 ))" "1" "$(( style + 1 ))" "aurorae" >/dev/null \
|| die "Making windowdecorations failed"
# grab what we want then clean
local name="Catppuccin${flavours[${flavour}]^}-${styles[${style}]^}"
mv "dist/${name}" "${WORKDIR}/out/aurorae/" || die "mv failed"
rm -r dist || die "rm failed"
done
done
# global theme depends on flavour, accent and style
for flavour in "${!flavours[@]}"; do
use "catppuccin_flavours_${flavours[${flavour}]}" || continue
for accent in "${!accents[@]}"; do
use "catppuccin_accents_${accents[${accent}]}" || continue
for style in "${!styles[@]}"; do
use "catppuccin_styles_${styles[${style}]}" || continue
einfo "Making '${styles[${style}]}' global theme for flavour '${flavours[${flavour}]}' with haccent '${accents[${accent}]}'"
./install.sh "$(( flavour + 1 ))" "$(( accent + 1 ))" "$(( style + 1 ))" "global" >/dev/null \
|| die "Making global themes failed"
# grab what we want then clean
local name="Catppuccin-${flavours[${flavour}]^}-${accents[${accent}]^}"
mv "dist/${name}" "${WORKDIR}/out/global/" || die "mv failed"
# merge splash into global
pushd "dist/${name}-splash" >/dev/null || die "pushd failed"
for file in $(find . -type f); do
mkdir -p "${WORKDIR}/out/global/${name}/$(dirname "${file}")" || die "merge splash failed"
mv "${file}" "${WORKDIR}/out/global/${name}/${file}" || die "merge splash failed"
done
popd >/dev/null || die "popd failed"
rm -r dist || die "rm failed"
done
done
done
# colors depend on flavour and accent
for flavour in "${!flavours[@]}"; do
use "catppuccin_flavours_${flavours[${flavour}]}" || continue
for accent in "${!accents[@]}"; do
use "catppuccin_accents_${accents[${accent}]}" || continue
einfo "Making colorscheme for flavour '${flavours[${flavour}]}' with accent '${accents[${accent}]}'"
./install.sh "$(( flavour + 1 ))" "$(( accent + 1 ))" "1" "color" >/dev/null \
|| die "Making colorscheme failed"
# grab what we want then clean
local name="Catppuccin${flavours[${flavour}]^}${accents[${accent}]^}"
mv "dist/${name}.colors" "${WORKDIR}/out/color/" || die "mv failed"
rm -r dist || die "rm failed"
done
done
}
src_install() {
# aurorae theme
insinto /usr/share/aurorae/themes/
doins -r "${WORKDIR}"/out/aurorae/*
# global theme
insinto /usr/share/plasma/look-and-feel/
doins -r "${WORKDIR}"/out/global/*
# color scheme
insinto /usr/share/color-schemes/
doins -r "${WORKDIR}"/out/color/*
}