Initial import

This commit is contained in:
Aaron Bieber 2025-01-14 18:26:40 -07:00
commit 7367fcd3b5
No known key found for this signature in database
6 changed files with 117 additions and 0 deletions

26
README.md Normal file
View File

@ -0,0 +1,26 @@
### krha
This plugin provides a simple template for a KRunner plugin using dbus.
The install script copies the Krunner config file and a dbus activation service file
to their appropriate locations.
This way the python script gets executed when KRunner
requests matches and it does not need to be autostarted.
If you want to run the plugin manually to debug it you can do the following:
```bash
mkdir -p ~/.local/share/krunner/dbusplugins/
cp plasma-runner-krha.desktop ~/.local/share/krunner/dbusplugins/
kquitapp5 krunner
python3 krha.py
```
After that you should see your runner when typing `hello` in KRunner.
More information can be found here:
https://invent.kde.org/frameworks/krunner/-/blob/master/src/data/org.kde.krunner1.xml
https://techbase.kde.org/Development/Tutorials/D-Bus/Introduction
If you feel confident about your runner you can upload it to the KDE Store
https://store.kde.org/browse/cat/628/order/latest/.

20
install.sh Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
# Exit if something fails
set -e
if [[ -z "$XDG_DATA_HOME" ]]; then
prefix=~/.local/share
else
prefix="$XDG_DATA_HOME"
fi
mkdir -p $prefix/krunner/dbusplugins/
mkdir -p $prefix/dbus-1/services/
cp plasma-runner-krha.desktop $prefix/krunner/dbusplugins/
sed "s|/home/qbit/projects/krha/krha.py|${PWD}/krha.py|" "org.kde.krha.service" > $prefix/dbus-1/services/org.kde.krha.service
kquitapp5 krunner

38
krha.py Executable file
View File

@ -0,0 +1,38 @@
#!/usr/bin/python3
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop
from gi.repository import GLib
DBusGMainLoop(set_as_default=True)
objpath = "/krha"
iface = "org.kde.krunner1"
class Runner(dbus.service.Object):
def __init__(self):
dbus.service.Object.__init__(self, dbus.service.BusName("org.kde.krha", dbus.SessionBus()), objpath)
@dbus.service.method(iface, in_signature='s', out_signature='a(sssida{sv})')
def Match(self, query: str):
"""This method is used to get the matches and it returns a list of tupels"""
if query == "hello":
# data, text, icon, type (Plasma::QueryType), relevance (0-1), properties (subtext, category, multiline(bool) and urls)
return [("Hello", "Hello from krha!", "document-edit", 100, 1.0, {'subtext': 'Demo Subtext'})]
return []
@dbus.service.method(iface, out_signature='a(sss)')
def Actions(self):
# id, text, icon
return [("id", "Tooltip", "planetkde")]
@dbus.service.method(iface, in_signature='ss')
def Run(self, data: str, action_id: str):
print(data, action_id)
runner = Runner()
loop = GLib.MainLoop()
loop.run()

3
org.kde.krha.service Normal file
View File

@ -0,0 +1,3 @@
[D-BUS Service]
Name=org.kde.krha
Exec=/usr/bin/python3 "/home/qbit/projects/krha/krha.py"

View File

@ -0,0 +1,15 @@
[Desktop Entry]
Name=krha
Comment=krha Runner written in Python
X-KDE-ServiceTypes=Plasma/Runner
Type=Service
Icon=planetkde
X-KDE-PluginInfo-Author=%{AUTHOR}
X-KDE-PluginInfo-Email=%{EMAIL}
X-KDE-PluginInfo-Name=krha
X-KDE-PluginInfo-Version=1.0
X-KDE-PluginInfo-License=LGPL
X-KDE-PluginInfo-EnabledByDefault=true
X-Plasma-API=DBus
X-Plasma-DBusRunner-Service=org.kde.krha
X-Plasma-DBusRunner-Path=/krha

15
uninstall.sh Executable file
View File

@ -0,0 +1,15 @@
#!/bin/bash
# Exit if something fails
set -e
if [[ -z "$XDG_DATA_HOME" ]]; then
prefix=~/.local/share
else
prefix="$XDG_DATA_HOME"
fi
rm $prefix/krunner/dbusplugins/plasma-runner-krha.desktop
rm $prefix/dbus-1/services/org.kde.krha.service
kquitapp5 krunner