dotfiles/.config/spicetify/Extensions/catppuccin-macchiato.js

41 lines
1.2 KiB
JavaScript

// Color map
let colorPalette = {
rosewater: "#f4dbd6",
flamingo: "#f0c6c6",
pink: "#f5bde6",
maroon: "#ee99a0",
red: "#ed8796",
peach: "#f5a97f",
yellow: "#eed49f",
green: "#a6da95",
teal: "#8bd5ca",
blue: "#8aadf4",
sky: "#91d7e3",
mauve: "#c6a0f6",
lavender: "#b7bdf8",
white: "#d9e0ee"
}
// waitForElement borrowed from:
// https://github.com/morpheusthewhite/spicetify-themes/blob/master/Dribbblish/dribbblish.js
function waitForElement(els, func, timeout = 100) {
const queries = els.map(el => document.querySelector(el));
if (queries.every(a => a)) {
func(queries);
} else if (timeout > 0) {
setTimeout(waitForElement, 300, els, func, --timeout);
}
}
// Return the color label for a given hex color value
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value.trim());
}
// Used to select matching equalizer-animated-COLOR.gif
waitForElement([".Root"], (root) => {
let spiceEq = getComputedStyle(document.querySelector(":root")).getPropertyValue("--spice-equalizer");
let eqColor = getKeyByValue(colorPalette, spiceEq);
root[0].classList.add(`catppuccin-eq-${eqColor}`);
});