您能編寫最簡單的shell腳本,它會定期更改桌面牆紙(在Ubuntu中)(例如1分鐘)。Shell腳本更換桌面壁紙
壁紙將保存在特定的目錄(例如$ HOME/wallpapers)。 我只需要基本的功能。
1)選擇$HOME/wallpapers
2隨機牆紙)將其設置爲牆紙在桌面上
3)設定cron來運行每分鐘(的問題不屬於腳本)。
您能編寫最簡單的shell腳本,它會定期更改桌面牆紙(在Ubuntu中)(例如1分鐘)。Shell腳本更換桌面壁紙
壁紙將保存在特定的目錄(例如$ HOME/wallpapers)。 我只需要基本的功能。
1)選擇$HOME/wallpapers
2隨機牆紙)將其設置爲牆紙在桌面上
3)設定cron來運行每分鐘(的問題不屬於腳本)。
#!/bin/bash
wallpaperdir='$HOME/wallpaper'
files=($wallpaperdir/*)
randompic=`printf "%s\n" "${files[RANDOM % ${#files[@]}]}"`
gconftool-2 -t str --set /desktop/gnome/background/picture_filename "$randompic"
保存此腳本,並使用命令「crontab -e命令」編輯(它會啓動,你把這個線在文件末尾編輯):
*/1 * * * * /bin/bash /path/to/script.sh
編輯:我假設你正在使用GNOME。如果沒有,則需要編輯最後一行,因爲我的示例使用了Gnome Conftool。 ;)
要更改XFCE的背景下,你應該改變與gconftool-2行:
echo -e 「# xfce backdrop list\n$randompic」>$HOME/.config/xfce4/desktop/backdrops.list
killall -USR1 xfdesktop
謝謝。我正在使用gnome和xfce。你知道如何在XFCE中改變它嗎? – xralf 2011-04-05 12:11:08
我用過 '#!/ bin/bash
files =(/ home/xralf/wallpapers/*)
randompic ='printf「%s \ n」「$ {files [RANDOM%$ {#files [ ]}]}「'
CP 」$ randompic「 desktop_picture.jpg
CP desktop_picture.jpg在/ usr /共享/ XFCE4 /背景
killall xfdesktop在
xfdesktop' 但預計它不工作。 –
xralf
2011-04-05 12:17:41
我編輯了我的第一個答案,因爲評論功能對於發佈代碼並不是非常有用;-) – tamasgal 2011-04-05 12:21:34
試試這個在新Ubuntus:)我知道這gsettings set org.gnome.desktop.background picture-uri file:///path/to/img.jpg
(尖從here
答案有點晚了,但因爲它可以幫助一些人,所以我發佈了它。
從septi的代碼加了一些修改,這裏是我的解決方案:
#!/bin/bash
wallpaperdir="$HOME/wallpaper"
files=($wallpaperdir/*)
randompic=`printf "%s\n" "${files[RANDOM % ${#files[@]}]}"`
echo -e "# xfce backdrop list\n$randompic">$HOME/.config/xfce4/desktop/backdrop.list
xfdesktop --reload
單引號必須用雙引號,以使計算機能夠正確解釋$ HOME部分進行更換。另外,您要編輯的文件是backdrop.list,而不是backdrops.list。最後,我發現在這種情況下使用killall有點過分,因爲您可以簡單地重新加載xfdesktop。
我已經在我的電腦(Linux Mint Debian Edition)上測試過它,並且它看起來很完美。
希望它有幫助。 =)
編輯:我忘了提及,你必須添加DISPLAY =:0.0之前你的命令,在crontab。這給了
*/1 * * * * DISPLAY=:0.0 wallpaper.sh
這只是我在這個問題上的做法。我不認爲這是理想的。
WALLS_PATH=/path/to/images
cd $WALLS_PATH
while [ 1 ]; do
for NEW_WALL in "$WALLS_PATH"/*; do
gsettings set org.gnome.desktop.background picture-uri "file://${NEW_WALL}"
sleep 1800
done
done
對於gnome3,您需要使用gsettings而不是gconftool。
但是,如果你要通過cron執行腳本,它將無法工作。
我已經嘗試了很多.sh腳本,但沒有人爲我工作。
最後,我固定它使用從文件夾中加載的隨機牆紙這個python腳本:
#!/usr/bin/env python
#coding: utf8
import os,random
setup = "/path_to_folder/" + random.choice(os.listdir("/path_to_folder/"))
os.system("DISPLAY=:0 GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri 'file://%s'" %(setup))
希望它可以幫助的人與我同樣的問題!
這Gnome的工作對我來說:
#!/bin/bash
DIR="/home/user/Pictures/wallpapers"
PIC=$(find $DIR -type f -maxdepth 1 | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$PIC"
一個簡短的說明:不要依賴/解析'ls'結果,'find'更適合。 – 2017-10-12 08:17:10
也許這應該askubuntu.com問? – Kaivosukeltaja 2011-04-05 11:15:45
這裏有5259個問答,標籤bash。在askubuntu上只有144.問題是關於編程。 Ubuntu更多的是關於桌面環境。 – xralf 2011-04-05 12:21:54
基本上這個答案取決於你的**桌面環境** /窗口管理器。這個問題中的每個人,包括OP似乎使用Gnome,所以使用gnome工具的答案很有效。對於使用KDE/XFCE/LXDE/MATE /其他瀏覽器的未來訪問者,請問您的DE如何以編程方式設置其壁紙。 – 2017-07-16 21:45:43