Wie kann ich ein kwin-Skript über die Befehlszeile ausführen?

9

Ich habe ein wirklich einfaches Kwin-Skript geschrieben, um Fenster so zu kacheln, wie ich sie mag.

// Main reference: http://techbase.kde.org/Development/Tutorials/KWin/Scripting

// Top-level parameters. Adjust these as suitable for your desktop.
var width = 3840;
var third = Math.round(width / 3);


var clients = workspace.clientList();
for (var i=0; i<clients.length; i++) {
  var client = clients[i];
  var cap = client.caption.toLowerCase();
  var g = client.geometry;

  if (cap.indexOf("firefox") != -1) {
    g.x = 0;
    g.width = third;
  } else if (cap.indexOf("vim") != -1) {
    g.x = third;
    g.width = third;
  } else if (cap.indexOf("konsole") != -1) {
    g.x = third * 2;
    g.width = third;
  }

  client.geometry = g;
}

Verwenden der Skriptkonsole ( qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsoleoder wm consolevon krunner).

Ich möchte dies an einen Hotkey binden.

Ich konnte nur Ressourcen zum Erstellen von Plasma-Paketen finden, die ich nicht zum Arbeiten gebracht habe (ich habe eine metadata.desktop, die der in ähnelt /usr/share/kde4/apps/kwin/scripts, und ähnliche Verzeichnisinhalte, aber es heißt plasmapkg(3980)/libplasma Plasma::Package::installPackage: Could not register package as service (this is not necessarily fatal): "kwin-script-tilewindows").

Ich bin es ein bisschen leid, mit Plasma-Verpackungen zu spielen. Wie kann ich mein JavaScript-basiertes kwin-Skript über die Befehlszeile aufrufen?

Notiz bearbeiten

Falls Sie nicht vertraut sind, können Sie den Befehl einfach an Hotkeys in KDE binden. Klicken Sie einfach mit der rechten Maustaste auf den Anwendungsstarter, gehen Sie zu "Anwendungen bearbeiten", fügen Sie ein neues Element hinzu und geben Sie den Shell-Befehl in das Feld "Befehl" ein. und stellen Sie dann die Tastenkombination auf der Registerkarte "Erweitert" ein.

gatoatigrado
quelle

Antworten:

7

Mit einigen Hinweisen von hier gelang es mir, Folgendes zum Laufen zu bringen:

script=/path/to/script

num=$(dbus-send --print-reply --dest=org.kde.kwin.Scripting \
  /Scripting \
  org.kde.kwin.Scripting.loadScript \
  string:"$script" |
  awk 'END {print $2}' )

dbus-send --print-reply --dest=org.kde.kwin.Scripting \
  /$num \
  org.kde.kwin.Scripting.run
Graeme
quelle
1

Update: Das musste ich 2019 tun, damit das funktioniert:

# don't use ~/ in this path:
script="/path/to/script"

num=$(dbus-send --print-reply --dest=org.kde.KWin \
    /Scripting org.kde.kwin.Scripting.loadScript \
    string:"$script" | awk 'END {print $2}' )

dbus-send --print-reply --dest=org.kde.KWin /$num \
    org.kde.kwin.Scripting.run
user272901
quelle