Bagaimana saya bisa menjalankan skrip kwin dari baris perintah?

9

Saya menulis skrip kwin yang sangat mendasar untuk membentuk windows bagaimana saya menyukainya,

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

menggunakan konsol scripting ( qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsole, atau wm consoledari krunner).

Saya ingin mengikat ini ke hotkey.

Saya hanya bisa menemukan sumber daya tentang membangun paket Plasma, yang saya belum dapat bekerja (saya punya metadata.desktopyang mirip dengan yang ada di /usr/share/kde4/apps/kwin/scriptsdalamnya, dan isi direktori yang serupa, tetapi katanya plasmapkg(3980)/libplasma Plasma::Package::installPackage: Could not register package as service (this is not necessarily fatal): "kwin-script-tilewindows").

Saya sedikit lelah mucking dengan kemasan Plasma. Bagaimana saya bisa menjalankan skrip kwin berbasis JavaScript dari baris perintah?

EDIT / Catatan

Jika Anda tidak terbiasa, mudah untuk mengikat perintah ke hotkeys di KDE - klik kanan peluncur aplikasi, pergi ke "Edit Aplikasi", tambahkan item baru, masukkan perintah shell di kotak "Command", dan kemudian mengatur tombol pintas di tab "Advanced".

gatoatigrado
sumber

Jawaban:

7

Dengan beberapa petunjuk dari sini , saya berhasil membuat yang berikut ini berfungsi:

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
sumber
1

Pembaruan: inilah yang harus saya lakukan pada tahun 2019 agar ini berfungsi:

# 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
pengguna272901
sumber