KDE의 VirtualBox에 포커스를 설정해야 합니다. 이 목적을 위해 KWin 스크립트를 작성했지만 콘솔에서 실행하는 방법을 모르겠습니다.
내가 시도한 것:
이 KWin 스크립트는 다음에서 작동합니다.데스크탑 셸 스크립트 콘솔
데스크탑 쉘 스크립트 콘솔을 여는 방법:
Alt+를 누르고 F2엔터를 쳐주세요
wm 콘솔 실행
스크립트:
// Main reference: http://techbase.kde.org/Development/Tutorials/KWin/Scripting
// API: https://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9
// Sets focus to VirtualBox
var clients = workspace.clientList();
for (var i=0; i<clients.length; i++) {
print(clients[i].caption);
var cap = clients[i].caption;
if (cap.indexOf("- Oracle VM VirtualBox") != -1) {
workspace.activeClient = clients[i];
}
}
하지만 Bash에서 실행하려고 하면(이 방법을 따르세요) 다음 오류가 발생하므로 스크립트가 설정되지 않은 것 같습니다.
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.kde.kwin.Scripting was not provided by any .service files
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.kde.kwin.Scripting was not provided by any .service files
dbus가 내부적으로 어떻게 작동하는지 전혀 모르므로 지금부터 시도해 보겠습니다.
나는 KDE 새 버전의 변경으로 인해 발생하는 이러한 문제를 해결하려고 노력합니다.
QDBus 뷰어
그래서 나는 달린다qdbus 뷰어구경하다.
kwin.Scripting이 아닌 KWin이어야 합니다.
왼쪽 목록에서 org.kde.KWin을, 오른쪽 목록에서 Scripting을 찾았고, org.kde.kwin.Scripting에서 loadScript 및 start 메소드를 찾았습니다. 이러한 방법을 두 번 클릭하고 스크립트 파일을 로드하면 수동으로 사용할 수 있습니다. 작동하고 스크립트가 실행되고 VirtualBox가 포커스를 받습니다.
그래서 그에 따라 로드 명령을 수정해 보았습니다.
dbus-send --print-reply --dest=org.kde.KWin /Scripting org.kde.kwin.Scripting.loadScript string:"/home/jk/msexcel_setfocus.kwinscript"
dbus-send --print-reply --dest=org.kde.KWin /Scripting org.kde.kwin.Scripting.start
이 명령은 오류를 발생시키지 않지만 작동하지도 않습니다.
dbus가 제대로 작동하나요?
dbus가 작동하는지 확인하기 위해 다른 방법을 시도했는데 이것이 작동했는지 확인했습니다(FPS 효과 활성화/비활성화).
dbus-send --print-reply --session --dest=org.kde.KWin /Effects org.kde.kwin.Effects.loadEffect string:"showfps"
dbus-send --print-reply --session --dest=org.kde.KWin /Effects org.kde.kwin.Effects.unloadEffect string:"showfps"
번호가 매겨진 항목
따라서 위에 링크된 스크립트에는 일종의 번호가 매겨진 경로가 있는 비즈니스가 있습니다. QDBusViewer에서 때때로 오른쪽 창에 번호가 매겨진 항목이 있다는 것을 발견했습니다(오고 갑니다). 해당 번호가 존재하면 실제로는 스크립트 항목과 실행 메소드가 있는 것입니다. 그래서 나는 이것을 시도합니다 :
이 명령으로 제공된 숫자는 QDBusViewer에 나타나는 숫자에 해당합니다.
num=$(dbus-send --print-reply --dest=org.kde.KWin /Scripting org.kde.kwin.Scripting.loadScript string:"/home/jk/msexcel_setfocus.kwinscript" | awk 'END {print $2}')
echo $num
dbus-send --print-reply --dest=org.kde.KWin /$num org.kde.kwin.Scripting.run
그러나 마지막 명령은 작동하지 않으며 위에서 언급한 것처럼 run 메소드 전에 start 메소드를 실행하지도 않고 숫자가 사라졌다고 불평합니다.
Error org.freedesktop.DBus.Error.UnknownObject: No such object path '/1'
답변1
기대했던 것보다 더 많은 시행착오를 겪은 후에 다음 예와 같이 플라즈마셸과 통신하여 스크립트가 포함된 문자열을 직접 실행하는 것이 가능할 것 같습니다. 화면 회전):
qdbus org.kde.plasmashell /PlasmaShell evaluateScript \ "panelById(panelIds[0]).location='right'"
답변2
이 모든 어려움 끝에 초점을 맞추는 다른 방법을 찾았습니다.새로 열린 창에 포커스 설정):
wmctrl -i -a $(wmctrl -l | grep "\- Oracle VM VirtualBox" | tail -n 1 | cut -d ' ' -f1)
KWin 스크립트를 실행하는 방법을 아는 데 여전히 관심이 있습니다.