Rename bg/fg palette keys to background/foreground

The canonical colors.toml keys are now background/foreground, including
all permutations (dark_background, darker_background, lighter_background,
dark_foreground, light_foreground, bright_foreground). The old short
names are gone entirely, not kept as aliases; legacy alacritty-generated
themes still resolve through the ANSI color0/color7 fallback.

Theme files are also regrouped: accent/selection/muted first, then the
backgrounds, then the foregrounds, then the named colors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
David Heinemeier Hansson
2026-07-18 16:24:51 -07:00
co-authored by Claude Fable 5
parent 72d7646c64
commit afa2839a5a
46 changed files with 747 additions and 718 deletions
+34 -34
View File
@@ -4,9 +4,9 @@
[bar]
# Alpha companions (where present) range from 0 (invisible) to 1 (opaque).
background = "{{ bg }}"
background = "{{ background }}"
background-alpha = 1.0
text = "{{ fg }}"
text = "{{ foreground }}"
# Modules calling attention to themselves (recording, voxtype, alerts, updates)
active = "{{ red }}"
# Cross-axis size at font base-size 12. size-horizontal is the height of
@@ -21,7 +21,7 @@ size-vertical = 28
# lock, notifications, popups, and menu-style cards stay aligned with the
# current Hyprland active-border gradient.
active-border = "{{ shell_gradient hyprland_active_border accent }}"
active-border-foreground = "{{ shell_gradient hyprland_active_border fg }}"
active-border-foreground = "{{ shell_gradient hyprland_active_border foreground }}"
[controls]
# Shared state tokens for interactive control chrome (buttons, dropdowns,
@@ -31,32 +31,32 @@ active-border-foreground = "{{ shell_gradient hyprland_active_border fg }}"
# N, "Y X", "T X B", or "T R B L". Per-side keys like
# normal-border-width-left override the list. Each *-border accepts either a
# solid color or a Hyprland-style gradient, e.g. "rgba(...) rgba(...) 45deg".
normal-color = "{{ fg }}"
normal-color = "{{ foreground }}"
normal-fill-alpha = 0.04
normal-border = "{{ fg }}"
normal-border = "{{ foreground }}"
normal-border-width = 1
normal-border-alpha = 0.4
# Hover-cursor: mouse hover and the panel keyboard cursor.
hover-cursor-color = "{{ fg }}"
hover-cursor-color = "{{ foreground }}"
hover-cursor-fill-alpha = 0.08
hover-cursor-border = "{{ fg }}"
hover-cursor-border = "{{ foreground }}"
hover-cursor-border-width = 1
hover-cursor-border-alpha = 0.25
# Focus: Qt activeFocus. Mirror the hover-cursor values by default so
# mouse hover, keyboard cursor, and tab focus all read as the same state
# — themes that want focus to stand out override these four lines.
focus-color = "{{ fg }}"
focus-color = "{{ foreground }}"
focus-fill-alpha = 0.08
focus-border = "{{ fg }}"
focus-border = "{{ foreground }}"
focus-border-width = 1
focus-border-alpha = 0.25
# Selected: persistent chosen/current state.
selected-color = "{{ fg }}"
selected-color = "{{ foreground }}"
selected-fill-alpha = 0.18
selected-border = "{{ fg }}"
selected-border = "{{ foreground }}"
selected-border-width = 0
selected-border-alpha = 1.0
@@ -124,9 +124,9 @@ base-size = 12
# Border accepts either a solid color or a Hyprland-style gradient. Border
# widths accept one CSS-style scalar/list: N, "Y X", "T X B", or "T R B L";
# individual border-width-top/right/bottom/left keys override the list.
background = "{{ bg }}"
background = "{{ background }}"
background-alpha = 1.0
text = "{{ fg }}"
text = "{{ foreground }}"
border = "hyprland.active-border"
border-alpha = 1.0
# border-width = 2
@@ -134,16 +134,16 @@ border-alpha = 1.0
[tooltip]
# Hover tooltips across the bar, panels, and buttons. background-alpha of
# 0.97 mirrors the legacy hard-coded tooltip opacity.
background = "{{ bg }}"
background = "{{ background }}"
background-alpha = 0.97
text = "{{ fg }}"
text = "{{ foreground }}"
border = "hyprland.active-border-foreground"
border-alpha = 1.0
[notifications]
background = "{{ bg }}"
background = "{{ background }}"
background-alpha = 1.0
text = "{{ fg }}"
text = "{{ foreground }}"
# Conventionally matches the Hyprland active-window border. Border accepts
# either a solid color or the full active-border gradient.
border = "hyprland.active-border"
@@ -156,14 +156,14 @@ countdown = "{{ accent }}"
# companions go from 0 (invisible) to 1 (opaque). scrim is the full-screen
# dim layer behind the card; background is the card itself. Defaults
# mirror [menu] with the card at 0.95 to preserve the legacy translucency.
background = "{{ bg }}"
background = "{{ background }}"
background-alpha = 0.95
text = "{{ fg }}"
text = "{{ foreground }}"
border = "hyprland.active-border-foreground"
border-alpha = 1.0
scrim = "{{ bg }}"
scrim = "{{ background }}"
scrim-alpha = 0.5
selected-background = "{{ fg }}"
selected-background = "{{ foreground }}"
selected-background-alpha = 0.08
selected-text = "{{ accent }}"
selected-border = "hyprland.active-border-foreground"
@@ -173,14 +173,14 @@ selected-border-alpha = 0.25
# Cards, rows, and selected-row treatment. Alpha companions (where present)
# go from 0 (invisible) to 1 (opaque). scrim is the full-screen dim layer
# behind the card. Clipboard and emojis inherit these tokens.
background = "{{ bg }}"
background = "{{ background }}"
background-alpha = 1.0
text = "{{ fg }}"
text = "{{ foreground }}"
border = "hyprland.active-border-foreground"
border-alpha = 1.0
scrim = "{{ bg }}"
scrim = "{{ background }}"
scrim-alpha = 0.5
selected-background = "{{ fg }}"
selected-background = "{{ foreground }}"
selected-background-alpha = 0.08
selected-text = "{{ accent }}"
selected-border = "hyprland.active-border-foreground"
@@ -192,14 +192,14 @@ selected-border-alpha = 0.25
# text-error tints the lock icon, password text, and placeholder when
# authentication fails. border-alpha applies to both border and
# border-error (the two states are mutually exclusive in time).
background = "{{ bg }}"
background = "{{ background }}"
background-alpha = 1.0
text = "{{ fg }}"
text = "{{ foreground }}"
text-error = "{{ red }}"
border = "hyprland.active-border"
border-error = "{{ red }}"
border-alpha = 1.0
scrim = "{{ bg }}"
scrim = "{{ background }}"
scrim-alpha = 0.5
# accent is the lock-icon glyph color + text-selection tint.
accent = "{{ accent }}"
@@ -210,10 +210,10 @@ accent = "{{ accent }}"
# through idle, typing/authenticating, and wrong-password states.
# border-alpha applies to all three border states (they are mutually
# exclusive in time).
background = "{{ bg }}"
background = "{{ background }}"
background-alpha = 0.8
text = "{{ fg }}"
placeholder = "{{ mix fg bg 34% }}"
text = "{{ foreground }}"
placeholder = "{{ mix foreground background 34% }}"
text-error = "{{ red }}"
border = "hyprland.active-border"
border-active = "hyprland.active-border"
@@ -228,10 +228,10 @@ selection-alpha = 0.45
# the full-screen wash. Per-slice dim overlays and text outlines on top
# of the scrim track the foundational background color directly.
# unselected-border-alpha softens carousel slices that aren't selected.
scrim = "{{ bg }}"
scrim = "{{ background }}"
scrim-alpha = 0.5
text = "{{ fg }}"
text = "{{ foreground }}"
selected-border = "{{ accent }}"
selected-border-alpha = 1.0
unselected-border = "{{ fg }}"
unselected-border = "{{ foreground }}"
unselected-border-alpha = 0.28