You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rolling tracker for the Linux port. Live design plan: docs/impl/linux-port.md. Related Windows tracker: #34.
TL;DR
Linux preview has shipped beyond the original placeholder plan: Unix PTY + shared libghostty-vt + GPUI-owned per-row StyledText renderer.
The preview renderer supports SGR colors, bold, italic, underline, strikethrough, inverse, block cursor, theme palette sync, IoskeleyMono font normalization, client-side decorations, transparent rounded windows, and KWin Wayland blur where the compositor exposes it.
PR [codex] Add Windows and Linux CJK IME input #99 landed CJK IME commit/preedit input for the Linux preview via GPUI InputHandler; remaining Linux IME work is real-desktop validation across Wayland/X11 and IME engines.
The post-perf: reduce non-macOS terminal command latency #68 Linux stale-screen regression after quitting htop / vim was fixed before merge: visible rows are refreshed on each VT generation update and row containers clear across full width. User-side testing confirmed the stale-screen issue was fixed on the branch before merge.
Release v0 exists for Linux: tarball, one-line installer, desktop entry, icon install, appcast, and notify-only updater. Native package formats (.deb, AppImage, Flatpak, etc.) are still undecided.
The long-term Linux performance direction remains a GPUI-owned glyph-atlas grid renderer so Linux stops paying layout-time text shaping cost for terminal frames.
Done
Phase 0 — groundwork
Portable crates build on Linux.
con UI binary builds on Linux.
Unix-domain control socket at /tmp/con.sock.
Linux CI smoke coverage in .github/workflows/ci-portable.yml.
GPUI Linux runtime dependencies wired in CI.
Phase 1/2 — architecture decision
Design plan in docs/impl/linux-port.md.
Feasibility and interop studies in docs/study/.
Architecture frozen to a local backend rather than waiting for upstream Ghostty/GPUI embedding hooks.
Bracketed paste / DECCKM regression matrix across shells and TUIs.
CJK IME validation matrix across native Wayland/X11 desktops and common IME engines.
Scrollback UX and search polish.
Focus/click behavior across X11, Wayland, GNOME, KDE, and non-KWin compositors.
Desktop integration and packaging
Decide native artifact strategy: .deb, AppImage, Flatpak, or another distribution-native path.
Validate installer/update behavior on real GNOME/KDE desktops, not only cloud VM / Crostini / llvmpipe environments.
Clarify blur/transparency expectations per compositor: KWin Wayland supports app-requested blur; X11/mutter/sway generally do not expose the same app-driven blur protocol.
Verification notes
Crostini remains useful for build/startup smoke checks, but it is not the primary runtime signal for Linux UI quality.
Linux support — status tracker
TL;DR
libghostty-vt+ GPUI-owned per-rowStyledTextrenderer.StyledTextcaching so the current preview path only rebuilds changed rows/cursor rows instead of the whole grid.InputHandler; remaining Linux IME work is real-desktop validation across Wayland/X11 and IME engines.libghostty-vtwith an explicit generic Zig target derived from Cargo's target triple, fixing/mitigating the WSL Ubuntu 22.04 illegal-instruction startup report in crash on WSL ubuntu 22.04.5 #97 and reducing host-CPU feature leakage risk.htop/vimwas fixed before merge: visible rows are refreshed on each VT generation update and row containers clear across full width. User-side testing confirmed the stale-screen issue was fixed on the branch before merge..deb, AppImage, Flatpak, etc.) are still undecided.Done
Phase 0 — groundwork
conUI binary builds on Linux./tmp/con.sock..github/workflows/ci-portable.yml.Phase 1/2 — architecture decision
docs/impl/linux-port.md.docs/study/.libghostty-vtlayer reused with Windows.Phase 3/4 — preview backend and renderer
con-ghostty/src/linux/facade, Unix PTY spawn, resize, exit, transcript/search plumbing, VT feed path.con-app/src/linux_view.rsowns the Linux terminal view path.libghostty-vtand snapshots drive visible rows.Phase 5 — near-term performance and correctness follow-ups
StyledTextcache landed in linux: cache styled rows in preview renderer #65.CON_GHOSTTY_PROFILEVT snapshot timing for Linux/Windows comparison.htop/vimexit fixed before perf: reduce non-macOS terminal command latency #68 merge.Phase 6 v0 — release path
install.shUnix dispatcher and Linux install flow.libghostty-vtZig target selection landed in PR Fix:Linux WSL illegal-instruction startup && inline LaTex #100 for WSL / older-CPU release portability.Remaining work
Renderer and performance
StyledTextpaint path with a GPUI-owned glyph-atlas grid renderer.ls,htop,nvim, alt-screen enter/exit, prompt redraws, and bursty command output.Input, selection, and terminal UX
Desktop integration and packaging
.deb, AppImage, Flatpak, or another distribution-native path.Verification notes
References
docs/impl/linux-port.mddocs/impl/linux-port-tracker-updates/2026-04-23-styled-cell-renderer.md,docs/impl/linux-port-tracker-updates/2026-04-23-release-pipeline.md,docs/impl/linux-port-tracker-updates/2026-04-26-render-latency-followup.mdpostmortem/2026-04-23-linux-styled-cell-renderer.md