Deepin 切换壁纸小工具
切换壁纸这种事,找到接口,一行代码就可以解决,本来打算用 bash 脚本,但是考虑到随机选取壁纸等因素,用 python 的 os 模块完成任务。
一、思路
- 找到切换壁纸的接口
- 设置壁纸库(文件夹)
- python 脚本完成功能
- 半小时触发脚本自动切换壁纸
二、实现过程
1、切换壁纸接口
本脚本只在 Linux 下使用。
在 Linux 下(准确说是 GNOME 桌面),通过 gsettings set
指令完成对特定值(壁纸文件位置)进行修改,即可修改壁纸。
# Ubuntu 下切换指令(注意有个 file)
gsettings set org.gnome.desktop.background picture-uri "file:/home/user/Desktop/1.jpg"
#Deepin 下切换指令(注意没有 file)
gsettings set com.deepin.wrap.gnome.desktop.background picture-uri "/home/user/Desktop/1.jpg"
2、设置壁纸库
这步没什么好说的啊,把喜欢的壁纸放在一个文件夹下,方便之后的存取使用。
3、python 完成功能
直接上代码,看代码注释就好了。
# -*- coding: utf-8 -*-
# @Date : 2018-05-21 12:07:17
# @Author : Light (halysl0817@gmail.com)
# @Link : ${link}
# @Version : $Id$
import os
import random
"""
TODO(halysl0817@gmail.com):Change the wallpaper by changing the time
利用linux下的crontab工具实现半小时切换一次,
*/30 * * * * python /xxx/changebackground.py
"""
# 更换壁纸指令,此为deepin更换指令,不代表所有linux发行版更换指令
cmd = "gsettings set com.deepin.wrap.gnome.desktop.background picture-uri "
# 图片目录,用户可自主更换
path = "/home/light/Documents/code/spider-on-lol/lolSpider/lolSpider/img/hero_skin_img/full/"
# 利用os.listdir()方法获取图片目录下的所有文件名的列表
pic_list = os.listdir(path)
# 确切的文件位置,以及确切的更换指令
real_path = path + str(random.choices(pic_list))[2:-2]
real_cmd = cmd + "\"" + real_path +"\""
# 执行
os.system(real_cmd)
4、自动切换壁纸
利用 Linux 下的 crontab 完成定时任务。
可以参考:
crontab 定时任务 linux定时任务的设置 crontab 配置指南
在这个工具中,配置文件就这么写:
*/30 * * * * python /home/user/1.py
三、总结
在这个脚本制作中,学到了
- Python 的 os 模块
- Python 的 random 模块
- Linux 的壁纸切换接口
- Linux 的 crontab 定时任务
另一种实现自动切换的思路:
- 将脚本执行定为守护进程
- 在脚本内写上时间控制代码
- 但感觉没 crontab 定时任务方便,毕竟只是一个切换壁纸的脚本,没必要一直在后台运行,用完就结束