我写了一个非常基本的 kwin 脚本来按照我喜欢的方式平铺窗口,
// Main reference: http://techbase.kde.org/Development/Tutorials/KWin/Scripting
// Top-level parameters. Adjust these as suitable for your desktop.
var width = 3840;
var third = Math.round(width / 3);
var clients = workspace.clientList();
for (var i=0; i<clients.length; i++) {
var client = clients[i];
var cap = client.caption.toLowerCase();
var g = client.geometry;
if (cap.indexOf("firefox") != -1) {
g.x = 0;
g.width = third;
} else if (cap.indexOf("vim") != -1) {
g.x = third;
g.width = third;
} else if (cap.indexOf("konsole") != -1) {
g.x = third * 2;
g.width = third;
}
client.geometry = g;
}
Run Code Online (Sandbox Code Playgroud)
使用脚本控制台(qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsole,或wm console来自 krunner)。
我想将它绑定到一个热键。
我只能找到关于构建 Plasma 包的资源,我还没有开始工作(我有一个metadata.desktop与 中的类似/usr/share/kde4/apps/kwin/scripts,目录内容类似,但它说plasmapkg(3980)/libplasma Plasma::Package::installPackage: Could not register package as service (this is not necessarily fatal): "kwin-script-tilewindows")。
我有点厌倦了使用 Plasma 包装。如何从命令行调用基于 JavaScript 的 kwin 脚本?
如果您不熟悉,在 KDE 中将命令绑定到热键很容易——只需右键单击应用程序启动器,转到“编辑应用程序”,添加一个新项目,在“命令”框中输入 shell 命令,然后在“高级”选项卡中设置快捷键。
有了这里的一些提示,我设法使以下内容起作用:
script=/path/to/script
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.Scripting \
/$num \
org.kde.kwin.Scripting.run
Run Code Online (Sandbox Code Playgroud)
小智 7
这是我在 2022 年必须做的事情才能让它发挥作用
script="/path/to/script"
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.Script.run
# I'm not sure if some delay is in order here to let your script complete?
dbus-send --print-reply --dest=org.kde.KWin /$num \
org.kde.kwin.Script.stop
Run Code Online (Sandbox Code Playgroud)
注意:2019 年我需要使用org.kde.kwin.Scripting.run而不是org.kde.kwin.Script.run.
我不清楚是否需要“停止”命令,但它们似乎会清理 dbus 树,所以也许应该使用它们。我不确定使用它们是否会产生负面影响,所以如果它们造成麻烦,也许尝试不使用它们。
| 归档时间: |
|
| 查看次数: |
4825 次 |
| 最近记录: |