feat(terminal): themed Kitty when OpenGL < 4.3 (#95)
All checks were successful
Check / eval (push) Successful in 3m41s

Ghostty needs OpenGL 4.3; older GPUs (Intel HD 4000) top out at 4.2.
Installer probes glxinfo and writes settings.terminal=kitty into
theme-state when below the floor. modules/home/kitty.nix enables Kitty
with the same palette, mono font, and opacity as Ghostty so the fallback
still looks like Nomarchy.

Default machines stay Ghostty-only (no kitty in the HM closure). Doctor
and calendar still invoke Ghostty by class — V3 on Acer for SUPER+Return.

Verified: V0 flake check; installer-safety; HM with terminal=kitty builds
themed kitty.conf + TERMINAL=kitty; default template has no kitty bin.
This commit is contained in:
2026-07-15 09:45:32 +01:00
parent a09399702d
commit 1e648b6c49
12 changed files with 179 additions and 71 deletions

View File

@@ -144,66 +144,25 @@ template source. Pass = Chromium launches after installation and HTTP/HTTPS
mime defaults resolve to `chromium-browser.desktop` (and the intended live-ISO
browser posture is explicit).
### 95. Live ISO/install: Ghostty does not open on Acer (old GL + two log shapes)
### 95. Live ISO/install: Ghostty does not open on Acer (old GL) — **install fallback shipped**
**Machine:** Acer Aspire M5-481T only. **Dell XPS 9350 starts Ghostty fine**
(Bernardo clarified 2026-07-15 — do not treat XPS as a Ghostty failure).
**Machine:** Acer Aspire M5-481T only (Intel HD 4000, OpenGL **4.2**). XPS
starts Ghostty fine. Generation ceiling documented in `docs/REQUIREMENTS.md`.
**Why this hardware fails:** the Aspire is Ivy Bridgeclass (**Intel HD
4000**, ~2012). Mesas max for that GPU is **OpenGL 4.2**; Ghostty requires
**4.3**. That is a **generation ceiling**, not a missing package — no
Nomarchy or Mesa tweak can make HD 4000 report 4.3 honestly. Documented in
`docs/REQUIREMENTS.md`. The product response is a fallback terminal (or
probe), not “fix Intel drivers.”
**Shipped (this iteration):** installer probes `glxinfo`; if OpenGL &lt; 4.3,
writes `settings.terminal = "kitty"` into theme-state. `modules/home/kitty.nix`
installs and **themes** Kitty from the same palette/font/opacity as Ghostty.
Default HM keeps Ghostty only (no kitty package). Manual override:
`settings.terminal = "kitty"` or `nomarchy.terminal = "kitty"`.
On the Acer, Bernardo installed **kitty** by hand (worked) and launched
Ghostty from that shell twice — **same box, two lifecycle points, two log
shapes**:
**1 — Before Home Manager was properly built** (partial first boot after
#123 bake failure). Explicit GPU floor:
```
info(opengl): loaded OpenGL 4.2
warning(opengl): OpenGL version is too old. Ghostty requires OpenGL 4.3
warning(gtk_ghostty_surface): failed to initialize surface
err=error.OpenGLOutdated
warning(gtk_ghostty_surface): surface failed to initialize
err=error.SurfaceError
```
**2 — After home was built** (full HM generation). Silent-ish exit:
```
warning(gtk_ghostty_application): setting GDK_DEBUG=
warning(gtk_ghostty_application): setting GDK_DISABLE=gles-api,vulkan
~ 9s )
```
No `info(opengl):` line, no `OpenGLOutdated`, no `SurfaceError` — process
ends after ~9s with only the two `GDK_*` warnings. Same Ghostty 1.3.1, same
machine; the difference is **session/config state after HM**, not a second
GPU. Likely still the GL 4.2 floor (or the same surface path) with different
verbosity once the full Ghostty/GTK/Stylix config is in place — confirm
before inventing a second root cause. Re-run post-HM with extra logging
(`GDK_DEBUG`, Ghostty verbosity, `WAYLAND_DEBUG=1`) if the quiet path is
still opaque.
**Product impact:** default terminal is Ghostty (`nomarchy.terminal`), so on
this class of GPU SUPER+Return and the launcher entry are dead. Kitty as a
manual workaround proved the session/Wayland path is fine.
**Fix direction:** treat the **GL ≥ 4.3 requirement** as the primary Acer
blocker (soft-fallback, alternate default terminal when GL &lt; 4.3, or
installer/hardware probe that swaps the default). Do not leave SUPER+Return
bound to a terminal that cannot map a surface. Optionally make the post-HM
failure mode print the OpenGL reason again so the quiet log is not a
support trap.
**Pass:** on the Acer (or a GL 4.2 / softGL stand-in), SUPER+Return opens a
usable terminal without hand-editing `home.packages`; modern-GL machines
(including the XPS) still get themed Ghostty by default. V2 softGL may cover
the floor; V3 on the Acer is the real check.
**Still open:**
- **V3** on the Acer: fresh install (or hand-set terminal + `nomarchy-home`)
→ SUPER+Return opens themed Kitty; Ghostty may still fail if launched by
name (expected).
- Doctor / calendar classed windows still hardcode `ghostty` — may fail on
the same GL floor (separate small follow-up if they matter on old HW).
- Live ISO session on HD 4000 still defaults to Ghostty until install (or a
live-side probe).
### 98. Boreal: button text renders black and is difficult to read