Εναλλασόμενα Wallpapers για την επιφάνεια εργασίας στο Ubuntu 9.10
Στη νέα έκδοση των Ubuntu σε πολλούς έκανε εντύπωση το wallpaper cosmos το οποίο παρείχε μια σειρά εικόνων που ενάλλασονταν στην επιφάνεια εργασίας. Δυστυχώς όμως, δεν είναι εμφανής ο τρόπος με τον οποίο ο χρήστης μπορεί να δημιουργήσει δικά του wallpapers με εικόνες της επιλογής του, πράγμα που ίσως ενσωματωθεί σε κάποια επόμενη έκδοση.
Πάντως τέτοια wallpaper είναι εύκολο να δημιουργηθούν με τη χρήση ενός python script.
Ας δούμε αναλυτικά τα βήματα:
1. Αρχικά δημιουργούμε έναν φάκελο στην τοποθεσία /usr/share/backgrounds με το όνομα που θέλουμε να έχει το wallpaper μας. Επειδή όμως δεν έχουμε δικαίωμα εγγραφής, καθώς ο φάκελος ανήκει στο root. Εκτελούμε λοιπόν:
- Κώδικας: Επιλογή όλων
gksu nautilus
2. Mέσα στον φάκελο τοποθετούμε τις εικόνες που θέλουμε(πάλι χρειαζόμαστε δικαιώματα root).
3. Tοποθετούμε στον φάκελο το εξής python script:
- Κώδικας: Επιλογή όλων
# This program takes build the xml files needed to have a background image slideshow in Ubuntu 9.10
import os
# Configuration
duration = 1800 # Duration of frames in seconds
# Generate image list - supported formarts: jpg, png, gif, bmp
imgdir = os.getcwd()+'/'
name = os.getcwd().split('/')[-1]
os.system('ls %s*.jpg > images.lst 2>/dev/null' % (imgdir))
os.system('ls %s*.png >> images.lst 2>/dev/null' % (imgdir))
os.system('ls %s*.gif >> images.lst 2>/dev/null' % (imgdir))
os.system('ls %s*.bmp >> images.lst 2>/dev/null' % (imgdir))
imglst = open('images.lst', 'r')
images = imglst.readlines()
for i in range(len(images)): images[i] = images[i].strip('\n')
imglst.close()
# Open xml files
dir1 = "/usr/share/gnome-background-properties/"
xml1 = open("%s%s.xml"%(dir1,name), 'w')
xml2 = open("%s%s-1.xml"%(imgdir,name), 'w')
# Generate slideshow holder xml
xml1.write('<?xml version="1.0" encoding="UTF-8"?>\n')
xml1.write('<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">\n')
xml1.write('<wallpapers>\n')
xml1.write(' <wallpaper deleted="false">\n')
xml1.write(' <name>Cosmos</name>\n')
xml1.write(' <name xml:lang="en_CA">Space</name>\n')
xml1.write(' <name xml:lang="en_GB">Space</name>\n')
xml1.write(' <filename>%s%s-1.xml</filename>\n'%(imgdir,name))
xml1.write(' <options>zoom</options>\n')
xml1.write(' </wallpaper>\n')
xml1.write('</wallpapers>\n')
# Now generate slideshow details xml
# Header
xml2.write("<background>\n")
xml2.write(" <starttime>\n")
xml2.write(" <year>2009</year>\n")
xml2.write(" <month>08</month>\n")
xml2.write(" <day>04</day>\n")
xml2.write(" <hour>00</hour>\n")
xml2.write(" <minute>00</minute>\n")
xml2.write(" <second>00</second>\n")
xml2.write(" </starttime>\n")
xml2.write("<!-- This animation will start at midnight. -->\n")
# For each image, add a <static> field and a <transition> to next image
for i in range(len(images)):
xml2.write(" <static>\n")
xml2.write(" <duration>%.1f</duration>\n" % (duration))
xml2.write(" <file>%s</file>\n" % (images[i]))
xml2.write(" </static>\n")
xml2.write(" <transition>\n")
xml2.write(" <duration>5.0</duration>\n")
xml2.write(" <from>%s</from>\n" % (images[i]))
if (i+1<len(images)): n = i+1
else: n = 0
xml2.write(" <to>%s</to>\n" % (images[n]))
xml2.write(" </transition>\n")
# Footer
xml2.write("</background>\n")
# Ready
os.system('rm images.lst')
xml1.close()
xml2.close()
4. Ύστερα μεταβαίνουμε στον φάκελο που δημιουργήσαμε με ένα τερματικό και δίνουμε:
- Κώδικας: Επιλογή όλων
sudo python το_όνομα_του_script.py
Aυτό δημιουργεί τα κατάλληλα .xml αρχεία έτσι ώστε να έχετε ένα slideshow backround.
5. Επιλέγετε το wallpaper από τις ρυθμίσεις εμφάνισης. Αν όλα έχουν πάει καλά θα έχει ένα πράσινο play από κάτω.

Notes:
1. Το ξέρω πως υπάρχουν και άλλοι τρόποι να γίνει αυτο με χρήση script απλώς παραθέτω και αυτόν.
2. Πρόκειται για την πρώτη μου δημοσίευση στα how-tos για αυτό οποιαδήποτε συμβουλή-βοήθεια δεκτή καθότι είμαι και νέος στον χώρο του linux.