Matugen: add spicetify theme for Spotify

This commit is contained in:
Aiser
2025-11-10 13:20:51 +08:00
parent b7f071d31e
commit b4ac786e8b
13 changed files with 91 additions and 2 deletions
+27
View File
@@ -0,0 +1,27 @@
[Comfy]
text = {{ colors.on_surface.default.hex_stripped }}
subtext = {{ colors.on_surface_variant.default.hex_stripped }}
main = {{ colors.surface.default.hex_stripped }}
main-elevated = {{ colors.surface_bright.default.hex_stripped }}
main-transition = {{ colors.surface_container_lowest.default.hex_stripped }}
highlight = {{ colors.surface_container_low.default.hex_stripped }}
highlight-elevated = {{ colors.surface_container_highest.default.hex_stripped }}
sidebar = {{ colors.surface.default.hex_stripped }}
player = {{ colors.scrim.default.hex_stripped }}
card = {{ colors.scrim.default.hex_stripped }}
shadow = {{ colors.scrim.default.hex_stripped }}
selected-row = {{ colors.on_surface.default.hex_stripped }}
button = {{ colors.primary.default.hex_stripped }}
button-active = {{ colors.primary_fixed.default.hex_stripped }}
button-disabled = {{ colors.primary_fixed_dim.default.hex_stripped }}
tab-active = {{ colors.surface.default.hex_stripped }}
notification = {{ colors.tertiary.default.hex_stripped }}
notification-error = {{ colors.error.default.hex_stripped }}
misc = {{ colors.scrim.default.hex_stripped }}
play-button = {{ colors.secondary.default.hex_stripped }}
play-button-active = {{ colors.secondary_fixed.default.hex_stripped }}
progress-fg = {{ colors.primary.default.hex_stripped }}
progress-bg = {{ colors.surface.default.hex_stripped }}
heart = {{ colors.error.default.hex_stripped }}
pagelink-active = {{ colors.on_tertiary_container.default.hex_stripped }}
radio-btn-active = {{ colors.on_tertiary_container.default.hex_stripped }}
+4
View File
@@ -860,6 +860,10 @@
"description": "Schreibe {Dateipfad}. Das Hyprluna-Theme muss manuell installiert und aktiviert werden",
"description-missing": "Benötigt die Installation von {app}"
},
"spicetify": {
"description": "Schreibe {Dateipfad}. Das Comfy-Theme muss manuell installiert und aktiviert werden",
"description-missing": "Benötigt die Installation von {app}"
},
"description": "Anwendungsspezifisches Theming.",
"discord": {
"description": "Schreibt {filepath} für {client}",
+4
View File
@@ -860,6 +860,10 @@
"description": "Write {filepath}. Hyprluna theme needs to be installed and activated manually.",
"description-missing": "Requires {app} to be installed"
},
"spicetify": {
"description": "Write {filepath}. Comfy theme needs to be installed and activated manually.",
"description-missing": "Requires {app} to be installed"
},
"description": "Application-specific theming.",
"discord": {
"description": "Write {filepath} for {client}. Hyprluna theme needs to be activated manually.",
+4
View File
@@ -860,6 +860,10 @@
"description": "Escribe {filepath}. El tema Hyprluna debe ser instalado y activado manualmente.",
"description-missing": "Requiere que {app} esté instalado/a."
},
"spicetify": {
"description": "Escribe {filepath}. El tema Comfy debe ser instalado y activado manualmente.",
"description-missing": "Requiere que {app} esté instalado/a."
},
"description": "Tematización específica de aplicaciones.",
"discord": {
"description": "Escribir {filepath} para {client}",
+4
View File
@@ -860,6 +860,10 @@
"description": "Écrire {filepath}. Le thème Hyprluna doit être installé et activé manuellement.",
"description-missing": "Nécessite l'installation de {app}"
},
"spicetify": {
"description": "Écrire {filepath}. Le thème Comfy doit être installé et activé manuellement.",
"description-missing": "Nécessite l'installation de {app}"
},
"description": "Thématisation spécifique aux applications.",
"discord": {
"description": "Écrire {filepath} pour {client}",
+4
View File
@@ -860,6 +860,10 @@
"description": "Escreva em {filepath}. O tema Hyprluna precisa ser instalado e ativado manualmente.",
"description-missing": "Requer que o {app} esteja instalado."
},
"spicetify": {
"description": "Escreva em {filepath}. O tema Comfy precisa ser instalado e ativado manualmente.",
"description-missing": "Requer que o {app} esteja instalado."
},
"description": "Tematização específica de aplicativos.",
"discord": {
"description": "Escrever {filepath} para {client}",
+4
View File
@@ -860,6 +860,10 @@
"description": "{filepath} dosyasına yaz. Hyprluna temasının kurulu ve manuel olarak etkinleştirilmiş olması gerekir.",
"description-missing": "Kurulum için {app} gereklidir"
},
"spicetify": {
"description": "{filepath} dosyasına yaz. Comfy temasının kurulu ve manuel olarak etkinleştirilmiş olması gerekir.",
"description-missing": "Kurulum için {app} gereklidir"
},
"description": "Uygulamaya özel temalandırma.",
"discord": {
"description": "{client} için {filepath} dosyasına yaz. Hyprluna temasının manuel olarak etkinleştirilmesi gerekir.",
+4
View File
@@ -860,6 +860,10 @@
"description": "Записати {filepath}. Тему Hyprluna потрібно встановити та активувати вручну.",
"description-missing": "Потрібна установка {app}"
},
"spicetify": {
"description": "Записати {filepath}. Тему Comfy потрібно встановити та активувати вручну.",
"description-missing": "Потрібна установка {app}"
},
"description": "Оформлення окремих програм.",
"discord": {
"description": "Записати {filepath} для {client}. Тему Hyprluna потрібно активувати вручну.",
+4
View File
@@ -860,6 +860,10 @@
"description": "写入 {filepath}。Hyprluna 主题需要手动安装和激活。",
"description-missing": "需要安装 {app}"
},
"spicetify": {
"description": "写入 {filepath}。Comfy 主题需要手动安装和激活。",
"description-missing": "需要安装 {app}"
},
"description": "应用程序特定主题。",
"discord": {
"description": "为 {client} 写入 {filepath}",
+1
View File
@@ -407,6 +407,7 @@ Singleton {
property bool vicinae: false
property bool walker: false
property bool code: false
property bool spicetify: false
property bool enableUserTemplates: false
property bool discord_vesktop: false // To be deleted soon
@@ -757,8 +757,25 @@ ColumnLayout {
}
}
}
}
NCheckbox {
label: "Spicetify"
description: ProgramCheckerService.spicetifyAvailable ? I18n.tr("settings.color-scheme.templates.programs.spicetify.description", {
"filepath": "~/.config/spicetify/Themes/Comfy/color.ini"
}) : I18n.tr("settings.color-scheme.templates.programs.spicetify.description-missing", {
"app": "spicetify"
})
checked: Settings.data.templates.spicetify
enabled: ProgramCheckerService.spicetifyAvailable
opacity: ProgramCheckerService.spicetifyAvailable ? 1.0 : 0.6
onToggled: checked => {
if (ProgramCheckerService.spicetifyAvailable) {
Settings.data.templates.spicetify = checked
AppThemeService.generate()
}
}
}
}
// Miscellaneous
NCollapsible {
Layout.fillWidth: true
+3 -1
View File
@@ -26,6 +26,7 @@ Singleton {
property bool app2unitAvailable: false
property bool codeAvailable: false
property bool gnomeCalendarAvailable: false
property bool spicetifyAvailable: false
// Discord client auto-detection
property var availableDiscordClients: []
@@ -112,7 +113,8 @@ Singleton {
"gpuScreenRecorderAvailable": ["sh", "-c", "command -v gpu-screen-recorder >/dev/null 2>&1 || (command -v flatpak >/dev/null 2>&1 && flatpak list --app | grep -q 'com.dec05eba.gpu_screen_recorder')"],
"wlsunsetAvailable": ["which", "wlsunset"],
"codeAvailable": ["which", "code"],
"gnomeCalendarAvailable": ["which", "gnome-calendar"]
"gnomeCalendarAvailable": ["which", "gnome-calendar"],
"spicetifyAvailable": ["which", "spicetify"]
})
// Internal tracking
+10
View File
@@ -151,6 +151,16 @@ Singleton {
"outputs": [{
"path": "~/.vscode/extensions/hyprluna.hyprluna-theme-1.0.2/themes/hyprluna.json"
}]
},
{
"id": "spicetify",
"name": "Spicetify",
"category": "applications",
"input": "spicetify.ini",
"outputs": [{
"path": "~/.config/spicetify/Themes/Comfy/color.ini"
}],
"postProcess": () => `spicetify -q apply --no-restart`
}]
// Extract Discord clients for ProgramCheckerService compatibility