This repository has been archived on 2026-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
ollie-kde/README.md

130 lines
4.6 KiB
Markdown

# ollie-kde
KDE-native integration for [ollie](https://github.com/lkn/ollie) — thin KDE
clients (system tray, Plasmoid, KRunner, Kate plugin, Dolphin menus) that talk
to the `ollied` D-Bus daemon.
## Architecture
```
┌──────────────────────────────────────────────────────────────┐
│ Plasma Desktop │
│ System Tray │ KRunner │ Plasmoid │ Kate Plugin │ Dolphin │
└──────────────────────────┬───────────────────────────────────┘
│ D-Bus (org.ollie.SessionManager)
┌──────────────────────────┴───────────────────────────────────┐
│ ollied (../dbus) │
│ Pure Go │ godbus │ ollie/core │
└──────────────────────────────────────────────────────────────┘
```
The daemon lives in `../dbus/` (the `ollie-dbus` submodule). 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 (`ollied`) is installed separately from the `../dbus/` submodule.
## Usage
### KRunner
- `ollie <prompt>` — one-shot: creates session, submits, shows popup with result
- `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
```