切换壁纸这种事,找到接口,一行代码就可以解决,本来打算用bash脚本,但是考虑到随机选取壁纸等因素,用python的os模块完成任务。
本脚本只在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"
这步没什么好说的啊,把喜欢的壁纸放在一个文件夹下,方便之后的存取使用。
直接上代码,看代码注释就好了。
# -*- coding: utf-8 -*-
# @Date : 2018-05-21 12:07:17
# @Author : Light ([email protected])
# @Link : ${link}
# @Version : $Id$
import os
import random
"""
TODO([email protected]):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)
利用linux下的crontab完成定时任务。
可以参考:
crontab 定时任务
linux定时任务的设置 crontab 配置指南
在这个工具中,配置文件就这么写:
*/30 * * * * python /home/user/1.py
在这个脚本制作中,学到了
- python的os模块
- python的random模块
- linux的壁纸切换接口
- linux的crontab定时任务
另一种实现自动切换的思路:
- 将脚本执行定为守护进程
- 在脚本内写上时间控制代码
- 但感觉没crontab定时任务方便,毕竟只是一个切换壁纸的脚本,没必要一直在后台运行,用完就结束