自从入坑ubuntu以后,就越走越远,走上一条美化的不归路,哈哈哈,开玩笑 中意ubuntu系统,还是因为对后端开发方便很多,尤其是自己调试各种服务,只要装个docker,随便搞 但是ubuntu的壁纸很丑(个人认为),所以每次重装ubuntu以后,都会重新设置壁纸,最开始也希望能想Windows一样,可以自行更换壁纸,哪怕是安装个什么第三方软件嘞 但是找了很久都不尽人意 于是呼,自己动手丰衣足食吧 我用的gnome桌面,那。。。这玩意儿能不能通过命令行修改壁纸呢 如果可以的话,是不是可以通过脚本+cron实现自动更换壁纸嘞, 甚至设置一个执行更换壁纸脚本的快捷键,一键更换壁纸,美滴很 但是这一切的开始,就是需要通过命令行修改桌面壁纸,找了好久终于找到了:
PID=$(pgrep gnome-session-c)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
gsettings set org.gnome.desktop.background picture-uri file:///home/ljw/Pictures/wallpaper/$random_file_name
就是这个啦,我在确定PID的时候,踩了个坑,直接拿来的脚本是这样的PID=$(pgrep gnome-session)
一直没办法更换壁纸,后来发现找不到PID,于是我自己尝试了一下,发现在我的机器上,进程名称是gnome-session-c
于是,接下来就一切顺了啦
寻找高清壁纸资源,这个网上很多,自己找吧
完整脚本:
#!/bin/bash
#Function:change wallpaper
file_name_arr=(`ls ~/Pictures/wallpaper`)
file_count=${#file_name_arr[*]}
file_random_num=$((RANDOM%$file_count))
random_file_name=${file_name_arr[$file_random_num]}
PID=$(pgrep gnome-session-c)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
gsettings set org.gnome.desktop.background picture-uri file:///home/ljw/Pictures/wallpaper/$random_file_name
#echo 更换壁纸 $random_file_name $(date "+%Y-%m-%d %H:%M:%S")
设置定时任务,参考Ubuntu设置系统定时任务:
*/3 * * * * /home/ljw/Pictures/change_wallpaper.sh >> ~/change.log
重新注销,登录一下,就可以自动切换壁纸啦;