例如,在互联网上搜索我发现以下命令可以让我在 KDE 中更改壁纸:
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops(); for (i = 0; i < allDesktops.length; i++) {d = allDesktops[i]; d.wallpaperPlugin = "org.kde.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General"); d.writeConfig("Image", "file:///path/to/image.png")}'
好的,它可以工作,我也可以使用 dbus 模块在 python 中使用它,但是如果你无法通过 google 找到解决方案或者没有可用的文档,有什么方法可以找到服务名称、路径、方法和参数应该是什么会被利用吗?
我尝试过在 dbus-monitor 处于活动状态的情况下从 KDE 设置更改壁纸,但它没有显示任何有用的内容...只有 3 行,如下所示:
clover@Lacia:~$ dbus-monitor
method call time=1690707792.535464 sender=:1.20 -> destination=org.freedesktop.DBus serial=2845 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
string "type='signal',path='/KPackage/Plasma/Wallpaper',interface='org.kde.plasma.kpackage',member='packageInstalled'"
可以使用
qdbusviewer
包中的 qt-tools
工具检查各种 API showText
方法来显示通知。qdbus-qt5 org.kde.plasmashell /org/kde/osdService org.kde.osdService.showText null "TEST!"
您可以看到它与屏幕截图上的路径基本相同,其中
""
和 "TEST!"
是 showText
函数的参数。在您使用
evaluateScript
的示例中,似乎使用了 Kwin 脚本 API。