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:
@@ -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 {
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user