#!/bin/sh
function createmenu
{
export menudesc=`stty -a|grep rows|cut -f 2-6 -d \;|cut -f 3,5,8 -d \ |tr \; \ |sed s/"  "/" "/|sed s/"  "/" "/`
echo whiptail --menu `cat $1|head -n 1` `echo -n $menudesc` `cat $1|tail -n 1`>/tmp/menu
chmod 755 /tmp/menu
/tmp/menu 2>/tmp/choice
export choice=`cat /tmp/choice`
rm /tmp/choice /tmp/menu
}
function createdynamicmenu
{
$@>/tmp/itemlist
export title="\"`cat /tmp/itemlist|wc -l` items available\""
export counter="1"
export menudesc=`stty -a|grep rows|cut -f 2-6 -d \;|cut -f 3,5,8 -d \ |tr \; \ |sed s/"  "/" "/|sed s/"  "/" "/`
echo $title > /tmp/dynmenu
for item in `cat /tmp/itemlist`;do echo -n "\"$counter\"" "\"$item\" " >>/tmp/dynmenu;export counter=$(($counter+1));done
createmenu /tmp/dynmenu
rm /tmp/dynmenu
}
function GetCurrentTune
{
export FORMATTEDOLDTUNE=`cat /bin/bootcrypt|grep GRUB_INIT_TUNE|head -n 1|tr -d \"|sed "s|export GRUB_INIT_TUNE=||g"`
export GRUB_INIT_TUNE=$FORMATTEDOLDTUNE
}
function TestTune
{
TEMPO=""
FREQ=""
TUNE=""
for VAL in $GRUB_INIT_TUNE; do 
if [ "$TEMPO" == "" ]; then
TEMPO=$((60000 / $VAL))
elif [ "$FREQ" == "" ];then 
FREQ=$VAL;
elif [ "$TUNE" == "" ]; then
TUNE=" sbeep $FREQ $((TEMPO * $VAL))"
FREQ=""
else
test "$FREQ" == "0" || TUNE="$TUNE;sbeep $FREQ $((TEMPO * VAL))"
FREQ=""
fi;
done
echo $TUNE > /tmp/tune
chmod 700 /tmp/tune
/tmp/tune
rm /tmp/tune
}
function PreviewCurrent
{
TestTune $GRUB_INIT_TUNE
}
function ChangeTune
{
echo "Simple Beep">/tmp/tunelist
echo "On Wisconsin">>/tmp/tunelist
echo "Close Encounters">>/tmp/tunelist
echo "Twinkle, Twinkle">>/tmp/tunelist
echo "Shave and a Haircut">>/tmp/tunelist
echo "Star Wars Imperial March">>/tmp/tunelist
echo "Goeman Tune By theblindgamer50">>/tmp/tunelist
echo "Fur Elise (note long)" >> /tmp/tunelist
echo "Berlioz's extract from Sabbath Night of Symphonie Fantastique"  >> /tmp/tunelist
echo "Oldskool Batman tune" >> /tmp/tunelist
echo "Legend of Zelda tune" >> /tmp/tunelist
echo "Super Mario"  >> /tmp/tunelist
echo "Super Mario Alternate" >> /tmp/tunelist
echo "Mario Mushroom" >> /tmp/tunelist
echo "My Little Pony"  >> /tmp/tunelist
echo "Wolfenstein 3D" >> /tmp/tunelist
echo "Mall (Nothing Special)" >> /tmp/tunelist
echo "Final Countdown" >> /tmp/tunelist
echo "Xie-Jelei's Tune" >> /tmp/tunelist
echo "Random tune" >> /tmp/tunelist
echo "Fleetwood Mac: The Chain Bass Riff (about 5 seconds)" >> /tmp/tunelist
echo "Fleetwood Mac: The Chain Bass Riff Extended Version (WARNING, 25 SECONDS)" >> /tmp/tunelist
echo "goemon toon, by zseli22" >> /tmp/tunelist
echo "exit without change">>/tmp/tunelist
echo "sh -c \"cat /tmp/tunelist | sed s/\ /_/g\"">/tmp/editcmd
chmod 755 /tmp/editcmd
createdynamicmenu /tmp/editcmd
rm /tmp/editcmd
case "$choice" in
1)
export GRUB_INIT_TUNE="480 440 1"
break
;;
2)
export GRUB_INIT_TUNE="600 294 5 277 2 330 4 294 5"
break
;;
3)
export GRUB_INIT_TUNE="220 900 2 1000 2 800 2 400 2 600 3"
break
;;
4)
export GRUB_INIT_TUNE="300 294 1 294 1 440 1 440 1 494 1 494 1 440 2"
break
;;
5)
export GRUB_INIT_TUNE="400 523 2 392 1 392 1 440 2 392 2 1 2 494 2 523 2"
break
;;
6)
export GRUB_INIT_TUNE="480 440 4 440 4 440 4 349 3 523 1 440 4 349 3 523 1 440 8 659 4 659 4 659 4 698 3 523 1 415 4 349 3 523 1 440 8"
break
;;
7)
export GRUB_INIT_TUNE="300 300 3 340 1 404 2 340 1 404 1 447 1 500 1 447 1 404 1 340 2"
break
;;
8)
export GRUB_INIT_TUNE="480 420 1 400 1 420 1 400 1 420 1 315 1 370 1 335 1 282 3 180 1 215 1 282 1 315 3 213 1 262 1 315 1 335 3 213 1 420 1 400 1 420 1 400 1 420 1 315 1 370 1 335 1 282 3 180 1 215 1 282 1 315 3 213 1 330 1 315 1 282 3"
break
;;
9)
export GRUB_INIT_TUNE="312 262 3 247 3 262 3 220 3 247 3 196 3 220 3 220 3 262 3 262 3 294 3 262 3 247 3 220 3 196 3 247 3 262 3 247 5 220 1 220 5"
break
;;
10)
export GRUB_INIT_TUNE="380 120 1 140 1 160 1 200 8 190 4"
break
;;
11)
export GRUB_INIT_TUNE="12000 440 100 0 1 329 150 440 50 0 1 440 25 493 25 523 25 587 25 659 200"
break
;;
12)
export GRUB_INIT_TUNE="1000 334 1 334 1 0 1 334 1 0 1 261 1 334 1 0 1 392 2 0 4 196 2"
break
;;
13)
export GRUB_INIT_TUNE="480 165 2 165 2 165 3 554 1 587 1 554 2 370 1 554 1 523 2 349 1 523 1 494 3 165 2 165 2 165 2"
break
;;
14)
export GRUB_INIT_TUNE="1750 523 1 392 1 523 1 659 1 784 1 1047 1 784 1 415 1 523 1 622 1 831 1 622 1 831 1 1046 1 1244 1 1661 1 1244 1 466 1 587 1 698 1 932 1 1175 1 1397 1 1865 1 1397 1"
break
;;
15)
export GRUB_INIT_TUNE="2400 587 18 554 4 587 8 659 12 587 16 0 10 587 4 659 4 740 8 587 4 784 12 740 8 659 8 587 4 740 20 587 40"
break
;;
16)
export GRUB_INIT_TUNE="300 131 1 196 1 196 1 196 1 294 1 196 1 294 1 196 1 131 1"
break
;;
17)
export GRUB_INIT_TUNE="180 440 1 554 1 659 1"
break
;;
18)
export GRUB_INIT_TUNE="480 554 1 494 1 554 4 370 6 10 3 587 1 554 1 587 2 554 2 494 6"
break
;;
19)
export GRUB_INIT_TUNE="2000 400 4 0 1 500 4 0 1 600 4 0 1 800 6"
break
;;
20)
export GRUB_INIT_TUNE="480 220 1 277 1 330 1 440 1 185 1 220 1 277 1 370 1 294 1 370 1 440 1 587 1 330 1 415 1 494 1 659 1"
break
;;
21)
export GRUB_INIT_TUNE="304 55 5 0 1 55 1 62 1 65 2 62 1 55 1 49 1 55 1 62 2 41 8"
break
;;
22)
export GRUB_INIT_TUNE="9120 55 150 0 30 55 30 62 30 65 60 62 30 55 30 49 30 55 30 62 60 41 360 0 120 55 150 0 30 55 30 62 30 65 60 62 30 55 30 49 30 55 30 62 60 41 360 0 60 41 12 42 3 43 3 44 3 45 3 46 6 47 3 48 3 49 6 50 3 51 3 52 6 53 3 54 3 55 150 0 30 55 30 62 30 65 60 62 30 55 30 49 30 55 30 62 60 41 240 82 20 0 10 82 26 0 4 82 26 0 4 82 26 0 4 82 56 0 4 82 60 55 150 0 30 55 30 62 30 65 60 62 30 55 30 49 30 55 30 62 60 41 360 0 120"
break
;;
23)
export GRUB_INIT_TUNE="1100 293 8 0 4 330 4 392 6 440 1 392 1 330 4 392 4 440 6 494 2 440 4 392 2 440 1 392 1 330 8"
break
;;
24)
exit 0
break
;;
esac
echo $GRUB_INIT_TUNE
TestTune $GRUB_INIT_TUNE
echo "\"use this tune on startup? \"">/tmp/tuneprompt
echo -n "\"y\" \"yes\" \"n\" \"no\"">>/tmp/tuneprompt
createmenu /tmp/tuneprompt
rm /tmp/tuneprompt
case "$choice" in
y)
echo "sed -i 's/$FORMATTEDOLDTUNE/$GRUB_INIT_TUNE/' /bin/bootcrypt">/tmp/bootchange
echo "bootcrypt">>/tmp/bootchange
chmod 755 /tmp/bootchange
sudo /tmp/bootchange
rm /tmp/bootchange
echo "Boot Sound has been successfully updated. Reboot to hear changes. Have a nice day! "
exit 0
break
;;
n)
exit 1
esac
}
function main
{
GetCurrentTune
echo "\"Your current grub tune is: $FORMATTEDOLDTUNE\"">/tmp/mainprompt
echo "\"p\" \"preview\" \"c\" \"change\"">>/tmp/mainprompt
createmenu /tmp/mainprompt
rm /tmp/mainprompt
case "$choice" in
p)
PreviewCurrent
main
break
;;
c)
ChangeTune
break
;;
esac
}
main
