在 KDE 中以编程方式更改壁纸

Posted

技术标签:

【中文标题】在 KDE 中以编程方式更改壁纸【英文标题】:Change wallpaper programmatically in KDE 【发布时间】:2017-12-25 16:07:43 【问题描述】:

我想用 F# 编写一个程序来更改 Linux 上的墙纸。看来我需要在 KDE 中使用 dbus 和 JS 来做到这一点,我对此有点困惑。 我找到了this,并尝试运行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

有没有更好的方法来做到这一点?如果不是,那么做我想做的事情的正确方法是什么?

【问题讨论】:

最快的方法是kwriteconfigkwriteconfig5 命令行工具。我不使用KDE,所以不知道它是否有效。 (askubuntu.com/questions/839647/gsettings-like-tools-for-kde) 【参考方案1】:

这是我第一次在这里回答问题,如果不完全正确,请见谅。 我相信您的 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'")'

这绝对完美无缺。

【讨论】:

以上是关于在 KDE 中以编程方式更改壁纸的主要内容,如果未能解决你的问题,请参考以下文章

在 ios 中以编程方式获取墙纸

以编程方式设置主屏幕壁纸(更改主屏幕和锁定屏幕)

通过 iPhone 应用更改壁纸

如何以编程方式更改我的 Windows 桌面墙纸?

爱壁纸hd电脑版|爱壁纸hd电脑版下载

如何在win10中修改桌面壁纸