From 76a60df88bc248c99212450626bf7a43d05faaf9 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Fri, 14 Nov 2025 00:54:47 +1100 Subject: [PATCH] Feat: wezterm theming support (#705) * implemented logic for wezterm theming added matugen configs and dank16 functions, updated matugen worked scripta * fixed theme dir fixed path and moved output location to default wezterm dir --- core/cmd/dms/commands_dank16.go | 4 ++++ core/internal/dank16/terminals.go | 14 ++++++++++++++ quickshell/README.md | 2 +- quickshell/matugen/configs/wezterm.toml | 3 +++ quickshell/matugen/templates/wezterm.toml | 10 ++++++++++ quickshell/scripts/matugen-worker.sh | 19 +++++++++++++++++++ 6 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 quickshell/matugen/configs/wezterm.toml create mode 100644 quickshell/matugen/templates/wezterm.toml diff --git a/core/cmd/dms/commands_dank16.go b/core/cmd/dms/commands_dank16.go index f3b6b128..146b508d 100644 --- a/core/cmd/dms/commands_dank16.go +++ b/core/cmd/dms/commands_dank16.go @@ -25,6 +25,7 @@ func init() { dank16Cmd.Flags().Bool("foot", false, "Output in Foot terminal format") dank16Cmd.Flags().Bool("alacritty", false, "Output in Alacritty terminal format") dank16Cmd.Flags().Bool("ghostty", false, "Output in Ghostty terminal format") + dank16Cmd.Flags().Bool("wezterm", false, "Output in Wezterm terminal format") dank16Cmd.Flags().String("vscode-enrich", "", "Enrich existing VSCode theme file with terminal colors") dank16Cmd.Flags().String("background", "", "Custom background color") dank16Cmd.Flags().String("contrast", "dps", "Contrast algorithm: dps (Delta Phi Star, default) or wcag") @@ -42,6 +43,7 @@ func runDank16(cmd *cobra.Command, args []string) { isFoot, _ := cmd.Flags().GetBool("foot") isAlacritty, _ := cmd.Flags().GetBool("alacritty") isGhostty, _ := cmd.Flags().GetBool("ghostty") + isWezterm, _ := cmd.Flags().GetBool("wezterm") vscodeEnrich, _ := cmd.Flags().GetString("vscode-enrich") background, _ := cmd.Flags().GetString("background") contrastAlgo, _ := cmd.Flags().GetString("contrast") @@ -84,6 +86,8 @@ func runDank16(cmd *cobra.Command, args []string) { fmt.Print(dank16.GenerateAlacrittyTheme(colors)) } else if isGhostty { fmt.Print(dank16.GenerateGhosttyTheme(colors)) + } else if isWezterm { + fmt.Print(dank16.GenerateWeztermTheme(colors)) } else { fmt.Print(dank16.GenerateGhosttyTheme(colors)) } diff --git a/core/internal/dank16/terminals.go b/core/internal/dank16/terminals.go index d2290b6a..49216854 100644 --- a/core/internal/dank16/terminals.go +++ b/core/internal/dank16/terminals.go @@ -124,3 +124,17 @@ func GenerateGhosttyTheme(colors []string) string { } return result.String() } + +func GenerateWeztermTheme(colors []string) string { + var result strings.Builder + labels := []string{"ansi", "brights"} + for j, label := range labels { + start := j * 8 + colorSlice := make([]string, 8) + for i, color := range colors[start : start+8] { + colorSlice[i] = fmt.Sprintf("'%s'", color) + } + fmt.Fprintf(&result, "%s = [%s]\n", label, strings.Join(colorSlice, ", ")) + } + return result.String() +} diff --git a/quickshell/README.md b/quickshell/README.md index b3e4e13f..02db882d 100644 --- a/quickshell/README.md +++ b/quickshell/README.md @@ -116,7 +116,7 @@ Theme singleton provides Material Design 3 color system, spacing, fonts, and ele Templates in `scripts/templates/` generate themes for: - GTK 3/4 - Qt5/Qt6 -- Alacritty, Kitty, Foot terminals +- Alacritty, Kitty, Ghostty, Foot, Wezterm terminals - VSCode/VSCodium - Firefox diff --git a/quickshell/matugen/configs/wezterm.toml b/quickshell/matugen/configs/wezterm.toml new file mode 100644 index 00000000..84c484ac --- /dev/null +++ b/quickshell/matugen/configs/wezterm.toml @@ -0,0 +1,3 @@ +[templates.dmswezterm] +input_path = 'SHELL_DIR/matugen/templates/wezterm.toml' +output_path = '~/.config/wezterm/colors/dank-theme.toml' diff --git a/quickshell/matugen/templates/wezterm.toml b/quickshell/matugen/templates/wezterm.toml new file mode 100644 index 00000000..f7287950 --- /dev/null +++ b/quickshell/matugen/templates/wezterm.toml @@ -0,0 +1,10 @@ +[colors] +background = '{{colors.background.default.hex}}' +foreground = '{{colors.on_surface.default.hex}}' + +cursor_bg = '{{colors.primary.default.hex}}' +cursor_fg = '{{colors.background.default.hex}}' +cursor_border = '{{colors.primary.default.hex}}' + +selection_bg = '{{colors.primary_container.default.hex}}' +selection_fg = '{{colors.on_surface.default.hex}}' diff --git a/quickshell/scripts/matugen-worker.sh b/quickshell/scripts/matugen-worker.sh index a2672445..0db7f2f2 100755 --- a/quickshell/scripts/matugen-worker.sh +++ b/quickshell/scripts/matugen-worker.sh @@ -222,6 +222,11 @@ EOF echo "" >> "$TMP_CONTENT_CFG" fi + if command -v wezterm >/dev/null 2>&1; then + sed "s|'SHELL_DIR/|'$SHELL_DIR/|g" "$SHELL_DIR/matugen/configs/wezterm.toml" >>"$TMP_CONTENT_CFG" + echo "" >>"$TMP_CONTENT_CFG" + fi + if command -v dgop >/dev/null 2>&1; then sed "s|'SHELL_DIR/|'$SHELL_DIR/|g" "$SHELL_DIR/matugen/configs/dgop.toml" >> "$TMP_CONTENT_CFG" echo "" >> "$TMP_CONTENT_CFG" @@ -321,6 +326,20 @@ EOF fi fi + if command -v wezterm >/dev/null 2>&1; then + WEZTERM_CONFIG="$CONFIG_DIR/wezterm/colors/dank-theme.toml" + + if [[ ! -f "$WEZTERM_CONFIG" ]]; then + mkdir -p "$(dirname "$WEZTERM_CONFIG")" + touch "$WEZTERM_CONFIG" + fi + + OUT=$(dms dank16 "$PRIMARY" $([[ "$mode" == "light" ]] && echo --light) ${SURFACE:+--background "$SURFACE"} --wezterm 2>/dev/null || true) + if [[ -n "${OUT:-}" ]]; then + printf "\n%s\n" "$OUT" >>"$WEZTERM_CONFIG" + fi + fi + if command -v alacritty >/dev/null 2>&1; then ALACRITTY_CONFIG="$CONFIG_DIR/alacritty/dank-theme.toml"