起動時にKWinスクリプトを実行する方法と起動時に実行されない場合は、インストールスクリプトの目的は何ですか?

起動時にKWinスクリプトを実行する方法と起動時に実行されない場合は、インストールスクリプトの目的は何ですか?

私は最近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 consoleEnterを押します。

これで、次のスクリプトを作成しました。

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 consoleEnterキーを押してから、手動でスクリプトを開いたりロードしたりしたくありません。

だから私は見ています。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

関連情報