Topic: show random image on desktop
Hello ..
one friend of mine ask me how he can show some random image on desktop without gadget ( like adesklets ). So I quickly wrote a python script to do it simply.
#!/usr/bin/python
## Thanks to : ## Lucas Rocha - http://blogs.gnome.org/lucasr/
import gtk
import os
import random
import mimetypes
import gobject
## Images directory
IMG_DIR = '/mnt/data/images/wallpaper/bg'
## Time between change ( in sec )
TIMER = 10
## Background color : HTML Color or None
BG_COLOR = "#202020"
## Position on desktop
POS_X = 1200
POS_Y = 650
## Image size
WIDTH = 210
HEIGHT = 157
## Show a border : True or False
SHOW_BORDER = True
class App():
#-----------------------------------------------------------------------
def __init__(self):
self.window = gtk.Window() ## gtk.WINDOW_TOPLEVEL)
self.window.add_events(gtk.gdk.BUTTON_PRESS_MASK)
self.window.connect("destroy", gtk.main_quit)
self.window.connect("button_press_event", self.onClick)
self.window.stick()
self.window.set_decorated(False)
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DESKTOP)
self.window.set_skip_taskbar_hint(True)
if SHOW_BORDER:
self.window.set_border_width(1)
else:
self.window.set_border_width(0)
if BG_COLOR:
self.window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(BG_COLOR))
self.img = gtk.Image()
dir_items = os.listdir(IMG_DIR)
self.items = []
for item in dir_items:
mimetype = mimetypes.guess_type(item)[0]
if mimetype and mimetype.split('/')[0] == 'image':
self.items.append(os.path.join(IMG_DIR, item))
self.img.set_size_request(WIDTH,HEIGHT)
self.set_image()
self.img.show()
self.window.add(self.img)
gobject.timeout_add(TIMER*1000, self.set_image)
self.popupMenu = gtk.Menu()
menuPopup = gtk.ImageMenuItem (gtk.STOCK_QUIT)
menuPopup.connect("activate", gtk.main_quit)
self.popupMenu.add(menuPopup)
self.popupMenu.show_all()
self.window.move(POS_X, POS_Y)
self.window.show_all()
def set_image(self, widget=None, event=None):
item = random.randint(0, len(self.items)-1)
pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(self.items[item],WIDTH,HEIGHT)
self.img.set_from_pixbuf(pixbuf)
return True
def onClick(self, widget, event, data=None):
if event.button==3: # right click
self.popupMenu.popup(None, None, None, event.button, event.time)
elif event.button==1: # left click
self.set_image()
def run(self):
gtk.main()
if __name__ == "__main__":
my_image = App()
my_image.run()Here a screenshot , I place image just below conky :
SIZE 1440 x 900 - random_image_on_desktop

Maybe it can be useful for someone ..
Bye
Last edited by ADcomp (2009-04-30 11:16:53)
ADcomp