View previous topic :: View next topic |
Author |
Message |
Luca89 Advocate
Joined: 27 Apr 2005 Posts: 2107 Location: Agrigento (Italy)
|
Posted: Sat Mar 11, 2006 10:13 pm Post subject: [mini-tool] scriptino per cambiare il tema bootsplash |
|
|
Questo è un piccolo scriptino che permette di cambiare il tema per il bootsplash (splashutils). Monta automaticamente la /boot se necessario, crea il file initramfs in /boot e aggiorna il grub.conf per cambiare il parametro "splash=theme:" con il tema nuovo che volete. Nulla di che insomma, però a me a volte fa comodo e magari può essere comodo anche a voi. Per esempio messo in local.stop potrebbe caricare un tema random e così ad ogni riavvio ci si ritrova con un tema diverso. Comunque bando alle ciance, eccolo:
Code: | #!/bin/bash
# Author: Luca Marturana <lucamarturana@gmail.com>
# THIS PROGRAM CAMES WITH ABSOLUTELY NO WARRANTY, USE IT ON YOUR OWN RISK
# Distributed under GPLv2
pn="mksplash"
pv="0.4"
# Parametri predefiniti
boot_dir=/boot
initrd=$boot_dir/fbsplash
theme_dir=/etc/splash/
config_file=~/.$pn
grub_conf=$boot_dir/grub/grub.conf
res=1280x1024
mount_boot="no"
# Carico le variabili settate nel file di configurazione (se esiste)
[ -e $config_file ] && . $config_file
help() {
cat <<EOF
Program: $pn
Version: $pv
Usage: $pn theme \$theme_name
Create initrd with the theme name specified
$pn set-var variable_name variable_value
Possible variables are:
res => resolution (ex. 1280x1024)
mount_boot => automatically mount $boot_dir (yes or no)
grub_conf => grub configuration file
initrd => initramfs file
$pn show
Shows themes existing on $theme_dir
EOF
}
root_verify() {
[ $EUID != 0 ] && echo "This action must be run as root" && exit 1
}
ebegin () {
# Usage: $1 => message
echo -ne "\e[1;32m *\e[0m $1 ..."
}
edone() {
# Usage: $1 => exitcode; $2 => error message
if [ $1 != 0 ]; then
echo -e "\n\e[1;31m * \e[0m Error: $2 \e[1;31m!!!\e[0m"
exit 1;
else
echo -e " \e[1;34m[ \e[32mdone \e[34m]\e[0m"
fi
}
set_var() {
root_verify;
[[ -z $1 || -z $2 ]] && edone 1 "Wrong values specified"
[ ! -e $config_file ] && touch $config_file
if [ -z "`grep $1 $config_file`" ]; then
echo "$1=$2" >> $config_file
else
sed -ie "s/\(^$1=\).*/\1$2/g" $config_file
fi
}
check_boot() {
[[ -n `grep $boot_dir /etc/fstab` && -z `mount | grep $boot_dir` ]] && {
if [ "$mount_boot" = yes ]; then
ebegin "$boot_dir isn't mounted, mounting it"
mount $boot_dir
edone $? "unable to mount $boot_dir"
else
edone 1 "$boot_dir isn't mounted"
fi
};
}
make_splash() {
root_verify;
check_boot;
if [ -d $theme_dir$1 ]; then
cd $theme_dir
ebegin "Generating initramfs image"
splash_geninitramfs -g $initrd -r $res $1 &> /dev/null
edone $? "unable to generate initrd image"
cd ~-
ebegin "Updating $grub_conf"
[ ! -e $grub_conf ] && edone 1 "$grub_conf not found"
sed -i -e "s/\(theme:\)[^ ]*/\1$1/g" $grub_conf
edone $? "Updating grub.conf failed"
else
edone 1 "theme name specified doesn\'t exist"
fi
}
case $1 in
show) ls --color=auto $theme_dir;;
set-var) set_var $2 $3;;
theme) make_splash $2;;
*) help;;
esac
|
I parametri da passargli sono:
Code: | # mksplash theme nometema |
Mette il tema nometema.
Code: | # mksplash set-var res 1280x1024 |
Setta la risoluzione a 1280x1024 (lo salva in ~/.mksplash e poi la usa per creare le nuove initrd). Tutte le altre variabili possibili le potete vedere nel codice o con "mksplash help".
L'ultima azione è quella di listare i temi presenti in /etc/splash:
End this is the end. _________________ Running Fast! |
|
Back to top |
|
|
Dr.Dran l33t
Joined: 08 Oct 2004 Posts: 766 Location: Imola - Italy
|
Posted: Sun Mar 12, 2006 10:08 am Post subject: |
|
|
Script molto carino, sono quelle piccole utility che per pigrizia uno non scriverebbe mai... visto che l'argomento è sempre quello di avere un sistema eye-candy, ma quando qualche d'uno la fa per te è sempre un piacere!
Cool very cool!!!
Grazie Luca _________________ :: [Dr.Dran] Details ::
- Linux User # 286282
- IT FreeLance Consultant
- President of ImoLUG [Imola & Faenza Linux User Group] |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|