Agent connections no longer retry on their own. When an agent is killed, the connection goes to Disconnected and stays there. reconcileAgentConnections (triggered by refreshSessions) is the sole authority for creating/removing connections. For the happy path (probe returns normally), the connection immediately re-probes without a timer delay. |
||
|---|---|---|
| dolphin | ||
| gui | ||
| kate | ||
| krunner | ||
| .gitignore | ||
| 99-ollie-kf5.sh | ||
| 99-ollie.sh | ||
| CMakeLists-active.txt | ||
| CMakeLists-kf5.txt | ||
| CMakeLists.txt | ||
| README.md | ||
| justfile | ||
| test-e2e.sh | ||
| test-peers.sh | ||
README.md
ollie-kde
KDE-native integration for ollie — 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:
make kf5
Build
make # builds tray + KRunner + Kate + Plasmoid via CMake
Outputs:
build-cmake/ollie-tray— system tray iconbuild-cmake/lib/kf6/krunner/krunner_ollie.so— KRunner pluginbuild-cmake/lib/kf6/ktexteditor/ollie_kate.so— Kate pluginbuild-cmake/org/ollie/private/— Plasmoid QML plugin
Install
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 viaGenerate(no session created); shows result in a popupollie list— show active sessionsollie 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