import icons from "lib/icons"; import { bash, dependencies, Notify, isAnImage } from "lib/utils"; import options from "options"; import Wallpaper from "services/Wallpaper"; const { matugen } = options.theme; const { mode, scheme_type, contrast } = options.theme.matugen_settings; const ensureMatugenWallpaper = (): void => { const wallpaperPath = options.wallpaper.image.value; if (matugen.value && (!options.wallpaper.image.value.length || !isAnImage(wallpaperPath))) { Notify({ summary: "Matugen Failed", body: "Please select a wallpaper in 'Theming > General' first.", iconName: icons.ui.warning, timeout: 7000 }) matugen.value = false; } } export const initializeTrackers = (resetCssFunc: Function) => { matugen.connect("changed", () => { ensureMatugenWallpaper(); options.resetTheme(); }) mode.connect("changed", () => { options.resetTheme(); }) scheme_type.connect("changed", () => { options.resetTheme(); }) contrast.connect("changed", () => { options.resetTheme(); }) Wallpaper.connect("changed", () => { console.info("Wallpaper changed, regenerating Matugen colors...") if (options.theme.matugen.value) { options.resetTheme(); resetCssFunc(); } }) options.wallpaper.image.connect("changed", () => { if ((!Wallpaper.isRunning() && options.theme.matugen.value) || !options.wallpaper.enable.value) { console.info("Wallpaper path changed, regenerating Matugen colors...") options.resetTheme(); resetCssFunc(); } if (options.wallpaper.pywal.value && dependencies('wal')) { const wallpaperPath = options.wallpaper.image.value; bash(`wal -i ${wallpaperPath}`); } }) }