명령 행에서 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 consolekrunner에서).

이것을 핫키에 바인딩하고 싶습니다.

난 단지 내가 일을 못 했어 플라즈마 패키지를 구축하는 방법에 대해 리소스를 찾을 수있었습니다 (나는이 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에서 핫키에 명령을 바인딩하는 것이 쉽습니다. 응용 프로그램 실행기를 마우스 오른쪽 버튼으로 클릭하고 "응용 프로그램 편집"으로 이동하여 새 항목을 추가 한 다음 "명령"상자에 쉘 명령을 입력하십시오. 그런 다음 "고급"탭에서 바로 가기 키를 설정하십시오.

답변:


7

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

1

업데이트 : 이것이 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.