# Zygaena Desktop — Phase 1b Results

**Completed:** 2026-07-23 on hh-alpha9. **Outcome: a cohesive, Hammerhead-branded, GTK-free X11 desktop** built entirely from zports via Coral, running over VNC. Screenshots: `hammerhead/docs/roadmap/hammerhead-desktop-phase1b.png` (working desktop: Xfe + XNEdit + conky) and `...-showcase.png` (wallpaper wordmark + terminal + conky).

## What shipped (~26 new ports; 83 packages total)
- **Shell:** tint2 16.2 (panel), conky 1.24.2 (**native illumos/kstat stats** — CPU/mem/disk/net/load), picom 13 (xrender compositor), feh 3.12.2 (wallpaper + image viewer), dmenu 5.4.
- **Apps:** Xfe 1.x (FOX file manager), mupdf 1.28.0 (PDF), neovim 0.11.6 (terminal editor), XNEdit 1.6.3 (Motif GUI editor).
- **Toolkit/deps:** imlib2, lua 5.4.8, libconfig, libev, fox-toolkit 1.6.59, motif 2.3.8 (+xbitmaps), + neovim's tree (libuv, msgpack-c, unibilium, libtermkey, libvterm, tree-sitter), + picom's (3 xcb-util libs, uthash).
- **Branding:** `hammerhead-desktop` config port — a cairo-generated marine-dark wallpaper (teal hammerhead-shark motif, sonar arcs, "HAMMERHEAD / ZYGAENA" wordmark), dark Openbox theme with teal accent, matching tint2 + conky configs, branded Openbox menu/keybinds, autostart.

## New systemic gotchas found + recorded (plan checklist + memory)
- **GCC 14 promotes old-C warnings to errors** (`-Wincompatible-pointer-types`, implicit-function-declaration, int-conversion) → per-port `-fpermissive -fcommon` (motif, mupdf, XNEdit, unzip).
- **illumos `<sys/types.h>` short typedefs** (`index_t`, `level_t`, …) collide with app identifiers → per-file `#define index_t mu_index_t` (mupdf).
- illumos `<sys/stream.h>` `struct queue` tag collision (neovim); `__illumos__` vs `__sun` compiler-define gap (tree-sitter, neovim); Motif Xft-detection + strings.h-ordering + iconv/_XPG6 patches; FOX `HAVE_SYS_FILIO_H`.

## Toolkit-durability held
100% GTK-free: FOX (Xfe), Motif (XNEdit), cairo/imlib2/lua, X11-native shell. Qt deferred to Phase 1c. (See [[x11-toolkit-durability-gtk-vs-qt]].)

## Notes
- neovim uses its bundled LuaJIT (needs Lua 5.1; our lua is 5.4) — the 6 M0b system libs are installed and available but not consumed by neovim-as-built.
- mupdf built with bundled thirdparty (freetype/harfbuzz/jbig2dec/openjpeg/mujs).
- Live desktop left running on alpha9:5900.

## Next
Phase 1c — Qt6 + LXQt durable rich-app tier. Phase 2 — native VM console (retarget kdrive/Xfbdev to illumos `visual_io`; switch VM off VGA-text to a linear framebuffer). See `hammerhead/docs/roadmap/DESKTOP_XLIBRE_PHASE1B.md`.
