最近在玩KWin脚本https://develop.kde.org/docs/plasma/kwin/
据我了解,我可以通过以下任一方式打开 IDE 来创建 KWin 脚本:
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
[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