130 lines
4.6 KiB
Markdown
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
|
|
```
|