doc/kde-gui.md: document the Qt6 desktop frontend with screenshot

This commit is contained in:
Ollie Agent 2026-08-04 21:03:26 +02:00
parent cdf46b54f4
commit 20400711a0
1 changed files with 86 additions and 0 deletions

86
doc/kde-gui.md Normal file
View File

@ -0,0 +1,86 @@
# ollie-gui — Qt6 desktop frontend for ollie
ollie-gui is a free-standing Qt6/QML desktop application that talks to an ollie session directly through `ollie-9p`. No D-Bus, no Plasma dependencies — it runs on any Linux desktop with Qt6 installed.
<p align="center">
<a href="img/ollie-kde.png"><img src="img/ollie-kde.png" alt="Ollie KDE GUI window showing a session tree, chat history, and prompt input bar with KDE Plasma Breeze theme" width="75%"></a>
</p>
## Prerequisites
[olliesrv](../README.md) must be running:
```sh
olliesrv
```
## Installation
```sh
# From the repo root:
just install-kde
```
Or build manually:
```sh
cd kde/gui
cmake -B build -DCMAKE_INSTALL_PREFIX=~/.local
cmake --build build
cmake --install build
```
## Usage
Launch from the application menu or terminal:
```sh
ollie-gui
```
### Interface
- **Session list** — left panel showing all active and inactive sessions with agent state indicators (○ idle, ● thinking, ⚡ tool call). Right-click for session actions.
- **Chat view** — center panel showing the conversation log. Block markers (`[[[type]]]` / `[[[end]]]`) are rendered as styled headers.
- **Input bar** — bottom panel for composing prompts. Supports slash commands for common operations.
- **Theme** — automatically adapts to the active KDE Plasma color scheme. Falls back to Qt Quick Controls Basic style when running outside Plasma.
### Slash commands
Type `/` in the input bar to trigger:
| Command | Action |
|---------|--------|
| `/model` | Set the model for the current session |
| `/backend` | Switch backends |
| `/agent` | Switch to a different agent |
| `/stop` | Interrupt the running turn |
| `/kill` | Terminate the current session |
| `/new` | Create a new session |
| `/compact` | Compact the agent context |
| `/help` | Show available commands |
### Keyboard shortcuts
| Key | Action |
|-----|--------|
| `Escape` | Interrupt the running agent |
| `Enter` | Submit prompt |
| `Ctrl+Enter` | New line in input |
## Architecture
ollie-gui is a pure 9P client. It spawns `ollie-9p` as a subprocess and communicates through the 9P filesystem — the same interface the `o` CLI and `ellie.el` use. There is no D-Bus, no FUSE mount, and no intermediate daemon.
```
┌────────────────┐ ollie-9p read/write ┌──────────────┐
│ ollie-gui │ ◄─────────────────────────► │ olliesrv │
│ (Qt6 / QML) │ Unix socket (9P2000) │ (agent core)│
└────────────────┘ └──────────────┘
```
### Components
- **`Ollie9pClient`** — C++ backend that wraps `ollie-9p` invocations. Manages session discovery, agent listing, prompt submission, and chat streaming.
- **`ChatBlockModel`** — renders chat log content as styled blocks (plain text, assistant responses, tool output, markdown fences).
- **`ThemeManager`** — reads the active KDE Plasma color scheme from `~/.config/kdeglobals` and exposes palette properties to QML.