ruby wallpaperDaemon.rb parametro1 parametro2 parametro3..N&
donde
parametro1 = Ruta en la cual se encuentran las imágenes para el fondo de pantalla
parametro2 = Tiempo en segundos para realizar el cambio de pantalla
parametro3..N = Extensión de archivos a ser tomadas en cuenta para cambiar el fondo de pantalla
& = Escribir al final para que se ejecute en segundo plano
Por ejemplo el comando completo para ejecutar el script seria:
ruby wallpaperDaemon.rb /home/alfredo/Imágenes/Wallpaper/ 10 png jpg bmp jpeg&
#!/usr/bin/env ruby
require 'rubygems'
require 'gconf2'
class WallpaperChanger
def initialize(w_ruta)
@w_directorio = w_ruta
@w_tipos = []
@w_imagenes = []
end
def buscarWallpaper
buscarDirTipo(@w_directorio)
end
def wallpaperAleatorio()
w_cliente = GConf::Client.default
w_min = 0
w_max = @w_imagenes.size-1
w_cliente['/desktop/gnome/background/picture_filename'] = @w_imagenes[rand(w_min+rand(w_max))]
end
def agregarTipo(w_tipo)
if @w_tipos.include?(w_tipo)
puts "#{w_tipo} ya se ha ingresado"
else
@w_tipos.push(w_tipo)
end
end
private
def buscarDirTipo(w_directorio)
Dir.new(w_directorio).each do |w_archivo|
w_ruta = w_directorio + '/' + w_archivo
unless (w_archivo =~ /^\.+/)
File.directory?(w_ruta) ? buscarDirTipo(w_ruta) : verificarTipo(w_ruta)
end
end
end
def verificarTipo(w_archivo)
@w_tipos.each do |extension|
if w_archivo.end_with?(extension)
agregarImagen(w_archivo)
end
end
end
def agregarImagen(w_archivo)
@w_imagenes.push(w_archivo)
end
end
#REVISO LA EXISTENCIA DEL DIRECTORIO
if File.directory? ARGV[0]
w_directorio = ARGV[0]
else
raise 'Directorio no valido'
end
#VALIDO EL TIEMPO PARA CAMBIAR EL FONDO DE PANTALLA
if /[1-9][0-9]*/ =~ ARGV[1]
w_tiempo = ARGV[1].to_i
else
raise 'Tiempo no valido'
end
#CREANDO EL CAMBIADOR DE WALLPAPER
w_wallpaper = WallpaperChanger.new(w_directorio)
#AGREGANDO LOS TIPO DE EXTENSIONES DISPONIBLES
2.upto(ARGV.size-1) {|parametro| w_wallpaper.agregarTipo(ARGV[parametro])}
#BUSCO ARCHIVOS QUE COINCIDAN CON LOS TIPOS INGRESADOS
w_wallpaper.buscarWallpaper
loop do
w_wallpaper.wallpaperAleatorio
sleep(w_tiempo)
end
Megaupload: http://www.megaupload.com/?d=BB3700PD