Wallpapers aleatórios no Fluxbox
Publicado por Sandro Marcell 24/01/2009
[ Hits: 5.902 ]
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
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI