如何在啟動時執行 KWin 腳本,如果它在啟動時不執行,安裝腳本的目的是什麼
最近我一直在玩 KWin 腳本https://develop.kde.org/docs/plasma/kwin/
我知道我可以通過以下任一方式打開用於創建 KWin 腳本的 IDE:
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.showInteractiveKWinConsole
在控制台執行命令plasma-interactiveconsole --kwin
在控制台執行命令- 按
Alt+F2
然後輸入wm console
然後輸入現在我創建了一個這樣的腳本:
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
然後輸入wm console
然後輸入,然後每次啟動手動打開/載入腳本,只是為了啟用我的快捷方式。因此,我正在查看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 X-KDE-PluginInfo-Email=yyy@gmail.com 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 '/'
確保您不僅安裝了腳本,而且還啟用了腳本:
系統設置 > 視窗管理 > KWin 腳本 > 選中腳本的複選框 > 應用
或者
kwriteconfig5 --file kwinrc --group Plugins --key nameofyourkwinscriptEnabled true qdbus org.kde.KWin /KWin reconfigure