私は最近KWinスクリプトで遊んだ。https://develop.kde.org/docs/plasma/kwin/
私が理解したのは、次のいずれかの方法でIDEを開き、KWinスクリプトを生成することです。
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.showInteractiveKWinConsole
コンソールでコマンドを実行するplasma-interactiveconsole --kwin
コンソールでコマンドを実行する- を押し
Alt+F2
てEnterを押し、wm console
Enterを押します。
これで、次のスクリプトを作成しました。
print("registerShortcut ...");;
registerShortcut("...","...", "Meta+C", function() {
...
});
IDEで正常に実行でき、実行時にチェックインすると、上記journalctl
のRegisterShortcut文字列を印刷するログが追加されます。
$ journalctl -f | grep registerShortcut
Nov 12 xx:xx:xx HOST kwin_x11[1105]: js: registerShortcut ...
これで、上記の関数で指定したすべての操作を実行できる素晴らしいMeta + Cショートカットができました。
Alt+F2
ただし、ショートカットを有効にするために起動するたびにEnterキーを押してからwm console
Enterキーを押してから、手動でスクリプトを開いたりロードしたりしたくありません。
だから私は見ています。https://develop.kde.org/docs/plasma/kwin/#packaging-kwin-scriptsパッケージで作成してから自分のコンピュータにインストールすると、起動時に実行されます。だから〜/tools/kwin-script-1に入れました。
ファイル~/tools/kwin-script-1/metadata.desktop:
[Desktop Entry]
Name=kwin-script-1
Comment=kwin-script-1
Icon=preferences-system-windows
X-KDE-PluginInfo-Author=xxx
[email protected]
X-KDE-PluginInfo-Name=kwin-script-1
X-KDE-PluginInfo-Version=1.0
X-KDE-PluginInfo-License=GPL
Type=Service
X-KDE-ServiceTypes=KWin/Script
X-Plasma-API=javascript
X-Plasma-MainScript=code/main.js
ファイル~/tools/kwin-script-1/contents/code/main.js
print("registerShortcut ...");;
registerShortcut("...","...", "Meta+C", function() {
...
});
それから私はインストールしますkpackagetool5 --type=KWin/Script -i ~/tools/kwin-script-1
しかし、それがすることはそれらをにコピーする~/.local/share/kwin/scripts/kwin-script-1/
だけであり、起動時には実行されません。出力がjournalctl -b | grep registerShortcut
空であるという事実からわかるように
したがって、質問は次のようになります。
- 起動時にKWinスクリプトを実行する方法は?
- KWinスクリプトをインストールしても起動時に実行されない場合は、なぜインストールする必要がありますか?インストール(または
~/.local/share/kwin/scripts/...
? - わかりましたコマンドラインでkwinスクリプトを実行するには?私はそれらを使ってみました(起動時に自動的に実行するためにbash_profileまたはbashrcに追加しようとしています)。動作しません(手動でコンソールまたはbash_profile / bashrcを介して)。
- 注文する:
script="/home/kristian/.local/share/kwin/scripts/kwin-script-1/contents/code/main.js"
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
- 出力:
Error org.freedesktop.DBus.Error.UnknownInterface: No such interface 'org.kde.kwin.Scripting' at object path '/4'
- 注文する:
$ script="/home/kristian/.local/share/kwin/scripts/kwin-script-1/contents/code/main.js"
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 /$num \
org.kde.kwin.Scripting.run
- 出力:
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.kde.kwin.Scripting was not provided by any .service files
Error org.freedesktop.DBus.Error.UnknownInterface: No such interface 'org.kde.kwin.Scripting' at object path '/'
答え1
スクリプトがインストールされているだけでなく、有効になっていることを確認してください。
システム設定>ウィンドウ管理> KWinスクリプト>スクリプトチェックボックスの選択>適用
または
kwriteconfig5 --file kwinrc --group Plugins --key nameofyourkwinscriptEnabled true
qdbus org.kde.KWin /KWin reconfigure