2011-04-05 12 views
10

क्या आप सबसे आसान संभव शैल स्क्रिप्ट लिख सकते हैं जो नियमित अंतराल (उदा। 1 मिनट) में डेस्कटॉप वॉलपेपर (उबंटू में) को बदल देगा।शैल स्क्रिप्ट डेस्कटॉप वॉलपेपर बदल रहा है

वॉलपेपर विशेष निर्देशिका (जैसे $ HOME/wallpapers) में सहेजे जाएंगे। मुझे केवल बुनियादी कार्यक्षमता की आवश्यकता है।

1) $HOME/wallpapers
2 से यादृच्छिक वॉलपेपर चुनें) डेस्कटॉप
3) क्रॉन सेट पर वॉलपेपर के रूप में सेट स्क्रिप्ट हर मिनट (नहीं प्रश्न का हिस्सा) को चलाने के लिए।

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

संपादित करें:

+0

हो सकता है कि इस askubuntu.com पर कहा जाना चाहिए? – Kaivosukeltaja

+6

यहां 525 9 प्रश्न टैग किए गए हैं। Askubuntu केवल 144 पर। सवाल प्रोग्रामिंग के बारे में है। उबंटू डेस्कटॉप वातावरण के बारे में अधिक है। – xralf

+0

मूल रूप से इसका उत्तर आपके ** डेस्कटॉप वातावरण **/विंडो-प्रबंधक पर निर्भर करता है। इस सवाल में हर कोई, सहित। ओपी जीनोम का उपयोग करने लगता है, इसलिए उत्तर कार्यों का उपयोग कर gnome-tools। केडीई/एक्सएफसीई/एलएक्सडीई/मेट/अन्य लोगों का उपयोग करने वाले भविष्य के आगंतुकों के लिए, अपने डीई से पूछें कि यह प्रोग्रामेटिक रूप से अपना वॉलपेपर कैसे सेट करता है। –

उत्तर

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 का उपयोग कर रहे हैं। यदि आपको अंतिम पंक्ति को संपादित करने की आवश्यकता नहीं है, क्योंकि मेरा उदाहरण जीनोम कन्फेटोल का उपयोग करता है।

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

धन्यवाद। मैं gnome और xfce का उपयोग कर रहा हूँ। क्या आप एक्सएफसीई में इसे कैसे बदल सकते हैं? – xralf

+0

मैंने '#!/Bin/bash
फ़ाइलें = (/ home/xralf/wallpapers/*)
randompic =' printf "% s \ n" "$ {फ़ाइलें [RANDOM% $ {# फ़ाइलें [@ ]}]} "'
cp "$ randompic" desktop_picture.jpg
सीपी desktop_picture.jpg/usr/share/xfce4/पृष्ठभूमि
killall xfdesktop
xfdesktop' लेकिन यह अपेक्षा के अनुरूप काम नहीं करता है। – xralf

+0

मैंने अपना पहला जवाब संपादित किया, क्योंकि टिप्पणी फ़ंक्शन कोड पोस्ट करने के लिए बहुत उपयोगी नहीं है ;-) – tamasgal

0

नए Ubuntus में इस प्रयास करें:: gsettings set org.gnome.desktop.background picture-uri file:///path/to/img.jpg (here से टिप)

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 को पुनः लोड कर सकते हैं।

मैंने इसे अपने कंप्यूटर (लिनक्स मिंट डेबियन संस्करण) पर परीक्षण किया है और ऐसा लगता है कि यह पूरी तरह से काम करता है।

उम्मीद है कि यह मदद करता है। =)

संपादित करें: मैं यह उल्लेख करना भूल गया था कि आपको 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 का उपयोग करने की आवश्यकता है।

लेकिन यदि आप स्क्रिप्ट के माध्यम से स्क्रिप्ट निष्पादित करने जा रहे हैं तो यह काम नहीं करेगा।

मैंने बहुत सी। स्क्रिप्ट की कोशिश की है लेकिन कोई भी मेरे लिए काम नहीं करता है।

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

यह 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" 
+0

हालांकि एक संक्षिप्त नोट: 'ls' परिणामों पर भरोसा न करें, 'ढूंढें' अधिक उपयुक्त है। –

संबंधित मुद्दे