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".

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.