Jak mogę uruchomić skrypt kwin z wiersza poleceń?


9

Napisałem naprawdę prosty skrypt kwin do kafelkowania okien, jak mi się podobają,

// 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;
}

za pomocą konsoli skryptów ( qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsolelub wm consolez Krunner).

Chcę powiązać to ze skrótem klawiszowym.

Udało mi się tylko znaleźć zasoby na temat budowania pakietów Plazmy, których jeszcze nie dostałem do pracy (mam metadata.desktoppodobny do tych w /usr/share/kde4/apps/kwin/scriptspodobnej zawartości katalogu, ale tak mówi plasmapkg(3980)/libplasma Plasma::Package::installPackage: Could not register package as service (this is not necessarily fatal): "kwin-script-tilewindows").

Jestem trochę zmęczony pakowaniem w plazmę. Jak mogę wywołać mój skrypt kwin oparty na JavaScript z wiersza poleceń?

Edytuj notatkę

Jeśli nie jesteś zaznajomiony, łatwo jest powiązać polecenie z klawiszami skrótu w KDE - po prostu kliknij prawym przyciskiem myszy program uruchamiający aplikację, przejdź do „Edytuj aplikacje”, dodaj nowy element, wprowadź polecenie powłoki w polu „Polecenie”, a następnie ustaw klawisz skrótu na karcie „Zaawansowane”.

Odpowiedzi:


7

Z niektórych podpowiedzi z tutaj , udało mi się dostać do pracy, co następuje:

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

1

Aktualizacja: oto, co musiałem zrobić w 2019 roku, aby to zadziałało:

# 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.