Build a Linux Qt agent-workspace terminal prototype
Build a standalone Linux-first Qt graphical workspace around real embedded terminal sessions. Working name Canopy. Reuse an existing modern terminal component where practical; prefer Qt Quick and KDE integration. Pi and other CLI applications run normally, without replacing their interfaces. Initial milestone: build and run a native prototype with real PTYs, modern GPU terminal rendering and actual inline images, then basic tabs and resizable split panes. Integration decision: reuse Kwi's public LGPL Qt Quick terminal module backed by libghostty-vt; consume only its libraries, not its standalone application. Pin Kwi, Ghostty and build helpers, using a checksum-verified project-local Zig toolchain without system package changes. Validate keyboard/clipboard, resize, independent pane processes and command launch (including Pi when safe). Keep upstream dependencies pinned and licenses attributed. Do not promise production terminal parity or session survival until verified. Explicit later scope: persistent background session service, reconnect/restore, structured agent status adapters, remote machines and richer workspace orchestration. These are not prerequisites for the first terminal integration spike. Acceptance: reproducible local build; a real terminal component rendering interactive commands and inline images; working tabs/splits with safe close/lifecycle behaviour; focused automated tests and an actual Qt/Wayland smoke test. Record capabilities and remaining limitations honestly. Verified prototype outcome: implemented in /home/mathias/Projects/canopy on feature/qt-terminal-prototype, with no commits or system package changes. Qt Quick/KDE controls consume unmodified pinned Kwi terminal libraries and Ghostty core. Real local sessions, in-memory project spaces/tabs, recursive draggable splits, focus navigation, shell/Pi launch, search/copy/paste, multiline-paste protection, external-link confirmation, visible errors/exits and explicit live-close/quit confirmation are implemented. Terminal identity remains Canopy; supported Pi image/hyperlink environment overrides enable capability detection without impersonating another terminal. Validation: scripts/build.sh completed successfully; CTest passed. Nine backend behaviour cases passed (11 QtTest passes including setup/cleanup), covering workspace geometry/validation, process independence, input/resize/exit, PNG and chunked RGB image decoding, environment identity, failed launch and confirmed process termination. Three native GUI cases passed (five including setup/cleanup): actual keyboard/clipboard, divider drag and close-button/cancel behaviour; rendered Kitty PNG pixels through tab switching and 1000x640/1600x1000 resizing; isolated offline Pi startup with no prompt, user extensions or saved conversation. Native rendering logs identify OpenGL on the AMD RX 9070. Captures were visually inspected. The final GPU tests run on a private virtual KWin desktop with a private non-activating D-Bus session, avoiding normal-desktop focus theft. C++ formatting, Python compile checks, shell syntax and source whitespace checks passed. README, run/build scripts, dependency attribution and contributor instructions are present. Limitations preserved: no background service, detach/reattachment, layout persistence, remote machines, structured agent status, worktrees or packaging. Qt offscreen/software rendering cannot validate this GPU terminal; the native virtual-desktop runner is required. Advanced image modes/animation, full keyboard compatibility, IME, fractional scaling, throughput and high-output multi-pane performance were not validated. Pi's ordinary TUI startup and terminal PNG capability were verified separately; no model request or Pi-generated image response was exercised. First terminal integration milestone is complete; broader application remains a prototype.
Checklist
3 of 3 complete- Build a pinned modern Qt terminal component and verify actual inline-image rendering.
- Implement real sessions, tabs and resizable splits with explicit safe-close behaviour.
- Verify automated workspace tests and native Wayland smoke tests; document setup and remaining limitations.
- Area
- Personal tooling
- Project
- Canopy
- Kind
- Feature
- Task ID
tsk_cgsuzkyqfu- Updated