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:
@@ -1,5 +1,5 @@
|
||||
# V2 harness for the floating Doctor terminal (System › Doctor /
|
||||
# nomarchy-menu doctor → ghostty --class=com.nomarchy.doctor).
|
||||
# nomarchy-menu doctor → kitty --class=com.nomarchy.doctor).
|
||||
#
|
||||
# Boots headless softGL Hyprland (same stack as theme-shot), launches the
|
||||
# real menu path, then asserts via hyprctl that the window is floating
|
||||
@@ -8,8 +8,8 @@
|
||||
#
|
||||
# nix build --impure -f tools/doctor-float.nix --no-link --print-out-paths
|
||||
#
|
||||
# Maintainer harness — not a checks.* gate (full desktop VM). Ghostty
|
||||
# under softGL is best-effort (MEMORY); if the client never appears the
|
||||
# Maintainer harness — not a checks.* gate (full desktop VM). Kitty under
|
||||
# softGL is best-effort (MEMORY); if the client never appears the
|
||||
# scripted float asserts fail loudly rather than claiming success.
|
||||
let
|
||||
flake = builtins.getFlake ("git+file://" + toString ../.);
|
||||
@@ -82,7 +82,7 @@ pkgs.testers.runNixOSTest {
|
||||
# Real product path: Waybar / System › Doctor both call this.
|
||||
machine.execute(f"{hy} dispatch exec nomarchy-menu doctor' >/dev/null 2>&1")
|
||||
|
||||
# Wait for the classed Ghostty client (softGL may be slow).
|
||||
# Wait for the classed Kitty client (softGL may be slow).
|
||||
def clients():
|
||||
raw = machine.succeed(f"{hy} clients -j'").strip()
|
||||
try:
|
||||
@@ -104,17 +104,15 @@ pkgs.testers.runNixOSTest {
|
||||
dump = machine.succeed(f"{hy} clients -j'")
|
||||
assert doctor is not None, (
|
||||
"no client with class com.nomarchy.doctor after nomarchy-menu doctor "
|
||||
f"(Ghostty under softGL may have failed — clients dump):\n{dump}"
|
||||
f"(Kitty under softGL may have failed — clients dump):\n{dump}"
|
||||
)
|
||||
|
||||
assert doctor.get("floating") is True, (
|
||||
f"doctor window is not floating: {json.dumps(doctor, indent=2)}"
|
||||
)
|
||||
|
||||
# Product contract: float + center. Ghostty often keeps its default
|
||||
# 800×600 even when a size rule is present (client geometry wins);
|
||||
# the size rule remains as a best-effort hint. Assert center from
|
||||
# the actual size so a smaller Ghostty window still counts.
|
||||
# Product contract: float + center. Size rule is best-effort if the
|
||||
# client geometry wins; assert center from the actual size.
|
||||
at = doctor.get("at") or [0, 0]
|
||||
size = doctor.get("size") or [0, 0]
|
||||
w, h = int(size[0]), int(size[1])
|
||||
|
||||
@@ -39,7 +39,7 @@ ACCEL_ARG=()
|
||||
|
||||
echo "Launching ISO: $ISO"
|
||||
# virtio-vga-gl + gl=on gives the guest real OpenGL — Hyprland and
|
||||
# Ghostty need it; without GL the session may fail to start.
|
||||
# the session needs it; without GL Hyprland may fail to start.
|
||||
exec qemu-system-x86_64 \
|
||||
"${ACCEL_ARG[@]}" \
|
||||
-m 4096 -smp 2 \
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Themed-desktop capture harness (item 28 slice c) — boots the full
|
||||
# desktop headlessly (software-GL Hyprland) at 1920x1080 and QMP-dumps
|
||||
# screenshots into $out: desktop.png, menu.png (rofi root open), and
|
||||
# btop.png (Ghostty running btop, when the terminal starts under softGL).
|
||||
# btop.png (Kitty running btop, when the terminal starts under softGL).
|
||||
# Also asserts nomarchy-doctor-status JSON (class:bad) — the harness
|
||||
# seeds an untracked theme-state.json, so doctor always reports ✖.
|
||||
# Maintainer tool, NOT a checks.* gate (a full-desktop VM is far too
|
||||
@@ -91,13 +91,13 @@ pkgs.testers.runNixOSTest {
|
||||
machine.execute(hy + " exec nomarchy-menu' >/dev/null 2>&1")
|
||||
machine.sleep(8)
|
||||
machine.screenshot("menu")
|
||||
# Close menu, launch btop in Ghostty for the per-theme btop.theme shot.
|
||||
# softGL may fail to start Ghostty — btop.png is best-effort then; the
|
||||
# Close menu, launch btop in Kitty for the per-theme btop.theme shot.
|
||||
# softGL may still fail to start a GPU terminal — btop.png is best-effort;
|
||||
# file assertions above still prove the theme is baked into the guest.
|
||||
machine.execute("su - nomarchy -c 'pkill -x rofi' >/dev/null 2>&1 || true")
|
||||
machine.sleep(1)
|
||||
machine.execute(
|
||||
hy + " exec ghostty --gtk-single-instance=false -e btop' >/dev/null 2>&1"
|
||||
hy + " exec kitty -e btop' >/dev/null 2>&1"
|
||||
)
|
||||
machine.sleep(12)
|
||||
machine.screenshot("btop")
|
||||
|
||||
Reference in New Issue
Block a user