você está aqui: Home  → Arquivo de Mensagens

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

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script