# KDE Integration The `kde/` directory contains optional KDE/Qt clients for Ollie. They are 9P clients, not part of the Ollie agent runtime. Every component reaches `olliesrv` through the shared 9P boundary, using either the native `libollie9p` client library or the `ollie-9p` command. They do not use D-Bus, FUSE, or a parallel session store. ## Components | Component | Description | |---|---| | `ollie-gui` | Qt/QML desktop application for sessions, agents, chat, prompts, and controls. It runs outside Plasma with Qt6 and falls back to Qt Quick Basic styling. | | KRunner plugin | Starts one-shot generation and exposes session-oriented actions. | | Kate plugin | Provides editor integration and ghost-text assistance through 9P. | | KIO worker | Exposes Ollie through the `ollie://` protocol. | | Dolphin actions | Shell helpers for asking Ollie about selected files or the current directory. | | Plasma environment script | Exports the Ollie 9P namespace for desktop clients. | The KDE clients do not embed provider selection, prompt assembly, tool execution, or agent-loop logic. Those remain in `olliesrv`; the clients read and write the namespace described in [`architecture-9p.md`](architecture-9p.md). ## GUI `ollie-gui` displays active sessions and agents, streams chat, submits prompts, and exposes common controls: - Session tree with agent state indicators. - Chat rendering for assistant, tool, reasoning, and markdown-block output. - Prompt entry with slash-command support. - Session and agent creation dialogs. - Model, backend, profile, stop, kill, compact, and help actions. - KDE Plasma palette detection with a Qt Quick Basic fallback outside Plasma. The application communicates through 9P. It does not need a running desktop daemon beyond `olliesrv` and the 9P client/socket environment. ## Build and installation Prerequisites are a running Ollie installation, a C++17 compiler, CMake, Qt, KDE Frameworks, and the native 9P client library installed under `~/.local`. Build the KDE integration from the repository root: ```sh make kde ``` Build and install it: ```sh make ``` The KDE build is delegated to `kde/CMakeLists.txt` and targets KF6/Qt6. Install targets include: - `ollie-gui` under `~/.local/bin`. - Qt/KDE plugins for KRunner, Kate, and KIO. - The `ollie://` KIO protocol definition. - Dolphin service-menu actions and helper scripts. - Plasma environment setup under `~/.config/plasma-workspace/env`. Restart or refresh Plasma/KDE service caches after installation when required. ## Architecture ```text ┌──────────────┐ libollie9p / ollie-9p ┌──────────────┐ │ KDE clients │ ────────────────────────────▶ │ olliesrv │ │ Qt/QML/KF │ authenticated 9P │ agent + 9P │ └──────────────┘ └──────────────┘ ``` The GUI uses native client code for streaming and session operations. Other integrations may invoke `ollie-9p` or plan9port’s `9p` client. All use the same namespace, file operations, blocking reads, and control semantics. ## Source map | Area | Location | |---|---| | Build and install | `Makefile`, `kde/CMakeLists.txt` | | Qt/QML GUI | `kde/gui/` | | Native 9P client | `kde/lib9p/`, `kde/gui/lib9pclient.*` | | KRunner | `kde/krunner/` | | Kate | `kde/kate/` | | KIO | `kde/kio/` | | Dolphin actions | `kde/dolphin/` | | Plasma environment | `kde/99-ollie.sh` | For the public protocol and namespace, see [`architecture-9p.md`](architecture-9p.md). For the core agent runtime, see [`architecture-core.md`](architecture-core.md).