2011-04-05 1 views
10

일정한 간격 (예 : 1 분)으로 바탕 화면 배경 무늬 (우분투)를 바꿀 수있는 가장 쉬운 쉘 스크립트를 작성할 수 있습니까?쉘 스크립트가 데스크탑 배경 화면을 바꾼다

배경 화면은 특정 디렉토리 (예 : $ HOME/월페이퍼)에 저장됩니다. 기본 기능 만 필요합니다.

1)
에서 임의의 벽지를 선택) 스크립트를 모든 분 (질문의 일부)를 실행하는 데스크톱
3) 설정 크론에 배경 화면으로 설정합니다.

*/1  *  *  *  *   /bin/bash /path/to/script.sh 

편집 :

+0

은 어쩌면이 askubuntu.com에 질문해야 하는가? – Kaivosukeltaja

+6

여기에 bash라는 태그가 달린 5259 개의 질문이 있습니다. askubuntu에만 144. 질문은 프로그래밍에 관한 것입니다. 우분투는 데스크톱 환경에 관한 것입니다. – xralf

+0

기본적으로 이에 대한 대답은 ** 데스크톱 환경 **/window-manager에 따라 다릅니다. 이 질문에 포함 된 모든 사람들. OP는 Gnome을 사용하는 것처럼 보이므로 gnome-tools에서 답을 사용합니다. KDE/XFCE/LXDE/MATE/others를 사용하는 미래의 방문객을 위해 프로그래밍 방식으로 배경 화면을 설정하는 방법을 DE에 문의하십시오. –

답변

7
#!/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"와 편집은 (당신이 파일의 끝에 줄을 넣어 편집기를 실행) 나는 가정 당신은 그놈을 사용하고 있습니다. 이 예에서는 Gnome Conftool을 사용하기 때문에 마지막 줄을 편집 할 필요가 없습니다.

echo -e “# xfce backdrop list\n$randompic”>$HOME/.config/xfce4/desktop/backdrops.list  
killall -USR1 xfdesktop 
+0

고맙습니다. 나는 gnome과 xfce를 사용하고 있습니다. XFCE에서도 변경하는 방법을 알고 있습니까? – xralf

+0

내가 사용 '#!/빈/bash는
파일 = (/ 홈/xralf/배경 화면/*)
randompic ='의 printf "% s의 \ 없음" "$ {파일 [RANDOM %의 $ {# 파일 [@ ]}]} "'
CP"$의 randompic "desktop_picture.jpg
CP의 desktop_picture.jpg는/usr/share/들어 xfce4/백 드롭
killall는 xfdesktop
xfdesktop' 하지만 예상대로 작동하지 않습니다. – xralf

+0

코멘트 기능이 코드 게시에 매우 유용하지 않기 때문에 첫 번째 답변을 편집했습니다. – tamasgal

0

새로운 Ubuntus이 시도 : here에서 gsettings set org.gnome.desktop.background picture-uri file:///path/to/img.jpg (끝)

1

나는 이것을 알고;)

가 XFCE의 배경을 변경하려면, 당신은 gconftool-2에하기로 라인을 변경해야합니다 대답은 늦지 만 일부 사람들에게 도움이 될 수 있으므로 게시하고 있습니다.

#!/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 부분을 해석하는 컴퓨터의 순서로 큰 따옴표로 교체해야합니다 : septi의 코드 플러스 일부 수정에서

, 여기 내 솔루션입니다. 또한 편집하려는 파일은 backdrop.list가 아니라 backdrops.list입니다. 그리고 마지막으로 xfdesktop을 다시로드 할 수 있기 때문에 killall을 사용하는 것이 과도한 일임을 알 수 있습니다.

내 컴퓨터 (Linux Mint Debian Edition)에서 테스트 해본 결과 완벽하게 작동하는 것 같습니다.

는 도움이되기를 바랍니다. =)

편집 : 나는 crontab에 명령 앞에 DISPLAY = : 0.0을 추가해야한다는 점을 잊어 버렸다. 그게

*/1 * * * * DISPLAY=:0.0 wallpaper.sh 
2

이것은이 문제에 대한 나의 접근 방식이다. 나는 그것이 이상적인 것이라고 주장하지 않는다.

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 
-1

gnome3의 경우 gconftool 대신 gsettings를 사용해야합니다.

그러나 스크립트를 실행하려고하면 작동하지 않습니다.

많은 .sh 스크립트를 시도했지만 아무도 저에게 적합하지 않습니다.

#!/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)) 

가 내 같은 문제를 가진 사람에 대한 희망이 도움 : 끝에

, 난 폴더에서 임의의 벽지를로드이 파이썬 스크립트를 사용하여 고정!

0

이 그놈에 나를 위해 일한 :

#!/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" 
+0

단 한가지 짧은 메모 :'ls' 결과에 의존하지 말고'find'가 더 적합합니다. –