feat(terminal): Kitty only — drop Ghostty (#95)
Some checks failed
Check / eval (push) Has been cancelled
Some checks failed
Check / eval (push) Has been cancelled
Ghostty's OpenGL 4.3 floor broke the Acer (HD 4000 / 4.2). Dual-terminal support (default Ghostty + install-time Kitty fallback) was more complexity than it was worth. - Remove ghostty.nix / nomarchy.ghostty.enable - Kitty always installed and themed from theme-state - Default nomarchy.terminal = kitty; SUPER+Return, doctor, calendar, what-changed use kitty --class=com.nomarchy.* - Drop install-time glxinfo probe and mesa-demos on the installer - Docs/REQUIREMENTS no longer list OpenGL 4.3 as a terminal floor Verified: V0 flake check; option-docs; installer-safety; template HM has kitty, no ghostty; menu/calendar emit classed kitty launches.
This commit is contained in:
@@ -11,7 +11,7 @@ rule of thumb:
|
||||
|
||||
Everything that defines the *look* flows from `theme-state.json`, the single
|
||||
source of truth. Change it with `nomarchy-theme-sync`, which writes the JSON
|
||||
and rebuilds — one generation, applied to Hyprland, Waybar, Ghostty, btop and
|
||||
and rebuilds — one generation, applied to Hyprland, Waybar, Kitty, btop and
|
||||
Stylix at once:
|
||||
|
||||
```sh
|
||||
@@ -98,9 +98,8 @@ in your `home.nix` wins — no `mkForce` needed:
|
||||
animations.enabled = false;
|
||||
};
|
||||
|
||||
programs.ghostty.settings = {
|
||||
window-padding-x = 4; # was 12
|
||||
window-decoration = true;
|
||||
programs.kitty.settings = {
|
||||
window_padding_width = 4; # was 12
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
What Nomarchy expects of a machine. This is a **living floor**, not a
|
||||
marketing sheet — numbers come from measured installs and known software
|
||||
floors (Ghostty, NixOS, the ISO). When a real machine pushes a bound, update
|
||||
floors (NixOS, the ISO, desktop GPU). When a real machine pushes a bound, update
|
||||
this file in the same change.
|
||||
|
||||
Related: [HARDWARE.md](HARDWARE.md) (profiles/drivers),
|
||||
@@ -22,39 +22,22 @@ Related: [HARDWARE.md](HARDWARE.md) (profiles/drivers),
|
||||
|
||||
## Graphics (default desktop)
|
||||
|
||||
The default terminal is **Ghostty**, which requires **OpenGL 4.3** (desktop
|
||||
profile). That is a **GPU generation** limit, not a “driver not installed”
|
||||
problem:
|
||||
The sole terminal is **Kitty** (GPU-accelerated OpenGL, themed from
|
||||
theme-state). It runs on older integrated GPUs that reject Ghostty’s OpenGL
|
||||
**4.3** floor — notably **Intel HD 4000 / Ivy Bridge** (Acer Aspire M5-481T
|
||||
reported OpenGL **4.2** and could not start Ghostty). That is why Nomarchy
|
||||
standardized on Kitty only: one terminal to theme, one set of classed windows
|
||||
(doctor / calendar), no dual-stack or GL probe at install.
|
||||
|
||||
| Generation (examples) | Typical max OpenGL (Mesa) | Default Ghostty |
|
||||
|-----------------------|---------------------------|-----------------|
|
||||
| Ivy Bridge / HD 4000 (e.g. **Acer Aspire M5-481T**, ~2012) | **4.2** | **Does not start** (`OpenGLOutdated`) |
|
||||
| Haswell and newer Intel iGPU, most AMD GCN+, discrete GPUs of the last decade | ≥ 4.3 | OK |
|
||||
| Dell XPS 9350 (Skylake) | ≥ 4.3 | OK (verified 2026-07) |
|
||||
|
||||
**Why 4.2 and not 4.3 on HD 4000?** The silicon and Mesa’s feature set for
|
||||
that generation top out at OpenGL 4.2. No package upgrade on the distro can
|
||||
turn Ivy Bridge into a 4.3 device. Ghostty is choosing a modern GL baseline
|
||||
on purpose.
|
||||
|
||||
**Install-time fallback (shipped):** when `nomarchy-install` can probe OpenGL
|
||||
(via `glxinfo` on the live session) and the version is **< 4.3**, it writes
|
||||
`settings.terminal = "kitty"` into the machine’s `theme-state.json`. Kitty is
|
||||
enabled and **themed from the same JSON** as Ghostty (palette, mono font,
|
||||
opacity). SUPER+Return then launches Kitty. Ghostty stays installed (doctor /
|
||||
calendar classed windows still call it — those helpers may still fail on old
|
||||
GL until a later follow-up).
|
||||
|
||||
If the probe fails (no display / headless VM), Ghostty remains the default —
|
||||
do not guess. Existing installs can set the same by hand:
|
||||
|
||||
```json
|
||||
"settings": { "terminal": "kitty" }
|
||||
```
|
||||
|
||||
then `nomarchy-home` (or `home-manager switch`).
|
||||
| Generation (examples) | Notes |
|
||||
|-----------------------|--------|
|
||||
| Ivy Bridge / HD 4000 (~2012) | Supported with Kitty (verified path on Acer M5-481T) |
|
||||
| Haswell+ Intel, modern AMD, discrete GPUs | Supported |
|
||||
| SoftGL / virtio-gpu VMs | Hyprland needs GL for the session; Kitty is best-effort under softGL |
|
||||
|
||||
Other Wayland clients vary; Hyprland itself is usually fine on these GPUs.
|
||||
A working GPU (or software GL for VMs) is still required for the desktop
|
||||
session — only the *terminal* no longer demands OpenGL 4.3.
|
||||
|
||||
---
|
||||
|
||||
@@ -154,8 +137,8 @@ Recovery menu. This requirements page only states why the disk fills up.
|
||||
|
||||
| Machine | Role |
|
||||
|---------|------|
|
||||
| **Acer Aspire M5-481T** (~2012, Intel HD 4000, OpenGL 4.2) | Ghostty floor (#95); install bake / old-HW QA |
|
||||
| **Dell XPS 9350** (Skylake) | Install bake (#123); Ghostty OK |
|
||||
| **Acer Aspire M5-481T** (~2012, Intel HD 4000) | Old-HW QA; drove Kitty-only terminal (#95) |
|
||||
| **Dell XPS 9350** (Skylake) | Install bake (#123) |
|
||||
| AMD dev box / Latitude / T14s | Ongoing V3 (HARDWARE-QUEUE) |
|
||||
|
||||
When you install on something older or smaller than the table, file what
|
||||
@@ -167,7 +150,7 @@ broke in `agent/BACKLOG.md` and tighten this page.
|
||||
|
||||
| Item | Topic |
|
||||
|------|--------|
|
||||
| BACKLOG **#95** | Ghostty fallback when OpenGL < 4.3 |
|
||||
| BACKLOG **#95** | Kitty as sole terminal (shipped) |
|
||||
| BACKLOG **#120** | Lighter netinstall ISO (download size ≠ installed size) |
|
||||
| BACKLOG **#123** | Installer HM pre-activate (first-boot polish) |
|
||||
| BACKLOG **#124** | Flake pin vs main/v1 lag after install |
|
||||
|
||||
@@ -404,12 +404,13 @@ Design/decision records and a running log of shipped work (items marked
|
||||
decision rather than a drive-by. Proved to fail: dropping snapshot makes it
|
||||
name the missing entry. **V3 pending** — that the apps *launch* needs real
|
||||
hardware (HARDWARE-QUEUE, Acer M5-481T).
|
||||
- ✓ **Kitty fallback when OpenGL < 4.3 (#95 partial):** Ghostty needs GL 4.3;
|
||||
Ivy Bridge HD 4000 tops at 4.2 (Acer M5-481T). Installer probes `glxinfo`
|
||||
and writes `settings.terminal = "kitty"` when below the floor; `kitty.nix`
|
||||
themes Kitty from the same theme-state as Ghostty (ANSI, mono font,
|
||||
opacity). Default machines stay Ghostty-only in the HM closure. V3 on Acer
|
||||
still needed; doctor/calendar still invoke Ghostty by class.
|
||||
- ✓ **Kitty is the only terminal (#95 complete):** Ghostty’s OpenGL 4.3 floor
|
||||
broke SUPER+Return (and classed doctor/calendar windows) on Ivy Bridge
|
||||
HD 4000 (Acer M5-481T). Maintaining two terminals was pure complexity.
|
||||
**Kitty only:** always installed, themed from theme-state (ANSI/font/opacity),
|
||||
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.
|
||||
- ✓ **Mime defaults must name a present .desktop (#119):** same bug class as
|
||||
#94, one key over. `text/plain` pointed at `code.desktop` (vscode), which
|
||||
the live ISO never ships — GIO skips the missing entry and leaves no
|
||||
|
||||
@@ -47,7 +47,7 @@ nix build .#nixosConfigurations.nomarchy-live.config.system.build.isoImage
|
||||
|
||||
The script prefers UEFI (OVMF) with a legacy-BIOS fallback, uses KVM when
|
||||
`/dev/kvm` is readable, and boots with `virtio-vga-gl` + `gl=on` —
|
||||
**Hyprland and Ghostty need real OpenGL in the guest**; without it the
|
||||
**Hyprland (and the desktop session) need real OpenGL in the guest**; without it the
|
||||
session may not start.
|
||||
|
||||
### What the live environment gives you
|
||||
@@ -67,7 +67,7 @@ Work through these in order; each one exercises a different layer.
|
||||
|---|---|---|
|
||||
| 1 | Boots to Hyprland with the default theme wallpaper visible (Boreal) | greetd autologin, awww, session start |
|
||||
| 2 | Waybar shows at top, themed (blue accent on dark) | HM waybar module, palette baking |
|
||||
| 3 | `SUPER+Return` opens Ghostty with the default theme colors (Boreal) | terminal default, ANSI palette |
|
||||
| 3 | `SUPER+Return` opens Kitty with the default theme colors (Boreal) | terminal default, ANSI palette |
|
||||
| 4 | `btop` in the terminal is themed | per-theme asset baking |
|
||||
| 5 | `nomarchy-theme-sync list` prints 24 presets | package, baked themes dir |
|
||||
| 6 | `nomarchy-theme-sync apply gruvbox` → state written, `home-manager switch` runs, desktop re-themes, wallpaper changes | the whole engine: state write, pure eval, HM rebuild, wallpaper hook |
|
||||
|
||||
Reference in New Issue
Block a user