Làm thế nào tôi có thể chạy một tập lệnh kwin từ dòng lệnh?


9

Tôi đã viết một kịch bản kwin thực sự cơ bản cho các ô cửa sổ như thế nào tôi thích chúng,

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

sử dụng bảng điều khiển kịch bản ( qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsolehoặc wm consoletừ krunner).

Tôi muốn liên kết điều này với một phím nóng.

Tôi chỉ có thể tìm tài nguyên về việc xây dựng các gói Plasma mà tôi chưa thể làm việc (Tôi có một tài metadata.desktopnguyên tương tự với các gói trong /usr/share/kde4/apps/kwin/scriptsvà nội dung thư mục tương tự, nhưng nó nói plasmapkg(3980)/libplasma Plasma::Package::installPackage: Could not register package as service (this is not necessarily fatal): "kwin-script-tilewindows").

Tôi hơi mệt mỏi với việc mucking với bao bì Plasma. Làm cách nào tôi có thể gọi tập lệnh kwin dựa trên JavaScript của mình từ dòng lệnh?

EDIT / Lưu ý

Trong trường hợp bạn không quen thuộc, thật dễ dàng để liên kết lệnh với các phím nóng trong KDE - chỉ cần nhấp chuột phải vào trình khởi chạy ứng dụng, đi đến "Chỉnh sửa ứng dụng", thêm một mục mới, nhập lệnh shell trong hộp "Lệnh", và sau đó đặt phím tắt trong tab "Nâng cao".

Câu trả lời:


7

Với một số gợi ý từ đây , tôi đã xoay sở để có được những điều sau đây để làm việc:

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

Cập nhật: đây là những gì tôi đã phải làm trong năm 2019 để làm cho nó hoạt động:

# 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.