如何从命令行设置 KDE 桌面壁纸?

如何从命令行设置 KDE 桌面壁纸?

如何从命令行(例如,通过用户启动的脚本)设置 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 的内置壁纸功能好得多 - 后者只能在单个显示器上运行。

适用于所有显示器 - 只需更改变量sleeptimelocation在顶部 - 复制/粘贴到 .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包含所有壁纸文件名的变量会在每次循环中重新填充,这意味着我可以更改壁纸加载,并将其反映在脚本操作中。

相关内容