Consolidate omarchy-shell colors into a single shell.toml surface
Five plugins each owned their own colors.toml watcher with subtly different parsers, plus two ad-hoc per-theme override files (notifications.json, image-picker-colors.json). This collapses all of that into one source of truth: Commons/Color.qml watches colors.toml + shell.toml and exposes Color.bar.*, Color.popups.*, Color.notifications.*, Color.menu.*, Color.imagePicker.* for every surface to bind to. shell.toml is generated by the existing template pipeline from default/themed/shell.toml.tpl. Themes can ship their own shell.toml to override individual keys; everything missing falls back to the foundational palette via root.pick(). Settings panel is intentionally not themable beyond the foundational tokens. last-horizon and solitude ship a minimal shell.toml to preserve their historical 'notification border matches Hyprland active border' behavior, which previously came from parsing the theme's hyprland.conf (now removed).
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# Omarchy shell colors. Defaults below derive from colors.toml. Any theme
|
||||
# can ship its own shell.toml at themes/<name>/shell.toml to override
|
||||
# individual keys — anything left out falls back to the values here.
|
||||
|
||||
[bar]
|
||||
# The bar strip itself
|
||||
background = "{{ background }}"
|
||||
# Clock, weather, workspace numbers, indicator glyphs
|
||||
text = "{{ foreground }}"
|
||||
# Module in an "active" state: screen recording, voxtype listening,
|
||||
# weather alert, update available. Same color is used everywhere a
|
||||
# module wants to call attention to itself.
|
||||
active = "{{ color1 }}"
|
||||
|
||||
[popups]
|
||||
# Body fill for every flyout opened from the bar: wifi, bluetooth, audio,
|
||||
# calendar, weather, control-center, notification-center, media. Body text
|
||||
# inside the flyouts is not separately themable — it follows [bar].text.
|
||||
background = "{{ background }}"
|
||||
# 1px outline around the flyout
|
||||
border = "{{ foreground }}"
|
||||
|
||||
[notifications]
|
||||
# Toast card body
|
||||
background = "{{ background }}"
|
||||
# Title and message text
|
||||
text = "{{ foreground }}"
|
||||
# Card outline. Most themes match this to their Hyprland active-window
|
||||
# border so notifications visually belong to the focused window.
|
||||
border = "{{ accent }}"
|
||||
# Bottom countdown bar that drains while the toast is on screen
|
||||
countdown = "{{ accent }}"
|
||||
|
||||
[menu]
|
||||
# Omarchy menu surface (the launcher-style picker invoked by the menu key)
|
||||
background = "{{ background }}"
|
||||
# Unhighlighted menu items
|
||||
text = "{{ foreground }}"
|
||||
# Currently hovered / keyboard-selected item
|
||||
selected = "{{ accent }}"
|
||||
|
||||
[image-picker]
|
||||
# Backdrop scrim behind the picker (the picker draws this at ~70% alpha)
|
||||
background = "{{ background }}"
|
||||
# Tile labels (image filename / theme name)
|
||||
text = "{{ foreground }}"
|
||||
# 3px stroke around the currently selected tile
|
||||
selected-border = "{{ accent }}"
|
||||
# 1px stroke around every other tile (picker applies ~28% alpha)
|
||||
unselected-border = "{{ foreground }}"
|
||||
Reference in New Issue
Block a user