Wallpapers aleatórios no Fluxbox

Publicado por Sandro Marcell 24/01/2009

[ Hits: 5.887 ]

Homepage: http://sanmarcell.wordpress.com

Download randwall.pl




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. =)

  



Esconder código-fonte

#!/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

Scripts recomendados

Role-Playing Script

Login AUDIT

Testando a agilidade do sistema de arquivos

Audacious X-Chat Plugin

Índice (Logaritmo Discreto) em Perl


  

Comentários
[1] Comentário enviado por Minions em 27/10/2020 - 23:38h


Wallpapers aleatórios no Fluxbox

# Xorg -version

X.Org X Server 1.18.3
Release Date: 2016-04-04


# tail -f /var/log/Xorg.0.log
[ 47580.890] Using O_TMPFILE
[ 47583.653] Using O_TMPFILE
[ 47585.674] Using O_TMPFILE
[ 47594.736] Using O_TMPFILE
[ 47625.467] Using O_TMPFILE


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts