diff --git a/Assets/MatugenTemplates/walker.css b/Assets/MatugenTemplates/walker.css new file mode 100644 index 00000000..87a982fd --- /dev/null +++ b/Assets/MatugenTemplates/walker.css @@ -0,0 +1,188 @@ +@define-color surface {{colors.surface_variant.default.hex}}; +@define-color overlay {{colors.surface.default.hex}}; +@define-color text {{colors.on_surface.default.hex}}; + +@define-color green {{colors.primary.default.hex}}; +@define-color yellow {{colors.secondary.default.hex}}; +@define-color red {{colors.error.default.hex}}; +@define-color blue {{colors.primary.default.hex}}; + +@define-color outline {{colors.outline.default.hex}}; + +* { + all: unset; +} + +.normal-icons { + -gtk-icon-size: 16px; +} + +.large-icons { + -gtk-icon-size: 36px; +} + +scrollbar { + opacity: 0; +} + +.box-wrapper { + box-shadow: + 0 19px 38px rgba(0, 0, 0, 0.3), + 0 15px 12px rgba(0, 0, 0, 0.22); + background: @surface; + padding: 12px; + border-radius: 20px; + border: 2px solid @outline; +} + +.preview-box, +.elephant-hint, +.placeholder { + color: @text; +} + +.box { + background: @overlay; + padding: 20px; + border-radius: 20px; + border: 2px solid @outline; +} + +.search-container { + border-radius: 10px; + border: 2px solid @outline; +} + +.input placeholder { + opacity: 0.5; +} + +.input { + background: @surface; + color: @text; + caret-color: @text; + padding: 10px; +} + +.input:focus, +.input:active { +} + +.content-container { +} + +.placeholder { +} + +.scroll { +} + +.list { + color: @text; +} + +child { +} + +.item-box { + border-radius: 10px; + padding: 10px; +} + +.item-quick-activation { + background: @blue; + border-radius: 10px; + padding: 10px; + color: @surface; +} + +child:hover .item-box, +child:selected .item-box { + background: alpha(@blue, 0.4); +} + +.item-text-box { +} + +.item-subtext { + font-size: 12px; + opacity: 0.5; +} + +.providerlist .item-subtext { + font-size: unset; + opacity: 0.75; +} + +.item-image-text { + font-size: 28px; +} + +.preview { + border-top: 1px solid @blue; + padding: 10px; + border-radius: 10px; + color: @text; +} + +.calc .item-text { + font-size: 24px; +} + +.calc .item-subtext { +} + +.symbols .item-image { + font-size: 24px; +} + +.todo.done .item-text-box { + opacity: 0.25; +} + +.todo.urgent { + font-size: 24px; +} + +.todo.active { + font-weight: bold; +} + +.bluetooth.disconnected { + opacity: 0.5; +} + +.preview .large-icons { + -gtk-icon-size: 64px; +} + +.keybinds-wrapper { + border-top: 1px solid @blue; + font-size: 12px; + color: @blue; +} + +.keybinds { +} + +.keybind { +} + +.keybind-bind { + font-weight: bold; + text-transform: lowercase; +} + +.keybind-label { +} + +.error { + padding: 10px; + background: @red; + color: @surface; +} + +:not(.calc).current { + font-style: italic; +} + diff --git a/Assets/Translations/de.json b/Assets/Translations/de.json index c1fe6653..a1e86375 100644 --- a/Assets/Translations/de.json +++ b/Assets/Translations/de.json @@ -593,6 +593,10 @@ "description": "Schreibt {filepath} und lädt neu", "description-missing": "Erfordert die Installation von {app}" }, + "walker": { + "description": "Schreibt {filepath}", + "description-missing": "Erfordert die Installation von {app}" + }, "discord": { "description": "Schreibt {filepath} für {client}", "description-missing": "Kein Discord-Client erkannt. Installieren Sie vencord, vesktop, webcord, armcord, equibop, lightcord oder dorion" diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index fb9e1f1f..d6488f06 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -597,6 +597,10 @@ "description": "Write {filepath} and reload", "description-missing": "Requires {app} to be installed" }, + "walker": { + "description": "Write {filepath}", + "description-missing": "Requires {app} to be installed" + }, "discord": { "description": "Write {filepath} for {client}", "description-missing": "No Discord client detected. Install vencord, vesktop, webcord, armcord, equibop, lightcord, or dorion." diff --git a/Assets/Translations/es.json b/Assets/Translations/es.json index 46a4d676..3d5ce542 100644 --- a/Assets/Translations/es.json +++ b/Assets/Translations/es.json @@ -593,6 +593,10 @@ "description": "Escribir {filepath} y recargar", "description-missing": "Requiere que {app} esté instalado" }, + "walker": { + "description": "Escribir {filepath}", + "description-missing": "Requiere que {app} esté instalado" + }, "discord": { "description": "Escribir {filepath} para {client}", "description-missing": "No se detectó cliente de Discord. Instala vencord, vesktop, webcord, armcord, equibop, lightcord o dorion." diff --git a/Assets/Translations/fr.json b/Assets/Translations/fr.json index 213e967a..25beb653 100644 --- a/Assets/Translations/fr.json +++ b/Assets/Translations/fr.json @@ -593,6 +593,10 @@ "description": "Écrire {filepath} et recharger", "description-missing": "Nécessite que le lanceur {app} soit installé" }, + "walker": { + "description": "Écrire {filepath}", + "description-missing": "Nécessite que le lanceur {app} soit installé" + }, "discord": { "description": "Écrire {filepath} pour {client}", "description-missing": "Aucun client Discord détecté. Installez vencord, vesktop, webcord, armcord, equibop, lightcord ou dorion." diff --git a/Assets/Translations/pt.json b/Assets/Translations/pt.json index 3bc867a6..64643cd4 100644 --- a/Assets/Translations/pt.json +++ b/Assets/Translations/pt.json @@ -555,6 +555,10 @@ "description": "Escrever {filepath} e recarregar", "description-missing": "Requer que o {app} esteja instalado" }, + "walker": { + "description": "Escrever {filepath}", + "description-missing": "Requer que o {app} esteja instalado" + }, "discord": { "description": "Escrever {filepath} para {client}", "description-missing": "Nenhum cliente Discord detectado. Instale vencord, vesktop, webcord, armcord, equibop, lightcord ou dorion." diff --git a/Assets/Translations/zh-CN.json b/Assets/Translations/zh-CN.json index 14c810c8..53b07f74 100644 --- a/Assets/Translations/zh-CN.json +++ b/Assets/Translations/zh-CN.json @@ -593,6 +593,10 @@ "description": "写入 {filepath} 并重新加载", "description-missing": "需要安装 {app}" }, + "walker": { + "description": "写入 {filepath}", + "description-missing": "需要安装 {app}" + }, "discord": { "description": "为 {client} 写入 {filepath}", "description-missing": "未检测到 Discord 客户端。请安装 vencord、vesktop、webcord、armcord、equibop、lightcord 或 dorion。" diff --git a/Assets/settings-default.json b/Assets/settings-default.json index 9e4a7aba..6c9ea911 100644 --- a/Assets/settings-default.json +++ b/Assets/settings-default.json @@ -249,6 +249,7 @@ "discord_dorion": false, "pywalfox": false, "vicinae": false, + "walker": false, "enableUserTemplates": false }, "nightLight": { diff --git a/Commons/Settings.qml b/Commons/Settings.qml index 209d6451..f23a952f 100644 --- a/Commons/Settings.qml +++ b/Commons/Settings.qml @@ -389,6 +389,7 @@ Singleton { property bool discord_dorion: false property bool pywalfox: false property bool vicinae: false + property bool walker: false property bool enableUserTemplates: false } diff --git a/Modules/Settings/Tabs/ColorSchemeTab.qml b/Modules/Settings/Tabs/ColorSchemeTab.qml index 88388529..5e8dddf7 100644 --- a/Modules/Settings/Tabs/ColorSchemeTab.qml +++ b/Modules/Settings/Tabs/ColorSchemeTab.qml @@ -669,10 +669,10 @@ ColumnLayout { NCheckbox { label: "Vicinae" description: ProgramCheckerService.vicinaeAvailable ? I18n.tr("settings.color-scheme.templates.programs.vicinae.description", { - "filepath": "~/.local/share/vicinae/themes/matugen.toml" - }) : I18n.tr("settings.color-scheme.templates.programs.vicinae.description-missing", { - "app": "vicinae" - }) + "filepath": "~/.local/share/vicinae/themes/matugen.toml" + }) : I18n.tr("settings.color-scheme.templates.programs.vicinae.description-missing", { + "app": "vicinae" + }) checked: Settings.data.templates.vicinae enabled: ProgramCheckerService.vicinaeAvailable opacity: ProgramCheckerService.vicinaeAvailable ? 1.0 : 0.6 @@ -683,6 +683,23 @@ ColumnLayout { } } } + // NCheckbox { + // label: "Walker" + // description: ProgramCheckerService.walkerAvailable ? I18n.tr("settings.color-scheme.templates.programs.walker.description", { + // "filepath": "~/.config/walker/style.css" + // }) : I18n.tr("settings.color-scheme.templates.programs.walker.description-missing", { + // "app": "walker" + // }) + // checked: Settings.data.templates.walker + // enabled: ProgramCheckerService.walkerAvailable + // opacity: ProgramCheckerService.walkerAvailable ? 1.0 : 0.6 + // onToggled: checked => { + // if (ProgramCheckerService.walkerAvailable) { + // Settings.data.templates.walker = checked + // AppThemeService.generate() + // } + // } + // } } // Miscellaneous diff --git a/Services/AppThemeService.qml b/Services/AppThemeService.qml index 466946e4..55e6d2fd 100644 --- a/Services/AppThemeService.qml +++ b/Services/AppThemeService.qml @@ -109,6 +109,12 @@ Singleton { "path": "~/.local/share/vicinae/themes/matugen.toml" }], "postProcess": () => `cp -n ${Quickshell.shellDir}/Assets/noctalia.svg ~/.local/share/vicinae/themes/noctalia.svg && ${colorsApplyScript} vicinae\n` + }, + "walker": { + "input": "walker.css", + "outputs": [{ + "path": "~/.config/walker/themes/noctalia/style.css" + }] } }) diff --git a/Services/MatugenTemplates.qml b/Services/MatugenTemplates.qml index 8740aaf8..c28556d7 100644 --- a/Services/MatugenTemplates.qml +++ b/Services/MatugenTemplates.qml @@ -160,6 +160,13 @@ Singleton { }], "input": "vicinae.toml", "postHook": "cp -n " + Quickshell.shellDir + "/Assets/noctalia.svg ~/.local/share/vicinae/themes/noctalia.svg && " + AppThemeService.colorsApplyScript + " vicinae" + }, { + "name": "walker", + "templates": [{ + "version": "walker", + "output": "~/.config/walker/themes/noctalia/style.css" + }], + "input": "walker.css" }, { "name": "pywalfox", "templates": [{ diff --git a/Services/ProgramCheckerService.qml b/Services/ProgramCheckerService.qml index 153b35c9..80c4e60c 100644 --- a/Services/ProgramCheckerService.qml +++ b/Services/ProgramCheckerService.qml @@ -17,6 +17,7 @@ Singleton { property bool footAvailable: false property bool fuzzelAvailable: false property bool vicinaeAvailable: false + property bool walkerAvailable: false property bool gpuScreenRecorderAvailable: false property bool wlsunsetAvailable: false property bool app2unitAvailable: false @@ -99,6 +100,7 @@ Singleton { "footAvailable": ["which", "foot"], "fuzzelAvailable": ["which", "fuzzel"], "vicinaeAvailable": ["which", "vicinae"], + "walkerAvailable": ["which", "walker"], "app2unitAvailable": ["which", "app2unit"], "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"]