如何从命令行(例如,通过用户启动的脚本)设置 KDE 桌面壁纸(jpg 文件)?
答案1
可悲的是,似乎没有简单的方法。
看来你需要做这样的事情(来自https://www.kubuntuforums.net/showthread.php/66762-Right-click-wallpaper-changer?p=387392&viewfull=1#post387392):
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.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General");d.writeConfig("Image", "file:///media/sda2/Background/SpaceWall/Escape_Function.jpg")}'
或者,另一个例子,格式更漂亮(改编自https://github.com/bharadwaj-raju/libdesktop/issues/1:
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.image";
d.currentConfigGroup = Array("Wallpaper",
"org.kde.image",
"General");
d.writeConfig("Image", "file:///path/to/imagefile")
}}
'
我还发现了Python 解决方案。
答案2
kwriteconfig5 --file "$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc" --group 'Containments' --group '1' --group 'Wallpaper' --group 'org.kde.image' --group 'General' --key 'Image' "/path/to/file.png"
Reddit.com。2022. 从终端更改壁纸。[在线] 可从以下网址获取:http://reddit.com/comments/65pmhj/comment/icfca29/?utm_source=share&utm_medium=web2x&context=3[2022 年 8 月 11 日访问]。
答案3
只需在脚本中运行此命令即可解决所有问题:
使用 Chris 的解决方案:
这是一个复杂的答案,但是我通过基于 Chris 的解决方案解决了我的问题,我发现它比 KDE 的内置壁纸功能好得多 - 后者只能在单个显示器上运行。
适用于所有显示器 - 只需更改变量sleeptime
并location
在顶部 - 复制/粘贴到 .sh 文件中并运行它。
while true
do
# //// CONFIGURABLE VARIABLES ////////////
# pausetime between iterations
sleeptime=900
# location of wallpapers folder
location="/home/myusername/Pictures"
# ////////////////////////////////////////
array=($(ls $location*)) # populate array with directory contents
( IFS=$'\n'; echo "${array[*]}" ) # list array content for debug
size=${#array[@]}
index=$(($RANDOM % $size))
wallpaper=${array[$index]} # randomly select
echo
echo " || SELLECTED WALLPAPER = "$wallpaper
dbus-send --session --dest=org.kde.plasmashell --type=method_call /PlasmaShell org.kde.PlasmaShell.evaluateScript 'string:
var Desktops = desktops();
for (i=0;i<Desktops.length;i++) {
d = Desktops[i];
d.wallpaperPlugin = "org.kde.image";
d.currentConfigGroup = Array("Wallpaper",
"org.kde.image",
"General");
d.writeConfig("Image", "file://'''$location'''/'${wallpaper}'");
}'
sleep $sleeptime
done
我将其作为启动脚本运行,从此再也不用担心它了。它的妙处在于,array
包含所有壁纸文件名的变量会在每次循环中重新填充,这意味着我可以更改壁纸加载,并将其反映在脚本操作中。