Wallpapers aleatórios no Fluxbox
Publicado por Sandro Marcell 24/01/2009
[ Hits: 6.168 ]
Homepage: http://sanmarcell.wordpress.com
Simples Perl script que utilizado via cron, seta wallpapers aleatoriamente no Fluxbox em determinados períodos de tempo. Para utilizá-lo, basta o seguinte:
1 - Altere o código do script conforme necessário;
2 - Dê permissão de execução ao script;
3 - Edite o 'crontab' de seu usuário e adicione a seguinte linha:
0-59/10 * * * * DISPLAY=:0.0 /path/script.pl
4 - Salve e pronto!
Feito isso, o script será executado pelo cron, a cada 10min. =)
#!/usr/bin/env perl
#
# Wallpapers aleatorios no Fluxbox.
#
# Sandro Marcell (sandro_marcell@yahoo.com.br)
# Boa Vista, Roraima - 04/01/2009
#
# ATENCAO: Para utilizar este script, siga os passos abaixo:
#
# ##################################################################
# 1 - Altere o codigo do script conforme necessario;
# 2 - De permissao de execucao ao script;
# 3 - Edite o 'crontab' de seu usuario e adicione a seguinte linha:
# 0-59/10 * * * * DISPLAY=:0.0 /path/script.pl
# 4 - Salve e pronto!
# ##################################################################
#
# Seguindo os passos acima, este script sera executado pelo cron
# a cada 10 minutos! ;)
#
# Obs.:
# - O programa utilizado para setar os wallpapers e o 'feh':
# (http://linuxbrit.co.uk/feh/);
# - Altere os 'paths' utilizados pelo script, conforme os de
# seu sistema;
# - 'Evite' utilizar wallpapers com espacos em branco no nome
# (ex.: 'meu wallpaper.jpg');
# - Testado somente no Fluxbox... (Daahhhh!);
# - Script passivel de melhorias! ;)
use strict;
use warnings;
use List::Util qw(shuffle);
# Roda somente em modo grafico!
exit(1) unless("$ENV{'DISPLAY'}");
# Inicializando variaveis:
my(@wallsettercmds) = ();
my(@walls) = ();
my($walldir) = "";
my($lastwallpaper) = "";
my($lastwall) = "";
my($randwall) = "";
# Programas responsaveis por setar os wallpapers e atualizar tela:
# Obs.: '--bg-scale' e uma opcao do comando 'feh'!
@wallsettercmds = ("/usr/bin/feh" , "--bg-scale" , "/usr/bin/xrefresh");
die("${wallsettercmds[0]}: $!\n") unless(-x "$wallsettercmds[0]");
# Diretorio contendo os wallpapers (modifique conforme o seu!):
$walldir = "/home/user/wallpapers";
$lastwallpaper = "$ENV{'HOME'}/.fehbg"; # Padrao do feh. Nao altere!
# Capturando somente arquivos 'jpg/png' de '$walldir':
opendir(DIR , $walldir) or die("${walldir}: $!\n");
eval {
@walls = grep(/\.[jJpP][nNpP][gG]$/ , readdir(DIR));
};
closedir(DIR);
die("Nao ha arquivos de imagem em '${walldir}'.\n") unless(@walls);
# Qual foi o ultimo wallpaper setado?
if (-s "$lastwallpaper") {
open(FILE , "< $lastwallpaper");
$lastwall = readline(FILE);
$lastwall =~ s/.{1,}\///g; # Quero somente o nome do wall.
close(FILE);
}
RANDOMIZE: {
eval {
# 'Embaralhando' os elementos do array:
@walls = shuffle(@walls);
# Definindo o wallpaper:
$randwall = @walls[int(rand($#walls) + 0.5)];
};
};
# Nao repita o wallpaper setado anteriormente:
if ("$randwall" eq "$lastwall") {
goto(RANDOMIZE);
}
else {
# Tudo ok! Entao sete o wall definido.
system("@wallsettercmds[0,1] $walldir/" . "$randwall");
system("$wallsettercmds[2]") if (-x "$wallsettercmds[2]");
exit(0);
}
# Fim
Índice (Logaritmo Discreto) em Perl
Diminuir ou aumentar o brilho de notebook
Tirando screenshots facilmente !
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Quais os códigos mais dificeis que vcs sabem fazer? (9)
Fiz uma pergunta no fórum mas não consigo localizar (20)
Pfsense inacessivel após um periodo de tempo (1)
Não consigo instalar distro antiga no virtualbox nem direto no hd (9)









