você está aqui: Home  → Arquivo de Mensagens Curso Gratuito sobre Expressões Regulares, com o Prof.  Julio Neves

Planos de fundo aleatórios no GRUB

Colaboração: Anderson H. Dalcy

Data de Publicação: 18 de January de 2010

Bem, lendo a recente dica a respeito do pacote "grub-splashimages" veiculada aqui na Dicas-L, achei o sistema de customização do GRUB bem interessante e flexível.

Mas como, em geral, costumo enjoar rápido de imagens de fundo e afins, dei uma pesquisada e resolvi escrever um script que mudasse a imagem de fundo a cada boot. Venho aqui então compartilhá-lho com todos a quem possa interessar.

Basta salvá-lo e dar permissão de execução. Para que a troca ocorra em todo boot, configure-o para ser executado na inicialização do sistema. No meu caso, usei a opção "Aplicativos de sessão" do próprio Gnome para isso, mas existem outras maneiras, mesmo sem ambiente gráfico. E uma observação: antes de executá-lo pela primeira vez, modifique a variável DIR (que encontra-se no topo do script, vazia) e adicione o caminho para a pasta que contém as imagens "candidatas" a plano de fundo do GRUB. Outra coisa importante a se atentar é que o script é "burro", não sabendo diferenciar imagens de outros formatos de arquivos. Portanto não use uma pasta que contenha outros arquivos que não sejam imagens (nos testes que fiz aqui, ele travou consumindo 100% de processamento ao tenta definir uma "não-imagem" como plano de fundo).

Download do Script

#! /bin/bash
# Script para alterar a imagem de fundo do GRUB aleatóriamente a cada boot

# caminho do diretório contendo as imagens de origem. Altere de acordo com
# suas necessidades. Preferencialmente use o caminho absoluto

DIR="" 

## grande POG para determinar qual o programa usado para invocar poderes de ROOT
TIAKE_NORIS="gksu"
if [ -z "`which gksu`" ]
then
	if [ -z "`which kdesu`" ]
	then
		TIAKE_NORIS="sudo"
	else
		TIAKE_NORIS="kdesu"
	fi
fi	

	
#cria o diretório de trabalho na home do usuário, se não existir
[ -e $HOME/.gbg-changer ] || mkdir "$HOME/.gbg-changer" 

#gambiarra para que quem não tem o pacote "grub-splashimages" possa usar este script também
[ -e /boot/grub/splashimages ] || $TIAKE_NORIS mkdir /boot/grub/splashimages 

#dá permissão de gravar no diretório splashimages caso isso não seja permitido 
[ -w /boot/grub/splashimages ] || $TIAKE_NORIS chmod 777 /boot/grub/splashimages 


[ -z "`cat /boot/grub/menu.lst | grep /boot/grub/splashimages/gbg-changer.xpm.gz`" ] && xmessage -center -title 'gbg-changer' 'Por favor, adicione manualmente a entrada ao arquivo "/boot/grub/menu.lst"
para usar como splash o arquivo "/boot/grub/splashimages/gbg-changer.xpm.gz"

Ela sera algo como:

     splashimage=(hdX,Y)/boot/grub/splashimages/gbg-changer.xpm.gz

onde X e Y variam de acordo com a disposicao das particoes do sistema.'


function fillList()
{
  ls -B1 $DIR > $HOME/.gbg-changer/list
  cat -n $HOME/.gbg-changer/list > $HOME/.gbg-changer/indexedList
}

function getLimit()
{
  LIMIT=`wc -l "$HOME/.gbg-changer/list"`
  LIMIT=${LIMIT%$HOME/.gbg-changer/list}
}

function choose()
{
  CHOSEN=$RANDOM
  let "CHOSEN %= $LIMIT"
  CHOSEN=$(($CHOSEN+1))
}

function getFile()
{
  FILE=`cat $HOME/.gbg-changer/indexedList | grep -w "  $CHOSEN"`
  FILE="$DIR/${FILE#*"$CHOSEN	"}"
}

function checkPrevious()
{
  PREVIOUS=`cat $HOME/.gbg-changer/previous`
  if [ "$PREVIOUS" != "$FILE" ]
  then
    setBg
  else
    choose
    getFile
    checkPrevious
  fi
  echo "$FILE" > $HOME/.gbg-changer/previous
}

function setBg()
{
  convert "$FILE" -resize 640x480! -colors 14 /tmp/gbg-changer.xpm
  gzip -c /tmp/gbg-changer.xpm > /boot/grub/splashimages/gbg-changer.xpm.gz
  echo "File ${FILE#$DIR'/'} foi definido como plano de fundo do GRUB!"
}

fillList
getLimit
choose
getFile
checkPrevious


Veja a relação completa dos artigos de Anderson H. Dalcy