139 lines
5.2 KiB
Markdown
139 lines
5.2 KiB
Markdown
# ollie-kde
|
|
|
|
KDE-native integration for [ollie](../README.md) — thin KDE clients (system
|
|
tray, Plasmoid, KRunner, Kate plugin, Dolphin menus) that talk to the
|
|
`org.ollie.SessionManager` D-Bus interface.
|
|
|
|
## Architecture
|
|
|
|
```
|
|
┌──────────────────────────────────────────────────────────────┐
|
|
│ Plasma Desktop │
|
|
│ System Tray │ KRunner │ Plasmoid │ Kate Plugin │ Dolphin │
|
|
└──────────────────────────┬───────────────────────────────────┘
|
|
│ D-Bus (org.ollie.SessionManager)
|
|
│
|
|
┌────────────────┴────────────────┐
|
|
│ │
|
|
┌─────────┴──────────┐ ┌───────────┴──────────────────┐
|
|
│ ollied (../dbus) │ │ olliesrv -nodbus=false │
|
|
│ Pure D-Bus daemon│ │ (../9p, embedded adapter) │
|
|
│ Go │ godbus │ │ Go │ 9P + D-Bus │
|
|
└────────────────────┘ └──────────────────────────────┘
|
|
```
|
|
|
|
Two backends provide the D-Bus interface — pick one:
|
|
|
|
- **ollied** (`../dbus/`) — standalone D-Bus daemon, pure Go, no 9P. Lighter weight.
|
|
- **olliesrv** (`../9p/`) — the full 9P server with an embedded D-Bus adapter (enabled by default; disable with `-nodbus`).
|
|
|
|
Both register the same `org.ollie.SessionManager` bus name. They cannot run
|
|
side by side — choose one. KDE components here are pure D-Bus clients,
|
|
lightweight, stateless, and independently restartable.
|
|
|
|
## Dependencies
|
|
|
|
- Qt 6 (Core, DBus, Widgets, Quick) or Qt 5 (Core, DBus, Widgets, Quick, Qml)
|
|
- KDE Frameworks 6 (StatusNotifierItem, Runner, TextEditor, CoreAddons, Config)
|
|
or KDE Frameworks 5 (Notifications, Runner, TextEditor, CoreAddons, Config, Plasma)
|
|
- Plasma 6 or Plasma 5 (for Plasmoid)
|
|
- ECM (Extra CMake Modules)
|
|
|
|
KF6/Qt6 is the default. To build against KF5/Qt5:
|
|
|
|
```sh
|
|
make kf5
|
|
```
|
|
|
|
## Build
|
|
|
|
```sh
|
|
make # builds tray + KRunner + Kate + Plasmoid via CMake
|
|
```
|
|
|
|
Outputs:
|
|
- `build-cmake/ollie-tray` — system tray icon
|
|
- `build-cmake/lib/kf6/krunner/krunner_ollie.so` — KRunner plugin
|
|
- `build-cmake/lib/kf6/ktexteditor/ollie_kate.so` — Kate plugin
|
|
- `build-cmake/org/ollie/private/` — Plasmoid QML plugin
|
|
|
|
## Install
|
|
|
|
```sh
|
|
sudo make install # all KDE components (KF6)
|
|
sudo make kf5-install # all KDE components (KF5)
|
|
|
|
# Individual:
|
|
make krunner-install
|
|
make dolphin-install
|
|
make plasmoid-install
|
|
```
|
|
|
|
The D-Bus daemon is installed separately — either `ollied` from `../dbus/` or use `olliesrv` from `../9p/` (which includes D-Bus by default).
|
|
|
|
## Usage
|
|
|
|
### KRunner
|
|
|
|
- `ollie <prompt>` — one-shot generation via `Generate` (no session created); shows result in a popup
|
|
- `ollie list` — show active sessions
|
|
- `ollie kill <id>` — terminate a session
|
|
|
|
### Dolphin
|
|
|
|
Right-click any file or directory:
|
|
- **Ask Ollie about this** — one-shot prompt with file context, shows result in kdialog
|
|
- **Start Ollie session here** — creates a persistent session in that directory
|
|
|
|
### Kate
|
|
|
|
Enable the "Ollie" plugin in Settings → Configure Kate → Plugins. Panel appears
|
|
on the right with:
|
|
- Session indicator + CWD label
|
|
- **New** — create session in project/file directory
|
|
- **Ask File** — send current file path for description
|
|
- **Explain** — send selected text for explanation
|
|
- Prompt input for free-form messages
|
|
- Live-streaming chat view
|
|
|
|
### Plasmoid
|
|
|
|
Add the "Ollie" widget to your panel or desktop:
|
|
- Session list with state indicators (○ idle, ● thinking, ⚡ tool call)
|
|
- Live chat view with auto-scroll
|
|
- Inline prompt input
|
|
- Real-time updates via D-Bus signals
|
|
|
|
### System Tray
|
|
|
|
- Tooltip: session count
|
|
- Status: passive (no sessions), active (sessions idle), attention (agent working)
|
|
- Right-click: New Session, Sessions submenu (kill each), Stop All, Quit
|
|
|
|
## File Layout
|
|
|
|
```
|
|
ollie-kde/
|
|
├── Makefile # CMake orchestration
|
|
├── CMakeLists.txt
|
|
├── tray/
|
|
│ ├── main.cpp
|
|
│ └── ollie_tray.h/cpp # KStatusNotifierItem
|
|
├── krunner/
|
|
│ ├── metadata.json
|
|
│ └── ollie_runner.h/cpp # KRunner plugin
|
|
├── kate/
|
|
│ ├── metadata.json
|
|
│ └── ollie_kate.h/cpp # KTextEditor plugin
|
|
├── plasmoid/
|
|
│ ├── metadata.json
|
|
│ ├── contents/ui/main.qml
|
|
│ └── plugin/
|
|
│ └── olliedbusclient.h/cpp # QML singleton (D-Bus client)
|
|
├── dolphin/
|
|
│ ├── ollie-actions.desktop # Service menu entries
|
|
│ ├── ollie-ask # One-shot helper script
|
|
│ └── ollie-session-here # Session creation helper
|
|
└── test-e2e.sh # End-to-end test script
|
|
```
|