1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 21:42:51 -05:00

Always generate matugen regarldess of auto theme

This commit is contained in:
bbedward
2025-08-21 01:26:33 -04:00
parent b4249af68e
commit be264df572
3 changed files with 92 additions and 39 deletions

View File

@@ -172,6 +172,17 @@ Singleton {
isLightMode = !isLightMode
if (savePrefs && typeof SessionData !== "undefined")
SessionData.setLightMode(isLightMode)
generateSystemThemesFromCurrentTheme()
}
function forceGenerateSystemThemes() {
if (!matugenAvailable) {
if (typeof ToastService !== "undefined") {
ToastService.showWarning("matugen not available - cannot generate system themes")
}
return
}
generateSystemThemesFromCurrentTheme()
}
function getAvailableThemes() {
@@ -327,14 +338,13 @@ Singleton {
function onLightModeChanged() {
if (matugenColors && Object.keys(matugenColors).length > 0) {
colorUpdateTrigger++
if (currentTheme === dynamic) {
generateSystemThemes()
}
}
if (currentTheme === "custom" && customThemeFileView.path) {
customThemeFileView.reload()
}
generateSystemThemesFromCurrentTheme()
}
function generateSystemThemes() {
@@ -352,26 +362,45 @@ Singleton {
}
function generateSystemThemesFromCurrentTheme() {
if (currentTheme !== dynamic)
return
if (systemThemeGenerationInProgress)
return
if (!matugenAvailable || !wallpaperPath)
if (systemThemeGenerationInProgress || !matugenAvailable)
return
const isLight = (typeof SessionData !== "undefined" && SessionData.isLightMode) ? "true" : "false"
const iconTheme = (typeof SettingsData !== "undefined" && SettingsData.iconTheme) ? SettingsData.iconTheme : "System Default"
const gtkTheming = (typeof SettingsData !== "undefined" && SettingsData.gtkThemingEnabled) ? "true" : "false"
const qtTheming = (typeof SettingsData !== "undefined" && SettingsData.qtThemingEnabled) ? "true" : "false"
if (gtkTheming === "false" && qtTheming === "false")
return
systemThemeGenerationInProgress = true
systemThemeGenerator.command = [shellDir + "/generate-themes.sh", wallpaperPath, shellDir, configDir, "generate", isLight, iconTheme, gtkTheming, qtTheming]
systemThemeGenerator.running = true
// For non-dynamic themes, always generate if matugen is available
// For dynamic themes, respect the GTK/Qt theming toggles
if (currentTheme === dynamic) {
const gtkTheming = (typeof SettingsData !== "undefined" && SettingsData.gtkThemingEnabled) ? "true" : "false"
const qtTheming = (typeof SettingsData !== "undefined" && SettingsData.qtThemingEnabled) ? "true" : "false"
if (gtkTheming === "false" && qtTheming === "false")
return
if (!wallpaperPath)
return
systemThemeGenerationInProgress = true
systemThemeGenerator.command = [shellDir + "/generate-themes.sh", wallpaperPath, shellDir, configDir, "generate", isLight, iconTheme, gtkTheming, qtTheming]
systemThemeGenerator.running = true
} else {
// For stock and custom themes, always generate with both GTK and Qt enabled
let primaryColor
if (currentTheme === "custom") {
if (!customThemeData || !customThemeData.primary) {
console.warn("Custom theme data not available for system theme generation")
return
}
primaryColor = customThemeData.primary
} else {
primaryColor = currentThemeData.primary
}
if (!primaryColor)
return
systemThemeGenerationInProgress = true
systemThemeGenerator.command = [shellDir + "/generate-themes.sh", primaryColor, shellDir, configDir, "generate-color", isLight, iconTheme, "true", "true"]
systemThemeGenerator.running = true
}
}
@@ -544,6 +573,9 @@ Singleton {
matugenCheck.running = true
if (typeof SessionData !== "undefined")
SessionData.isLightModeChanged.connect(root.onLightModeChanged)
// Generate system themes on startup for current theme
Qt.callLater(generateSystemThemesFromCurrentTheme)
}
FileView {

View File

@@ -713,7 +713,7 @@ Item {
StyledText {
id: warningText
text: "Changing these settings will manipulate GTK and Qt configurations on the system, requires \"Auto\" theme"
text: "System app theming will generate GTK and Qt themes based on your selected theme colors"
font.pixelSize: Theme.fontSizeSmall
color: Theme.warning
wrapMode: Text.WordWrap
@@ -826,6 +826,7 @@ Item {
&& SettingsData.gtkThemingEnabled
onToggled: function (checked) {
SettingsData.setGtkThemingEnabled(checked)
Theme.forceGenerateSystemThemes()
}
}
@@ -838,6 +839,7 @@ Item {
&& SettingsData.qtThemingEnabled
onToggled: function (checked) {
SettingsData.setQtThemingEnabled(checked)
Theme.forceGenerateSystemThemes()
}
}
}

View File

@@ -1,20 +1,21 @@
#!/bin/bash
# System theme generation script for DankMaterialShell
# This script uses matugen to generate GTK and Qt themes from wallpaper
# This script uses matugen to generate GTK and Qt themes from wallpaper or color
WALLPAPER_PATH="$1"
INPUT_SOURCE="$1" # Wallpaper path or hex color (e.g., "#42a5f5")
SHELL_DIR="$2"
CONFIG_DIR="$3" # Config directory (typically ~/.config)
MODE="$4" # "generate" or "restore"
IS_LIGHT="$5" # "true" for light mode, "false" for dark mode
ICON_THEME="$6" # Icon theme name
GTK_THEMING="$7" # "true" to enable GTK theming, "false" to disable
QT_THEMING="$8" # "true" to enable Qt theming, "false" to disable
CONFIG_DIR="$3" # Config directory (typically ~/.config)
MODE="$4" # "generate", "generate-color", or "restore"
IS_LIGHT="$5" # "true" for light mode, "false" for dark mode
ICON_THEME="$6" # Icon theme name
GTK_THEMING="$7" # "true" to enable GTK theming, "false" to disable
QT_THEMING="$8" # "true" to enable Qt theming, "false" to disable
if [ -z "$SHELL_DIR" ] || [ -z "$CONFIG_DIR" ]; then
echo "Usage: $0 <wallpaper_path> <shell_dir> <config_dir> [mode] [is_light] [icon_theme] [gtk_theming] [qt_theming]" >&2
echo " For restore mode, wallpaper_path can be empty" >&2
echo "Usage: $0 <input_source> <shell_dir> <config_dir> [mode] [is_light] [icon_theme] [gtk_theming] [qt_theming]" >&2
echo " input_source: wallpaper path for 'generate' mode, hex color for 'generate-color' mode" >&2
echo " For restore mode, input_source can be empty" >&2
exit 1
fi
@@ -158,9 +159,17 @@ if [ "$MODE" = "restore" ]; then
fi
# Continue with generation mode
if [ ! -f "$WALLPAPER_PATH" ]; then
echo "Wallpaper file not found: $WALLPAPER_PATH" >&2
exit 1
if [ "$MODE" = "generate" ]; then
if [ ! -f "$INPUT_SOURCE" ]; then
echo "Wallpaper file not found: $INPUT_SOURCE" >&2
exit 1
fi
elif [ "$MODE" = "generate-color" ]; then
# Validate hex color format
if ! echo "$INPUT_SOURCE" | grep -qE '^#[0-9A-Fa-f]{6}$'; then
echo "Invalid hex color format: $INPUT_SOURCE (expected format: #RRGGBB)" >&2
exit 1
fi
fi
if [ ! -d "$SHELL_DIR" ]; then
@@ -180,12 +189,22 @@ if [ ! -f "matugen-config.toml" ]; then
fi
# Generate themes using matugen with verbose output
echo "Generating system themes from wallpaper: $WALLPAPER_PATH"
echo "Using config: $SHELL_DIR/matugen-config.toml"
if ! matugen -v -c matugen-config.toml image "$WALLPAPER_PATH"; then
echo "Failed to generate system themes with matugen" >&2
exit 1
if [ "$MODE" = "generate" ]; then
echo "Generating system themes from wallpaper: $INPUT_SOURCE"
echo "Using config: $SHELL_DIR/matugen-config.toml"
if ! matugen -v -c matugen-config.toml image "$INPUT_SOURCE"; then
echo "Failed to generate system themes with matugen" >&2
exit 1
fi
elif [ "$MODE" = "generate-color" ]; then
echo "Generating system themes from color: $INPUT_SOURCE"
echo "Using config: $SHELL_DIR/matugen-config.toml"
if ! matugen -v -c matugen-config.toml color hex "$INPUT_SOURCE"; then
echo "Failed to generate system themes with matugen" >&2
exit 1
fi
fi
# Set color scheme and icon theme based on light/dark mode