#! /bin/bash
#Script para alterar a imagem de fundo do GRUB aleatóriamente a cada boot
DIR="" #caminho do diretório contendo as imagens de origem. Altere de acordo com suas necessidades. Preferencialmente use o caminho absoluto
## 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
[ -e $HOME/.gbg-changer ] || mkdir "$HOME/.gbg-changer" #cria o diretório de trabalho na home do usuário, se não existir
[ -e /boot/grub/splashimages ] || $TIAKE_NORIS mkdir /boot/grub/splashimages #gambiarra para que quem não tem o pacote "grub-splashimages" possa usar este script também
[ -w /boot/grub/splashimages ] || $TIAKE_NORIS chmod 777 /boot/grub/splashimages #dá permissão de gravar no diretório splashimages caso isso não seja permitido
[ -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