Wallpapers aleatórios no Fluxbox
Publicado por Sandro Marcell 24/01/2009
[ Hits: 6.131 ]
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
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Estou tentando ser legalista, mas tá complicado! (1)
PERFIL CRIADO NO SAMBA AD DC NÃO LOGA NO WINDOWS 10 E 11 (2)
É normal não gostar de KDE? (17)
PERFIL CRIADO NO SAMBA AD DC NÃO LOGA NO WINDOWS 10 E 11 (1)









