前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Manjaro21.0下KDE5桌面设置桌面壁纸

Manjaro21.0下KDE5桌面设置桌面壁纸

作者头像
hotarugali
发布2022-02-28 21:01:55
1.4K0
发布2022-02-28 21:01:55
举报

1. 缘由

本来 Manjaro 的 KDE 桌面是可以直接在「系统设置」中直接 GUI 直接更换桌面壁纸的,但我发现每次系统进行滚动更新后,原先的壁纸设置就消失了,需要重新设置。本着不愿动鼠标的念头,不如写个脚本来实现吧(本质还是懒)。然而这个似乎不是简单的事情,好在 StackOverflow 在手,知识全有(白嫖真香)。

2. 代码

2.1 单张壁纸固定

固定显示某张图片作为桌面壁纸。

代码语言:javascript
复制
#!/bin/bash

location="/home/xxx/..."        # 壁纸目录路径
wallpaper="23.jpg"              # 壁纸名称

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://'$location'/'${wallpaper}'")
    }}
' 

2.2 多张壁纸循环

随机抽取壁纸目录下的某一张图片作为桌面壁纸。

代码语言:javascript
复制
while true; do
    sleeptime=900                       # 壁纸循环间隔时间(单位:秒)
    location="/home/xxx/..."            # 壁纸目录路径

    array=($(ls $location*))            # 数组变量
    # ( IFS=$'\n'; echo "${array[*]}" )   # 显示壁纸目录路径下所有的壁纸(用于调试)

    size=${#array[@]}
    index=$(($RANDOM % $size))          # 生成随机数
    wallpaper=${array[$index]}          # 随机索引

    echo 
    echo "当前桌面使用的壁纸是:"$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

【注】以上程序执行后不会结束,因此最好将其作为守护进程运行,比如添加到系统开机自启动脚本中。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 缘由
  • 2. 代码
    • 2.1 单张壁纸固定
      • 2.2 多张壁纸循环
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档