fix(theme): dark adw-gtk3 for dark palettes — GTK dialog buttons (#98)
Some checks failed
Check / eval (push) Has been cancelled
Some checks failed
Check / eval (push) Has been cancelled
Stylix always used the light adw-gtk3 sheet with recolored tokens; that sheet hardcodes near-black button labels, which became black-on-dark in Boreal GTK dialogs. Force adw-gtk3-dark (and prefer-dark) for dark mode, and pin dialog button label colours in Stylix extraCss.
This commit is contained in:
@@ -479,7 +479,7 @@ gp gpl gf # push · pull · fetch --all --prune
|
||||
# nix (lifecycle: nomarchy-pull / nomarchy-rebuild / nomarchy-home — full names)
|
||||
ns nr # nix shell · nix run (e.g. ns nixpkgs#ripgrep)
|
||||
nfu nfc # nix flake update · check (prefer nomarchy-pull for day-to-day)
|
||||
nsearch ngc # nix search nixpkgs · nix-collect-garbage -d
|
||||
nsearch ngc # nix search · nix-collect-garbage -d (prefer: sudo nomarchy-gen-prune)
|
||||
|
||||
# misc
|
||||
path # print $PATH, one entry per line
|
||||
|
||||
@@ -31,22 +31,6 @@ post-boot sessions). Preserve separation: the installer bake failure and the
|
||||
flake pin are different root causes even when they show up on the same machine.
|
||||
(Terminal / Ghostty-on-Acer → shipped as Kitty-only, #95.)
|
||||
|
||||
### 98. Boreal: button text renders black and is difficult to read
|
||||
|
||||
Audit GTK button foreground/background contrast under Boreal, including the
|
||||
installer surface where it was observed. Follow THEME-DESIGN's two-theme
|
||||
visual protocol. Pass = normal, hover, focused, and disabled button labels
|
||||
remain legible and palette-consistent.
|
||||
|
||||
**Progress 2026-07-13:** scripted checks pass all 24 themes — not
|
||||
palette-level. Stylix gtk.css for Boreal audited: fg roles are light
|
||||
(#d3dae0); the near-black values are `accent/warning/error_fg_color`
|
||||
(#21272f) on their pastel bgs (deliberate, ~4.4:1). Candidate surfaces:
|
||||
adw-gtk3 (light base) + dark recolor edge cases, or gum's TUI confirm
|
||||
buttons in the installer (VM gum screens under Boreal look legible —
|
||||
artifacts in `/tmp/nomarchy-v2-swap-93/`). Needs Bernardo's screenshot or
|
||||
an Acer repro to pin the actual widget before fixing.
|
||||
|
||||
### 127. `[blocked:hw]` Docked idle: black screens, no wake, undock does not restore panel
|
||||
|
||||
Bernardo 2026-07-15 (AMD dev box, docked): left the laptop docked; after a
|
||||
|
||||
@@ -19,6 +19,17 @@ Template:
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-15 — #98 GTK dialog button black-on-dark (Boreal)
|
||||
- **Task:** Bernardo: GTK dialog button labels black vs dark Boreal chrome.
|
||||
- **Did:** Root cause — Stylix pins light `adw-gtk3` for all polarities.
|
||||
Force `adw-gtk3-dark` when mode=dark, prefer-dark, and extraCss for
|
||||
dialog/action button labels (suggested/destructive keep dark-on-pastel).
|
||||
- **Verified:** V1 HM gen: settings.ini `gtk-theme-name=adw-gtk3-dark`,
|
||||
prefer-dark=true, gtk.css button rules present. V3: open a GTK dialog
|
||||
after nomarchy-home.
|
||||
- **Pending:** V3 eyeball on real session.
|
||||
- **Next suggestion:** hardware queue or human #115/#120.
|
||||
|
||||
## 2026-07-15 — Document generation prune for users (#128 docs)
|
||||
- **Task:** User-facing docs for the 14d / keep-≥3-past policy.
|
||||
- **Did:** RECOVERY §4 (how gens are kept); README generation section +
|
||||
|
||||
@@ -427,6 +427,11 @@ Design/decision records and a running log of shipped work (items marked
|
||||
default `$TERMINAL` / SUPER+Return, doctor + calendar + what-changed use
|
||||
`kitty --class=com.nomarchy.*`. Ghostty module and install-time GL probe
|
||||
removed. V3: Acer SUPER+Return + doctor float.
|
||||
- ✓ **GTK dialog button labels (#98):** Stylix always set `gtk-theme-name=
|
||||
adw-gtk3` (light sheet) while recoloring tokens for dark palettes — light
|
||||
sheet hardcodes near-black button text → black-on-dark in GTK dialogs
|
||||
(Boreal). Fix: force `adw-gtk3-dark` / `adw-gtk3` from palette mode,
|
||||
prefer-dark, and pin dialog button colours in Stylix extraCss.
|
||||
- ✓ **Generation prune (#128):** weekly `nomarchy-gen-prune` (system + HM):
|
||||
delete only gens older than **14 days** that are also beyond the **3 most
|
||||
recent past** gens (current always kept). Stock `nix.gc` no longer uses
|
||||
|
||||
@@ -54,6 +54,13 @@ in
|
||||
# contrast selected rows + explicit arrow colour. Appended to
|
||||
# Stylix's generated gtk.css (not gtk.gtk3.extraCss — that is a
|
||||
# no-op under Stylix).
|
||||
#
|
||||
# #98: dialog button labels. Stylix always installs theme name
|
||||
# "adw-gtk3" (light sheet) and only recolors @define-color vars.
|
||||
# The light sheet hardcodes dark/black button text in places; on a
|
||||
# dark palette that becomes black-on-dark in GTK dialogs. We force
|
||||
# adw-gtk3-dark for dark mode (below) and still pin button label
|
||||
# colours here so dialogs stay legible if a light sheet slips in.
|
||||
extraCss = ''
|
||||
menu menuitem, .menu menuitem, .context-menu menuitem {
|
||||
color: #${base16.base05};
|
||||
@@ -95,6 +102,33 @@ in
|
||||
background-color: #${base16.base0D};
|
||||
color: #${base16.base00};
|
||||
}
|
||||
|
||||
/* Dialog / message-box action buttons (#98). */
|
||||
button, button label,
|
||||
.dialog-action-area button,
|
||||
.dialog-action-area button label,
|
||||
messagedialog button,
|
||||
messagedialog button label,
|
||||
.message-dialog button,
|
||||
.message-dialog button label {
|
||||
color: #${base16.base05};
|
||||
}
|
||||
button:disabled, button:disabled label {
|
||||
color: alpha(#${base16.base05}, 0.5);
|
||||
}
|
||||
/* Suggested/destructive sit on pastel accent/bad — dark label
|
||||
is intentional and contrast-checked (~4:1 on Boreal accent). */
|
||||
button.suggested-action, button.suggested-action label,
|
||||
button.destructive-action, button.destructive-action label,
|
||||
button.default, button.default label {
|
||||
color: #${base16.base00};
|
||||
}
|
||||
button.suggested-action.flat, button.suggested-action.flat label {
|
||||
color: #${base16.base0D};
|
||||
}
|
||||
button.destructive-action.flat, button.destructive-action.flat label {
|
||||
color: #${base16.base08};
|
||||
}
|
||||
'';
|
||||
};
|
||||
qt.enable = true;
|
||||
@@ -147,7 +181,23 @@ in
|
||||
# udiskie — are built as image menu items, so without this their icons
|
||||
# silently vanish. Stylix drives the HM gtk module, so extraConfig
|
||||
# merges into the same settings.ini it already writes.
|
||||
gtk.gtk3.extraConfig."gtk-menu-images" = 1;
|
||||
gtk.gtk3.extraConfig = {
|
||||
"gtk-menu-images" = 1;
|
||||
# Pair with adw-gtk3-dark so the theme sheet itself is dark, not just
|
||||
# the @define-color recolor (see gtk.theme.name below).
|
||||
"gtk-application-prefer-dark-theme" = t.mode != "light";
|
||||
};
|
||||
gtk.gtk4.extraConfig."gtk-application-prefer-dark-theme" = t.mode != "light";
|
||||
|
||||
# #98: Stylix hardcodes gtk.theme.name = "adw-gtk3" (light CSS) for every
|
||||
# polarity and only injects libadwaita colour tokens. The light adw-gtk3
|
||||
# sheet assumes light chrome and hardcodes near-black button labels in
|
||||
# places — on Boreal that is black text on dark dialog buttons. Force
|
||||
# the matching dark/light sheet; the package still provides both names.
|
||||
gtk.theme = {
|
||||
package = lib.mkDefault pkgs.adw-gtk3;
|
||||
name = lib.mkForce (if t.mode == "light" then "adw-gtk3" else "adw-gtk3-dark");
|
||||
};
|
||||
|
||||
# GTK4/libadwaita and Qt6 apps decide dark vs light from the XDG
|
||||
# portal's color-scheme (org.freedesktop.appearance), which
|
||||
@@ -155,7 +205,12 @@ in
|
||||
# the GTK theme and `polarity` but not this, so a light theme still
|
||||
# rendered libadwaita/Qt apps dark (and vice-versa). Drive it from the
|
||||
# palette mode. (programs.dconf.enable is already on system-side.)
|
||||
dconf.settings."org/gnome/desktop/interface".color-scheme =
|
||||
if t.mode == "light" then "prefer-light" else "prefer-dark";
|
||||
dconf.settings."org/gnome/desktop/interface" = {
|
||||
color-scheme =
|
||||
if t.mode == "light" then "prefer-light" else "prefer-dark";
|
||||
gtk-theme =
|
||||
if t.mode == "light" then "adw-gtk3" else "adw-gtk3-dark";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user