我想用F#编写一个程序来更改Linux上的壁纸。似乎我需要在 KDE 中使用 dbus 和 JS 来做到这一点,我对此有点困惑。
我找到了这个,并尝试运行qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript ~/scripts/wallpaper.js
,其中wallpaper.js
如下:
var allDesktops = desktops();
print (allDesktops);
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:///home/amino/Pictures/wallpapers/wallhaven-360156.jpg")
}
但是我收到此错误:Error: org.freedesktop.DBus.Error.Failed
SyntaxError: Invalid regular expression: invalid regular expression
有没有更好的方法可以做到这一点?如果没有,做我想做的事情的正确方法是什么?
这是我第一次在这里回答问题,所以如果不太正确,请道歉。 我相信您的 JS 代码唯一可能出错的是它可能需要额外的单引号,并且可能不需要添加"file://"。
- d.writeConfig("Image", "file:///home/amino/Pictures/wallpapers/wallhaven-360156.jpg")
+ d.writeConfig("Image", "'file:///home/amino/Pictures/wallpapers/wallhaven-360156.jpg'")
有关其他信息,这是我使用的脚本:
#!/bin/bash
WALLPAPERDIR="/pathtodir/"
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops();
print (allDesktops);for (i=0;i<allDesktops.length;i++) {
d = allDesktops[i];d.wallpaperPlugin = "org.kde.slideshow";
d.currentConfigGroup = Array("Wallpaper", "org.kde.slideshow", "General");
d.writeConfig("SlidePaths", "'${WALLPAPERDIR}'")}'
这绝对完美无缺。