mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-27 23:12:49 -05:00
Always generate matugen regarldess of auto theme
This commit is contained in:
@@ -172,6 +172,17 @@ Singleton {
|
|||||||
isLightMode = !isLightMode
|
isLightMode = !isLightMode
|
||||||
if (savePrefs && typeof SessionData !== "undefined")
|
if (savePrefs && typeof SessionData !== "undefined")
|
||||||
SessionData.setLightMode(isLightMode)
|
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() {
|
function getAvailableThemes() {
|
||||||
@@ -327,14 +338,13 @@ Singleton {
|
|||||||
function onLightModeChanged() {
|
function onLightModeChanged() {
|
||||||
if (matugenColors && Object.keys(matugenColors).length > 0) {
|
if (matugenColors && Object.keys(matugenColors).length > 0) {
|
||||||
colorUpdateTrigger++
|
colorUpdateTrigger++
|
||||||
if (currentTheme === dynamic) {
|
|
||||||
generateSystemThemes()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentTheme === "custom" && customThemeFileView.path) {
|
if (currentTheme === "custom" && customThemeFileView.path) {
|
||||||
customThemeFileView.reload()
|
customThemeFileView.reload()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
generateSystemThemesFromCurrentTheme()
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateSystemThemes() {
|
function generateSystemThemes() {
|
||||||
@@ -352,26 +362,45 @@ Singleton {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function generateSystemThemesFromCurrentTheme() {
|
function generateSystemThemesFromCurrentTheme() {
|
||||||
if (currentTheme !== dynamic)
|
if (systemThemeGenerationInProgress || !matugenAvailable)
|
||||||
return
|
|
||||||
|
|
||||||
if (systemThemeGenerationInProgress)
|
|
||||||
return
|
|
||||||
|
|
||||||
if (!matugenAvailable || !wallpaperPath)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
const isLight = (typeof SessionData !== "undefined" && SessionData.isLightMode) ? "true" : "false"
|
const isLight = (typeof SessionData !== "undefined" && SessionData.isLightMode) ? "true" : "false"
|
||||||
const iconTheme = (typeof SettingsData !== "undefined" && SettingsData.iconTheme) ? SettingsData.iconTheme : "System Default"
|
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"
|
// For non-dynamic themes, always generate if matugen is available
|
||||||
|
// For dynamic themes, respect the GTK/Qt theming toggles
|
||||||
if (gtkTheming === "false" && qtTheming === "false")
|
if (currentTheme === dynamic) {
|
||||||
return
|
const gtkTheming = (typeof SettingsData !== "undefined" && SettingsData.gtkThemingEnabled) ? "true" : "false"
|
||||||
|
const qtTheming = (typeof SettingsData !== "undefined" && SettingsData.qtThemingEnabled) ? "true" : "false"
|
||||||
systemThemeGenerationInProgress = true
|
|
||||||
systemThemeGenerator.command = [shellDir + "/generate-themes.sh", wallpaperPath, shellDir, configDir, "generate", isLight, iconTheme, gtkTheming, qtTheming]
|
if (gtkTheming === "false" && qtTheming === "false")
|
||||||
systemThemeGenerator.running = true
|
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
|
matugenCheck.running = true
|
||||||
if (typeof SessionData !== "undefined")
|
if (typeof SessionData !== "undefined")
|
||||||
SessionData.isLightModeChanged.connect(root.onLightModeChanged)
|
SessionData.isLightModeChanged.connect(root.onLightModeChanged)
|
||||||
|
|
||||||
|
// Generate system themes on startup for current theme
|
||||||
|
Qt.callLater(generateSystemThemesFromCurrentTheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
FileView {
|
FileView {
|
||||||
|
|||||||
@@ -713,7 +713,7 @@ Item {
|
|||||||
StyledText {
|
StyledText {
|
||||||
id: warningText
|
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
|
font.pixelSize: Theme.fontSizeSmall
|
||||||
color: Theme.warning
|
color: Theme.warning
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
@@ -826,6 +826,7 @@ Item {
|
|||||||
&& SettingsData.gtkThemingEnabled
|
&& SettingsData.gtkThemingEnabled
|
||||||
onToggled: function (checked) {
|
onToggled: function (checked) {
|
||||||
SettingsData.setGtkThemingEnabled(checked)
|
SettingsData.setGtkThemingEnabled(checked)
|
||||||
|
Theme.forceGenerateSystemThemes()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -838,6 +839,7 @@ Item {
|
|||||||
&& SettingsData.qtThemingEnabled
|
&& SettingsData.qtThemingEnabled
|
||||||
onToggled: function (checked) {
|
onToggled: function (checked) {
|
||||||
SettingsData.setQtThemingEnabled(checked)
|
SettingsData.setQtThemingEnabled(checked)
|
||||||
|
Theme.forceGenerateSystemThemes()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,21 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# System theme generation script for DankMaterialShell
|
# 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"
|
SHELL_DIR="$2"
|
||||||
CONFIG_DIR="$3" # Config directory (typically ~/.config)
|
CONFIG_DIR="$3" # Config directory (typically ~/.config)
|
||||||
MODE="$4" # "generate" or "restore"
|
MODE="$4" # "generate", "generate-color", or "restore"
|
||||||
IS_LIGHT="$5" # "true" for light mode, "false" for dark mode
|
IS_LIGHT="$5" # "true" for light mode, "false" for dark mode
|
||||||
ICON_THEME="$6" # Icon theme name
|
ICON_THEME="$6" # Icon theme name
|
||||||
GTK_THEMING="$7" # "true" to enable GTK theming, "false" to disable
|
GTK_THEMING="$7" # "true" to enable GTK theming, "false" to disable
|
||||||
QT_THEMING="$8" # "true" to enable Qt theming, "false" to disable
|
QT_THEMING="$8" # "true" to enable Qt theming, "false" to disable
|
||||||
|
|
||||||
if [ -z "$SHELL_DIR" ] || [ -z "$CONFIG_DIR" ]; then
|
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 "Usage: $0 <input_source> <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 " 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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -158,9 +159,17 @@ if [ "$MODE" = "restore" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Continue with generation mode
|
# Continue with generation mode
|
||||||
if [ ! -f "$WALLPAPER_PATH" ]; then
|
if [ "$MODE" = "generate" ]; then
|
||||||
echo "Wallpaper file not found: $WALLPAPER_PATH" >&2
|
if [ ! -f "$INPUT_SOURCE" ]; then
|
||||||
exit 1
|
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
|
fi
|
||||||
|
|
||||||
if [ ! -d "$SHELL_DIR" ]; then
|
if [ ! -d "$SHELL_DIR" ]; then
|
||||||
@@ -180,12 +189,22 @@ if [ ! -f "matugen-config.toml" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Generate themes using matugen with verbose output
|
# Generate themes using matugen with verbose output
|
||||||
echo "Generating system themes from wallpaper: $WALLPAPER_PATH"
|
if [ "$MODE" = "generate" ]; then
|
||||||
echo "Using config: $SHELL_DIR/matugen-config.toml"
|
echo "Generating system themes from wallpaper: $INPUT_SOURCE"
|
||||||
|
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
|
if ! matugen -v -c matugen-config.toml image "$INPUT_SOURCE"; then
|
||||||
exit 1
|
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
|
fi
|
||||||
|
|
||||||
# Set color scheme and icon theme based on light/dark mode
|
# Set color scheme and icon theme based on light/dark mode
|
||||||
|
|||||||
Reference in New Issue
Block a user