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'"