# 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 ` — one-shot: creates session, submits, shows popup with result - `ollie list` — show active sessions - `ollie kill ` — 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 ```