Files
noctalia-shell/Services/Theming/AppThemeService.qml
T
2025-11-18 17:15:06 -05:00

62 lines
1.7 KiB
QML

pragma Singleton
import QtQuick
import Quickshell
import qs.Commons
import qs.Services.UI
Singleton {
id: root
readonly property string colorsApplyScript: Quickshell.shellDir + '/Bin/colors-apply.sh'
Connections {
target: WallpaperService
// When the wallpaper changes, regenerate with Matugen if necessary
function onWallpaperChanged(screenName, path) {
if (screenName === Screen.name && Settings.data.colorSchemes.useWallpaperColors) {
generateFromWallpaper();
}
}
}
Connections {
target: Settings.data.colorSchemes
function onDarkModeChanged() {
Logger.d("AppThemeService", "Detected dark mode change");
generate();
}
}
// PUBLIC FUNCTIONS
function init() {
Logger.i("AppThemeService", "Service started");
}
function generate() {
if (Settings.data.colorSchemes.useWallpaperColors) {
generateFromWallpaper();
} else {
// applyScheme will trigger template generation via schemeReader.onLoaded
ColorSchemeService.applyScheme(Settings.data.colorSchemes.predefinedScheme);
}
}
function generateFromWallpaper() {
const wp = WallpaperService.getWallpaper(Screen.name);
if (!wp) {
Logger.e("AppThemeService", "No wallpaper found");
return;
}
const mode = Settings.data.colorSchemes.darkMode ? "dark" : "light";
TemplateProcessor.processWallpaperColors(wp, mode);
}
function generateFromPredefinedScheme(schemeData) {
Logger.i("AppThemeService", "Generating templates from predefined color scheme");
const mode = Settings.data.colorSchemes.darkMode ? "dark" : "light";
TemplateProcessor.processPredefinedScheme(schemeData, mode);
}
}