web-dev-qa-db-ja.com

コマンドラインからkwinスクリプトを実行するにはどうすればよいですか?

私はウィンドウを好きなように並べて表示するための本当に基本的なkwinスクリプトを作成しました。

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

スクリプトコンソール(krunnerの_qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsole_、または_wm console_)を使用します。

これをホットキーにバインドしたいと思います。

私はプラズマパッケージのビルドに関するリソースしか見つけることができませんでしたが、機能していません(_metadata.desktop_と同様の_/usr/share/kde4/apps/kwin/scripts_と同様のディレクトリコンテンツがありますが、それはplasmapkg(3980)/libplasma Plasma::Package::installPackage: Could not register package as service (this is not necessarily fatal): "kwin-script-tilewindows")と言います。

私はプラズマパッケージをいじくり回すのに少しうんざりしています。コマンドラインからJavaScriptベースのkwinスクリプトを呼び出すにはどうすればよいですか?

編集/メモ

慣れていない場合は、コマンドをKDEのホットキーにバインドするのは簡単です。アプリケーションランチャーを右クリックし、[アプリケーションの編集]に移動して新しいアイテムを追加し、[コマンド]ボックスにシェルコマンドを入力します。次に、[詳細設定]タブでショートカットキーを設定します。

9
gatoatigrado

here からのいくつかのヒントで、私はなんとか以下を機能させることができました:

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
7
Graeme

更新:これは、これを機能させるために2019年に私がしなければならなかったことです:

# 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
1
user272901