]> Freerunner's - dotfiles.git/commitdiff
scripts: add simpledwindle_reload
authorAndre Ramnitz <andre.ramnitz@mail.de>
Sun, 25 Oct 2026 08:05:05 +0000 (09:05 +0100)
committerAndre Ramnitz <andre.ramnitz@mail.de>
Sun, 25 Oct 2026 08:05:05 +0000 (09:05 +0100)
dot-local/bin/simpledwindle_reload [new file with mode: 0755]

diff --git a/dot-local/bin/simpledwindle_reload b/dot-local/bin/simpledwindle_reload
new file mode 100755 (executable)
index 0000000..47aa911
--- /dev/null
@@ -0,0 +1,64 @@
+
+#!/usr/bin/env bash
+
+set -Eeuo pipefail
+
+readonly NAME="simpledwindle"
+readonly SCRIPT="$HOME/.local/share/kwin/scripts/$NAME/contents/code/main.js"
+readonly DBUS_SERVICE="org.kde.KWin"
+readonly DBUS_PATH="/Scripting"
+
+die() {
+    printf 'ERROR: %s\n' "$*" >&2
+    exit 1
+}
+
+kwin() {
+    qdbus6 "$DBUS_SERVICE" "$DBUS_PATH" "$@"
+}
+
+command -v qdbus6 >/dev/null 2>&1 ||
+    die "qdbus6 wurde nicht gefunden."
+
+[[ -r "$SCRIPT" ]] ||
+    die "Script nicht gefunden oder nicht lesbar: $SCRIPT"
+
+printf '[%s] Checking KWin scripting interface...\n' "$NAME"
+
+kwin isScriptLoaded "$NAME" >/dev/null ||
+    die "KWin-Scripting-Schnittstelle nicht erreichbar."
+
+# Vorhandene Instanz entfernen
+if [[ $(kwin isScriptLoaded "$NAME") == true ]]; then
+    printf '[%s] Unloading...\n' "$NAME"
+
+    result=$(kwin unloadScript "$NAME") ||
+        die "unloadScript fehlgeschlagen."
+
+    [[ $result == true ]] ||
+        die "KWin konnte das Script nicht entladen."
+
+    [[ $(kwin isScriptLoaded "$NAME") == false ]] ||
+        die "Script ist nach unloadScript weiterhin geladen."
+fi
+
+# Neue Instanz registrieren
+printf '[%s] Loading...\n' "$NAME"
+
+id=$(kwin loadScript "$SCRIPT" "$NAME") ||
+    die "loadScript fehlgeschlagen."
+
+[[ $id =~ ^[0-9]+$ ]] ||
+    die "Unerwartete Script-ID: $id"
+
+[[ $(kwin isScriptLoaded "$NAME") == true ]] ||
+    die "Script wurde nicht registriert."
+
+# KWin-Scripting starten
+printf '[%s] Starting (ID: %s)...\n' "$NAME" "$id"
+
+kwin start ||
+    die "KWin konnte das Script nicht starten."
+
+printf '[%s] Reload requested successfully.\n' "$NAME"
+