The renderer's own documentation already answered the theme question and I didn't read it.
trmnl-ha/DOCS.md: "Use e-ink theme (Graphite recommended)", with theme=Graphite in its worked example. The HA community forum converges on the same theme independently.
Pairs with homeassistant#216, which vendors graphite-eink-light.yaml and deletes the theme I hand-wrote from a spec sheet.
Why this beats the hand-written one
673 lines / 408 variables against ~40. A full token system for sizes, weights, radii and states, written by someone who owns the hardware. It encodes things I can't derive from a spec.
Where it disagreed with mine is the useful part of the diff:
Graphite uses rgb(40,40,40) rather than pure black, with real greys for secondary/disabled/divider — the same conclusion the TRMNL framework forced on me an hour earlier, reached independently. That's corroboration that pure-black-everything was wrong.
Graphite sets font-weight: 900 for body and titles. That is the opposite of the TRMNL framework's scale, where weight decreases as size increases (value--large 58px/400, value--mega 170px/275). This conflict is unresolved. The dashboard's card_mod sets explicit weights for the text that matters, so the framework's lighter treatment wins where applied — worth watching in the render to see which is actually right on this panel.
Fails silently if wrong
The theme name must match the key inside the vendored file exactly — Graphite E-ink Light. A name that doesn't resolve doesn't error: HA serves the default theme and the panel just looks wrong.
Upstream's example also passes dark. Not used here — the e-ink Light variant is what gives black-on-white, which is what an e-paper panel wants. dark: false stays.
Graphite's author flags the e-ink variants as still needing tuning, so this is a base rather than a finished answer.
The renderer's own documentation already answered the theme question and I didn't read it.
`trmnl-ha/DOCS.md`: **"Use e-ink theme ([Graphite](https://github.com/TilmanGriesel/graphite) recommended)"**, with `theme=Graphite` in its worked example. The HA community forum converges on the same theme independently.
Pairs with **homeassistant#216**, which vendors `graphite-eink-light.yaml` and deletes the theme I hand-wrote from a spec sheet.
## Why this beats the hand-written one
673 lines / 408 variables against ~40. A full token system for sizes, weights, radii and states, written by someone who owns the hardware. It encodes things I can't derive from a spec.
Where it disagreed with mine is the useful part of the diff:
- Graphite uses `rgb(40,40,40)` rather than pure black, with real greys for secondary/disabled/divider — **the same conclusion the TRMNL framework forced on me an hour earlier**, reached independently. That's corroboration that pure-black-everything was wrong.
- Graphite sets `font-weight: 900` for body and titles. That is the **opposite** of the TRMNL framework's scale, where weight *decreases* as size increases (`value--large` 58px/400, `value--mega` 170px/275). This conflict is unresolved. The dashboard's `card_mod` sets explicit weights for the text that matters, so the framework's lighter treatment wins where applied — worth watching in the render to see which is actually right on this panel.
## Fails silently if wrong
The theme name must match the key inside the vendored file exactly — `Graphite E-ink Light`. A name that doesn't resolve doesn't error: HA serves the default theme and the panel just looks wrong.
Upstream's example also passes `dark`. Not used here — the e-ink **Light** variant is what gives black-on-white, which is what an e-paper panel wants. `dark: false` stays.
Graphite's author flags the e-ink variants as still needing tuning, so this is a base rather than a finished answer.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
The renderer's own docs recommend Graphite by name — "Use e-ink theme
(Graphite recommended)", with theme=Graphite in the example — and the
Home Assistant community converges on it independently. The dashboard
now ships graphite-eink-light.yaml (homeassistant repo) in place of the
theme I hand-wrote from a spec sheet.
Pairs with homeassistant#216. The theme name must match the key inside
the vendored file exactly ("Graphite E-ink Light"); a name that does not
resolve fails silently — HA serves the default theme and the panel just
looks wrong rather than erroring.
Note upstream's example also passes `dark`. Not used here: the e-ink
LIGHT variant is the one that gives black-on-white, which is what an
e-paper panel wants. `dark: false` stays.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The renderer's own documentation already answered the theme question and I didn't read it.
trmnl-ha/DOCS.md: "Use e-ink theme (Graphite recommended)", withtheme=Graphitein its worked example. The HA community forum converges on the same theme independently.Pairs with homeassistant#216, which vendors
graphite-eink-light.yamland deletes the theme I hand-wrote from a spec sheet.Why this beats the hand-written one
673 lines / 408 variables against ~40. A full token system for sizes, weights, radii and states, written by someone who owns the hardware. It encodes things I can't derive from a spec.
Where it disagreed with mine is the useful part of the diff:
rgb(40,40,40)rather than pure black, with real greys for secondary/disabled/divider — the same conclusion the TRMNL framework forced on me an hour earlier, reached independently. That's corroboration that pure-black-everything was wrong.font-weight: 900for body and titles. That is the opposite of the TRMNL framework's scale, where weight decreases as size increases (value--large58px/400,value--mega170px/275). This conflict is unresolved. The dashboard'scard_modsets explicit weights for the text that matters, so the framework's lighter treatment wins where applied — worth watching in the render to see which is actually right on this panel.Fails silently if wrong
The theme name must match the key inside the vendored file exactly —
Graphite E-ink Light. A name that doesn't resolve doesn't error: HA serves the default theme and the panel just looks wrong.Upstream's example also passes
dark. Not used here — the e-ink Light variant is what gives black-on-white, which is what an e-paper panel wants.dark: falsestays.Graphite's author flags the e-ink variants as still needing tuning, so this is a base rather than a finished answer.
🤖 Generated with Claude Code
The renderer's own docs recommend Graphite by name — "Use e-ink theme (Graphite recommended)", with theme=Graphite in the example — and the Home Assistant community converges on it independently. The dashboard now ships graphite-eink-light.yaml (homeassistant repo) in place of the theme I hand-wrote from a spec sheet. Pairs with homeassistant#216. The theme name must match the key inside the vendored file exactly ("Graphite E-ink Light"); a name that does not resolve fails silently — HA serves the default theme and the panel just looks wrong rather than erroring. Note upstream's example also passes `dark`. Not used here: the e-ink LIGHT variant is the one that gives black-on-white, which is what an e-paper panel wants. `dark: false` stays. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>