aboutsummaryrefslogtreecommitdiffstats
path: root/templates/sublime/udt.sublime-theme.in
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-15 11:16:09 +0200
committerDanilo M. <danix@danix.xyz>2026-09-15 11:16:09 +0200
commita9f3e65355b64577044467ca70ca16d00fba016b (patch)
treee23ba75ade9be67f194a6535d351f6a8fd9909ae /templates/sublime/udt.sublime-theme.in
parentc90c72ed7d5bb5337319a053bf89d73fcb16c604 (diff)
downloadunified-desktop-theme-a9f3e65355b64577044467ca70ca16d00fba016b.tar.gz
unified-desktop-theme-a9f3e65355b64577044467ca70ca16d00fba016b.zip
feat(palette): add Sublime Text as a consumer
Two outputs, not one. The colour scheme themes the editor pane and tracks the wallpaper accent; the theme themes the UI chrome and sits on the scheme's fixed accent, because Sublime reads a theme once per window and a moving accent would leave open windows disagreeing with new ones. The colour scheme costs no new roles. Its scopes map onto the sixteen ANSI slots every scheme already declares, so all nine satisfy it and the identical-role-set selftest passes untouched. The theme is an override layered over Material Behave rather than a theme of its own: that theme hardcodes 419 rules of [r,g,b] literals with no variables, so the chrome surfaces are restated and its geometry, icons and animations are inherited. It installs under the name of the theme it overrides, because Sublime merges .sublime-theme files by filename with Packages/User last; under its own name it would never apply. It also has to follow Material Behave's material_theme_contrast_mode block and carry no settings gate, or contrast mode wins. The accent is replaced by matching the variable's current value rather than a placeholder: install.sh copies the file out of the repo, so after the first wallpaper change there is no placeholder left to substitute. udt-accent --selftest now covers that it stays idempotent. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'templates/sublime/udt.sublime-theme.in')
-rw-r--r--templates/sublime/udt.sublime-theme.in182
1 files changed, 182 insertions, 0 deletions
diff --git a/templates/sublime/udt.sublime-theme.in b/templates/sublime/udt.sublime-theme.in
new file mode 100644
index 0000000..17d1c1a
--- /dev/null
+++ b/templates/sublime/udt.sublime-theme.in
@@ -0,0 +1,182 @@
+// Generated by udt-palette from palette/@SCHEME@.conf. Do not edit.
+//
+// An override layered over Material Behave, not a theme of its own. Sublime
+// merges every .sublime-theme of the same name across packages, User last, so
+// this file re-colours that theme's chrome and inherits its geometry, icons and
+// animations untouched. Rename it and it stops applying.
+//
+// Material Behave hardcodes 419 rules of [r,g,b] literals with no variables to
+// override, so the surfaces are restated here rather than remapped. Only colour
+// is set: sizes, margins and opacities belong to the parent theme.
+//
+// Ordering matters. Material Behave ends with a contrast-mode block gated on
+// "material_theme_contrast_mode", which re-tints the sidebar, status bar and
+// panels a shade darker. Later rules win, so these come after it and carry no
+// settings gate of their own, which is what makes them apply either way.
+//
+// Colours are [r,g,b] arrays because that is what a .sublime-theme takes; the
+// colour scheme next door uses hex. Same palette, two syntaxes.
+//
+// The chrome does NOT track the wallpaper, unlike the colour scheme's accent.
+// Sublime reads a theme once per window, so a moving accent would leave open
+// windows disagreeing with new ones. The accent here is the scheme's fixed one,
+// which is what conky, Qt, GTK and waybar already sit on.
+[
+ // Editor ground, behind the tabs and in an empty window.
+ {
+ "class": "sheet_container_control",
+ "layer0.tint": @BG@
+ },
+
+ // Tab bar. The strip itself sits a shade off the editor so tabs read as
+ // raised; the selected tab matches the editor it belongs to.
+ {
+ "class": "tabset_control",
+ "layer0.tint": @BG_DEEP@
+ },
+ {
+ "class": "tab_control",
+ "layer0.tint": @BG_ALT@
+ },
+ {
+ "class": "tab_control",
+ "attributes": ["selected"],
+ "layer0.tint": @BG@
+ },
+ {
+ "class": "tab_label",
+ "fg": @FG_FAINT@
+ },
+ {
+ "class": "tab_label",
+ "parents": [{"class": "tab_control", "attributes": ["selected"]}],
+ "fg": @FG@
+ },
+
+ // Sidebar.
+ {
+ "class": "sidebar_container",
+ "layer0.tint": @BG_ALT@
+ },
+ {
+ "class": "sidebar_tree",
+ "layer0.tint": @BG_ALT@
+ },
+ {
+ "class": "sidebar_label",
+ "fg": @FG_DIM@
+ },
+ {
+ "class": "sidebar_label",
+ "parents": [{"class": "tree_row", "attributes": ["selected"]}],
+ "fg": @FG@
+ },
+ {
+ "class": "sidebar_heading",
+ "fg": @FG_FAINT@
+ },
+ // The hover and selection wash behind a row. Its opacity is the parent
+ // theme's; only the tint is ours.
+ {
+ "class": "tree_row",
+ "layer1.tint": @ACCENT@
+ },
+
+ // Status bar. Material Behave paints a hidden layer0 and a visible layer1,
+ // so both are set or the bar changes colour as it redraws.
+ {
+ "class": "status_bar",
+ "layer0.tint": @BG_ALT@,
+ "layer1.tint": @BG_ALT@
+ },
+ {
+ "class": "status_button",
+ "layer0.tint": @BG_ALT@
+ },
+ {
+ "class": "label_control",
+ "parents": [{"class": "status_bar"}],
+ "fg": @FG_DIM@
+ },
+
+ // Find, replace and the console.
+ {
+ "class": "panel_control",
+ "layer0.tint": @BG_ALT@,
+ "layer1.tint": @BG_ALT@
+ },
+ {
+ "class": "panel_button_control",
+ "layer0.tint": @BG_ALT@
+ },
+
+ // Command palette, goto-anything and autocomplete.
+ {
+ "class": "quick_panel",
+ "layer0.tint": @BG_ALT@
+ },
+ {
+ "class": "quick_panel_label",
+ "fg": @FG_DIM@
+ },
+ {
+ "class": "quick_panel_label",
+ "parents": [{"class": "quick_panel_row", "attributes": ["selected"]}],
+ "fg": @FG@
+ },
+ {
+ "class": "quick_panel_score_label",
+ "fg": @ACCENT@
+ },
+ {
+ "class": "quick_panel_path_label",
+ "fg": @FG_FAINT@
+ },
+ {
+ "class": "auto_complete",
+ "layer0.tint": @BG_ALT@
+ },
+ {
+ "class": "auto_complete_label",
+ "fg": @FG_DIM@
+ },
+ {
+ "class": "popup_control",
+ "layer0.tint": @BG_ALT@
+ },
+ {
+ "class": "dialog",
+ "layer0.tint": @BG_ALT@
+ },
+
+ // Tooltips, and the progress widgets that Material Behave tints per accent.
+ {
+ "class": "tool_tip_control",
+ "layer0.tint": @BG_DEEP@
+ },
+ {
+ "class": "tool_tip_label_control",
+ "fg": @FG_DIM@
+ },
+ {
+ "class": "progress_gauge_control",
+ "layer0.tint": @ACCENT@
+ },
+
+ // Scrollbars and the minimap viewport.
+ {
+ "class": "scroll_bar_control",
+ "layer0.tint": @BG_DEEP@
+ },
+ {
+ "class": "puck_control",
+ "layer0.tint": @FG_FAINT@
+ },
+
+ // Title bar, on the platforms and settings where Material Behave draws it.
+ {
+ "class": "title_bar",
+ "bg": @BG_DEEP@,
+ "fg": @FG_DIM@
+ }
+]