diff --git a/quickshell/matugen/configs/codium.toml b/quickshell/matugen/configs/codium.toml
deleted file mode 100644
index 2c8bb4d1..00000000
--- a/quickshell/matugen/configs/codium.toml
+++ /dev/null
@@ -1,11 +0,0 @@
-[templates.dmscodiumdefault]
-input_path = 'SHELL_DIR/matugen/templates/vscode-color-theme-default.json'
-output_path = '~/.vscode-oss/extensions/local.dynamic-base16-dankshell-0.0.1/themes/dankshell-default.json'
-
-[templates.dmscodiumdark]
-input_path = 'SHELL_DIR/matugen/templates/vscode-color-theme-dark.json'
-output_path = '~/.vscode-oss/extensions/local.dynamic-base16-dankshell-0.0.1/themes/dankshell-dark.json'
-
-[templates.dmscodiumlight]
-input_path = 'SHELL_DIR/matugen/templates/vscode-color-theme-light.json'
-output_path = '~/.vscode-oss/extensions/local.dynamic-base16-dankshell-0.0.1/themes/dankshell-light.json'
diff --git a/quickshell/matugen/configs/vscode.toml b/quickshell/matugen/configs/vscode.toml
deleted file mode 100644
index ab4947ec..00000000
--- a/quickshell/matugen/configs/vscode.toml
+++ /dev/null
@@ -1,11 +0,0 @@
-[templates.dmsvscodedefault]
-input_path = 'SHELL_DIR/matugen/templates/vscode-color-theme-default.json'
-output_path = '~/.vscode/extensions/local.dynamic-base16-dankshell-0.0.1/themes/dankshell-default.json'
-
-[templates.dmsvscodedark]
-input_path = 'SHELL_DIR/matugen/templates/vscode-color-theme-dark.json'
-output_path = '~/.vscode/extensions/local.dynamic-base16-dankshell-0.0.1/themes/dankshell-dark.json'
-
-[templates.dmsvscodelight]
-input_path = 'SHELL_DIR/matugen/templates/vscode-color-theme-light.json'
-output_path = '~/.vscode/extensions/local.dynamic-base16-dankshell-0.0.1/themes/dankshell-light.json'
diff --git a/quickshell/matugen/dynamic-base16-dankshell.vsix b/quickshell/matugen/dynamic-base16-dankshell.vsix
new file mode 100644
index 00000000..64f754dc
Binary files /dev/null and b/quickshell/matugen/dynamic-base16-dankshell.vsix differ
diff --git a/quickshell/matugen/templates/vscode-vsixmanifest.xml b/quickshell/matugen/templates/vscode-vsixmanifest.xml
deleted file mode 100644
index 3552fc7e..00000000
--- a/quickshell/matugen/templates/vscode-vsixmanifest.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- Dynamic Base16 DankShell
- Dynamic Material You theme with base16 terminal colors
- Themes
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/quickshell/matugen/vsix-build/CHANGELOG.md b/quickshell/matugen/vsix-build/CHANGELOG.md
new file mode 100644
index 00000000..c6dc1971
--- /dev/null
+++ b/quickshell/matugen/vsix-build/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Changelog
+
+## 1.0.0
+
+- Initial release
diff --git a/quickshell/matugen/vsix-build/LICENSE b/quickshell/matugen/vsix-build/LICENSE
new file mode 100644
index 00000000..bf720643
--- /dev/null
+++ b/quickshell/matugen/vsix-build/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 DankLinux
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/quickshell/matugen/vsix-build/README.md b/quickshell/matugen/vsix-build/README.md
new file mode 100644
index 00000000..3a47bfff
--- /dev/null
+++ b/quickshell/matugen/vsix-build/README.md
@@ -0,0 +1,17 @@
+# Dynamic Base16 DankShell Theme
+
+A VSCode theme for [DankMaterialShell](https://github.com/EverydayCodeAlchemy/DankMaterialShellGit).
+
+## How It Works
+
+1. Install this extension
+2. Select one of the "Dynamic Base16 DankShell" themes in VSCode
+3. DankMaterialShell automatically updates the theme files when you change themes.
+
+The theme files are located in your VSCode extensions directory and are updated by matugen when generating new colors.
+
+## Themes
+
+- **Dynamic Base16 DankShell** - Follows your current light/dark mode
+- **Dynamic Base16 DankShell (Dark)** - Always dark variant
+- **Dynamic Base16 DankShell (Light)** - Always light variant
diff --git a/quickshell/matugen/templates/vscode-package.json b/quickshell/matugen/vsix-build/package.json
similarity index 67%
rename from quickshell/matugen/templates/vscode-package.json
rename to quickshell/matugen/vsix-build/package.json
index c6c1b6df..0ee84edb 100644
--- a/quickshell/matugen/templates/vscode-package.json
+++ b/quickshell/matugen/vsix-build/package.json
@@ -1,6 +1,7 @@
{
"name": "dynamic-base16-dankshell",
"displayName": "Dynamic Base16 DankShell",
+ "description": "Dynamic Material You theme with base16 terminal colors - auto-updated by DankMaterialShell",
"publisher": "local",
"version": "0.0.1",
"engines": {
@@ -9,6 +10,18 @@
"categories": [
"Themes"
],
+ "keywords": [
+ "theme",
+ "material",
+ "material you",
+ "base16",
+ "dynamic",
+ "dankshell"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/AvengeMedia/DankMaterialShellGit"
+ },
"contributes": {
"themes": [
{
diff --git a/quickshell/matugen/vsix-build/themes/dankshell-dark.json b/quickshell/matugen/vsix-build/themes/dankshell-dark.json
new file mode 100644
index 00000000..20528536
--- /dev/null
+++ b/quickshell/matugen/vsix-build/themes/dankshell-dark.json
@@ -0,0 +1,36 @@
+{
+ "$schema": "vscode://schemas/color-theme",
+ "name": "Dynamic Base16 DankShell",
+ "colors": {
+ "editor.background": "#1a1a2e",
+ "editor.foreground": "#e4e4e7",
+ "editorLineNumber.foreground": "#71717a",
+ "editorLineNumber.activeForeground": "#e4e4e7",
+ "editorCursor.foreground": "#a78bfa",
+ "editor.selectionBackground": "#4c1d95",
+ "activityBar.background": "#1a1a2e",
+ "activityBar.foreground": "#e4e4e7",
+ "activityBarBadge.background": "#a78bfa",
+ "activityBarBadge.foreground": "#1a1a2e",
+ "sideBar.background": "#1a1a2e",
+ "sideBar.foreground": "#e4e4e7",
+ "statusBar.background": "#1a1a2e",
+ "statusBar.foreground": "#e4e4e7",
+ "titleBar.activeBackground": "#1a1a2e",
+ "titleBar.activeForeground": "#e4e4e7"
+ },
+ "tokenColors": [
+ {
+ "scope": ["comment"],
+ "settings": { "foreground": "#71717a", "fontStyle": "italic" }
+ },
+ {
+ "scope": ["keyword"],
+ "settings": { "foreground": "#a78bfa" }
+ },
+ {
+ "scope": ["string"],
+ "settings": { "foreground": "#34d399" }
+ }
+ ]
+}
diff --git a/quickshell/matugen/vsix-build/themes/dankshell-default.json b/quickshell/matugen/vsix-build/themes/dankshell-default.json
new file mode 100644
index 00000000..20528536
--- /dev/null
+++ b/quickshell/matugen/vsix-build/themes/dankshell-default.json
@@ -0,0 +1,36 @@
+{
+ "$schema": "vscode://schemas/color-theme",
+ "name": "Dynamic Base16 DankShell",
+ "colors": {
+ "editor.background": "#1a1a2e",
+ "editor.foreground": "#e4e4e7",
+ "editorLineNumber.foreground": "#71717a",
+ "editorLineNumber.activeForeground": "#e4e4e7",
+ "editorCursor.foreground": "#a78bfa",
+ "editor.selectionBackground": "#4c1d95",
+ "activityBar.background": "#1a1a2e",
+ "activityBar.foreground": "#e4e4e7",
+ "activityBarBadge.background": "#a78bfa",
+ "activityBarBadge.foreground": "#1a1a2e",
+ "sideBar.background": "#1a1a2e",
+ "sideBar.foreground": "#e4e4e7",
+ "statusBar.background": "#1a1a2e",
+ "statusBar.foreground": "#e4e4e7",
+ "titleBar.activeBackground": "#1a1a2e",
+ "titleBar.activeForeground": "#e4e4e7"
+ },
+ "tokenColors": [
+ {
+ "scope": ["comment"],
+ "settings": { "foreground": "#71717a", "fontStyle": "italic" }
+ },
+ {
+ "scope": ["keyword"],
+ "settings": { "foreground": "#a78bfa" }
+ },
+ {
+ "scope": ["string"],
+ "settings": { "foreground": "#34d399" }
+ }
+ ]
+}
diff --git a/quickshell/matugen/vsix-build/themes/dankshell-light.json b/quickshell/matugen/vsix-build/themes/dankshell-light.json
new file mode 100644
index 00000000..20528536
--- /dev/null
+++ b/quickshell/matugen/vsix-build/themes/dankshell-light.json
@@ -0,0 +1,36 @@
+{
+ "$schema": "vscode://schemas/color-theme",
+ "name": "Dynamic Base16 DankShell",
+ "colors": {
+ "editor.background": "#1a1a2e",
+ "editor.foreground": "#e4e4e7",
+ "editorLineNumber.foreground": "#71717a",
+ "editorLineNumber.activeForeground": "#e4e4e7",
+ "editorCursor.foreground": "#a78bfa",
+ "editor.selectionBackground": "#4c1d95",
+ "activityBar.background": "#1a1a2e",
+ "activityBar.foreground": "#e4e4e7",
+ "activityBarBadge.background": "#a78bfa",
+ "activityBarBadge.foreground": "#1a1a2e",
+ "sideBar.background": "#1a1a2e",
+ "sideBar.foreground": "#e4e4e7",
+ "statusBar.background": "#1a1a2e",
+ "statusBar.foreground": "#e4e4e7",
+ "titleBar.activeBackground": "#1a1a2e",
+ "titleBar.activeForeground": "#e4e4e7"
+ },
+ "tokenColors": [
+ {
+ "scope": ["comment"],
+ "settings": { "foreground": "#71717a", "fontStyle": "italic" }
+ },
+ {
+ "scope": ["keyword"],
+ "settings": { "foreground": "#a78bfa" }
+ },
+ {
+ "scope": ["string"],
+ "settings": { "foreground": "#34d399" }
+ }
+ ]
+}
diff --git a/quickshell/scripts/matugen-worker.sh b/quickshell/scripts/matugen-worker.sh
index fa92d437..87c33e54 100755
--- a/quickshell/scripts/matugen-worker.sh
+++ b/quickshell/scripts/matugen-worker.sh
@@ -73,6 +73,27 @@ append_config() {
echo "" >> "$cfg_file"
}
+append_vscode_config() {
+ local name="$1" ext_dir="$2" cfg_file="$3"
+ [[ ! -d "$ext_dir" ]] && return
+ local template_dir="$SHELL_DIR/matugen/templates"
+ cat >> "$cfg_file" << EOF
+[templates.dms${name}default]
+input_path = '$template_dir/vscode-color-theme-default.json'
+output_path = '$ext_dir/themes/dankshell-default.json'
+
+[templates.dms${name}dark]
+input_path = '$template_dir/vscode-color-theme-dark.json'
+output_path = '$ext_dir/themes/dankshell-dark.json'
+
+[templates.dms${name}light]
+input_path = '$template_dir/vscode-color-theme-light.json'
+output_path = '$ext_dir/themes/dankshell-light.json'
+
+EOF
+ log "Added $name theme config (extension found at $ext_dir)"
+}
+
build_merged_config() {
local mode="$1" run_user="$2" cfg_file="$3"
@@ -107,8 +128,12 @@ EOF
append_config "alacritty" "alacritty.toml" "$cfg_file"
append_config "wezterm" "wezterm.toml" "$cfg_file"
append_config "dgop" "dgop.toml" "$cfg_file"
- append_config "code" "vscode.toml" "$cfg_file"
- append_config "codium" "codium.toml" "$cfg_file"
+
+ append_vscode_config "vscode" "$HOME/.vscode/extensions/local.dynamic-base16-dankshell-0.0.1" "$cfg_file"
+ append_vscode_config "codium" "$HOME/.vscode-oss/extensions/local.dynamic-base16-dankshell-0.0.1" "$cfg_file"
+ append_vscode_config "codeoss" "$HOME/.config/Code - OSS/extensions/local.dynamic-base16-dankshell-0.0.1" "$cfg_file"
+ append_vscode_config "cursor" "$HOME/.cursor/extensions/local.dynamic-base16-dankshell-0.0.1" "$cfg_file"
+ append_vscode_config "windsurf" "$HOME/.windsurf/extensions/local.dynamic-base16-dankshell-0.0.1" "$cfg_file"
if [[ "$run_user" == "true" && -f "$CONFIG_DIR/matugen/config.toml" ]]; then
awk '/^\[templates\]/{p=1} p' "$CONFIG_DIR/matugen/config.toml" >> "$cfg_file"
@@ -167,66 +192,6 @@ refresh_gtk() {
gsettings set org.gnome.desktop.interface gtk-theme "adw-gtk3-${mode}" 2>/dev/null || true
}
-setup_vscode_extension() {
- local cmd="$1" ext_dir="$2" config_dir="$3"
- command -v "$cmd" >/dev/null 2>&1 || return
- [[ ! -d "$config_dir" ]] && return
- local theme_dir="$ext_dir/themes"
- mkdir -p "$theme_dir"
- cp "$SHELL_DIR/matugen/templates/vscode-package.json" "$ext_dir/package.json" 2>/dev/null || true
- cp "$SHELL_DIR/matugen/templates/vscode-vsixmanifest.xml" "$ext_dir/.vsixmanifest" 2>/dev/null || true
- update_vscode_extensions_json "$config_dir/extensions" "$ext_dir"
-}
-
-update_vscode_extensions_json() {
- local ext_list_dir="$1" ext_dir="$2"
- local ext_json="$ext_list_dir/extensions.json"
- [[ ! -f "$ext_json" ]] && return
- grep -q "dynamic-base16-dankshell" "$ext_json" && return
- cp "$ext_json" "$ext_json.bak"
- local entry
- entry=$(cat < "$ext_json"
- else
- echo "${content%]}, $entry]" > "$ext_json"
- fi
-}
-
signal_terminals() {
pgrep -x kitty >/dev/null 2>&1 && pkill -USR1 kitty
pgrep -x ghostty >/dev/null 2>&1 && pkill -USR2 ghostty
@@ -308,8 +273,6 @@ build_once() {
fi
refresh_gtk "$mode"
- setup_vscode_extension "code" "$HOME/.vscode/extensions/local.dynamic-base16-dankshell-0.0.1" "$HOME/.vscode"
- setup_vscode_extension "codium" "$HOME/.vscode-oss/extensions/local.dynamic-base16-dankshell-0.0.1" "$HOME/.vscode-oss"
signal_terminals
return 0