{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreianinya2zzhhrafjzyntu5pwfidoqlc25ictlpy2tqoul27zvy2nq",
"uri": "at://did:plc:6dmfe46c76jjenq3kaxc5eds/app.bsky.feed.post/3mkjqbxzdfsq2"
},
"path": "/2026/04/27/announcing-sigrun/",
"publishedAt": "2026-04-27T12:15:56.000Z",
"site": "https://blog.cryptomilk.org",
"tags": [
"crates.io/crates/sigrun",
"codeberg.org/cryptomilk/sigrun"
],
"textContent": "Some time ago I used a feature in KDE called “Run a command” when an event triggered. It triggered for me when a calendar event fired and used Piper TTS to read the event to me out loud. A small popup and a _pling_ don’t work for me.\n\nI tried to get the feature back into KDE, but since the merge request isn’t going anywhere and people don’t give details how to implement it correctly I wrote Sigrun now. It is named after a Norse Valkyrie and is short for Signal Run.\n\nIt is a systemd service running as a user and listening on DBus signals. Once it finds a configured one, it runs its command. The desktop doesn’t matter.\n\nHere is the rule that reads my calendar reminders aloud via `kde-tts.py`:\n\n\n [[rule]]\n name = \"calendar-tts\"\n [rule.event]\n type = \"notification\"\n [rule.filter]\n app_name = \"kalendarac\"\n summary = \"Meeting.*\"\n [rule.filter.hints]\n \"x-kde-eventId\" = \"reminder\"\n [rule.action]\n command = \"/usr/local/bin/kde-tts.py\"\n args = [\"-t\", \"{summary}\", \"-d\", \"{body}\"]\n\n * crates.io/crates/sigrun\n * codeberg.org/cryptomilk/sigrun\n\n",
"title": "Announcing Sigrún (Run a command)"
}