ฉันจะรันสคริปต์ kwin จากบรรทัดคำสั่งได้อย่างไร


9

ฉันเขียนสคริปต์ 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;
}

ใช้คอนโซลสคริปต์ ( qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsoleหรือwm consoleจาก krunner)

ฉันต้องการผูกปุ่มลัดนี้

ฉันสามารถค้นหาทรัพยากรเกี่ยวกับการสร้างแพ็คเกจพลาสมาซึ่งฉันไม่สามารถใช้งานได้ (ฉันมีสิ่ง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")

ฉันเบื่อการลอกเลียนแบบด้วยบรรจุภัณฑ์พลาสม่า ฉันจะเรียกสคริปต์ kwin ที่ใช้ JavaScript ของฉันจากบรรทัดคำสั่งได้อย่างไร

แก้ไข / หมายเหตุ

ในกรณีที่คุณไม่คุ้นเคยการผูกคำสั่งกับฮอตคีย์ใน KDE นั้นทำได้ง่ายเพียงคลิกขวาที่ตัวเรียกใช้งานแอปพลิเคชันไปที่ "แก้ไขแอปพลิเคชัน" เพิ่มรายการใหม่ป้อนคำสั่งเชลล์ในกล่อง "คำสั่ง" จากนั้นตั้งค่าคีย์ลัดในแท็บ "ขั้นสูง"

คำตอบ:


7

ด้วยคำแนะนำบางอย่างจากที่นี่ฉันจัดการเพื่อให้ได้งานต่อไปนี้:

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

อัปเดต: นี่คือสิ่งที่ฉันต้องทำในปี 2562 เพื่อให้ใช้งานได้:

# 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.