Ubuntu自动下载Bing每日一图,并自动换壁纸

基本的逻辑部分。

>> emacs /usr/local/bin/switchwallpaper.py
import requests
import time
import os
import random

img_url = "https://area.sinaapp.com/bingImg/"
date = time.localtime()
year = date.tm_year
month = date.tm_mon
day = date.tm_mday
filename = "bing_%s_%s_%s.jpg" % (year, month, day)
wallpaperdir = "/home/long/wallpapers/"

if os.path.exists(wallpaperdir + filename):
    pass
else:
    r = requests.get(img_url)
    with open(wallpaperdir + "%s" % filename, "wb") as f:
        f.write(r.content)

filelist = os.listdir(wallpaperdir)
aimfile = random.choice(filelist)

os.system("/usr/bin/gsettings set org.gnome.desktop.background picture-uri 'file://" +
          wallpaperdir+"%s'" % aimfile)

ps 需要格外注意的是最后一行代码,也就是gsettings的使用。

系统命令部分

>> emacs /usr/bin/switcher
1
2
3
4
5
6
#!/bin/sh

PID=$(pgrep gnome-session | tail -n1)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

python3 /usr/local/bin/switchwallpaper.py

ps 中间的两句是关键,如果没有中间的两句,无法实现命令行切换壁纸。

>> sudo crontab -u long -e
*/10 * * * * /usr/bin/switcher

ps 用于设置每10分钟执行一次。

最后展示一下效果 ^O^

/1-pics/bg1.png