По мотивам сообщения тыц.
Немного подправил скрипт, добавил выбор диалога, выбор режима засыпания и выбор плеера.
Раньше гибернация не очень то работала, сейчас стало лучше по этому снова вспомнил про этот будильник. Теперь использую спящий режим с сохранением на диск по умолчанию.
#!/bin/bash
#######
## Выбор режима засыпания
#######
#SUSP=$1
## Засыпание с сохранением в оперативную память.
#SUSP=mem
## Засыпание с сохранением на диск.
SUSP=disk
# Выбор диалога
#DIALOG=zenity
DIALOG=yad
# Выбор плеера
#PLAYER=mplayer
PLAYER=mpv
tm="$($DIALOG --entry \
--title="Время подъема!" \
--text="Введите время формат 00:00" \
--entry-text "00:00")"
if [ "$?" -eq "1" ] ; then exit 0
fi
# громкость
volume=10
volume_max=90
folder=~/"Documents/MY/MUSIC/chingishan/"
player_start()
{
# убиваем все процессы player-а
kill -9 $(pidof $PLAYER)
# включаем случайную мелодию с бесконечным повтором
if [ -z "$1" ] ; then
$PLAYER -loop 0 -shuffle "$folder"* &> /dev/null &
fi
}
# Проверка формата времени 16:41
if [[ "$tm" == [0-9]:[0-9][0-9] ]] || [[ "$tm" == [0-9][0-9]:[0-9][0-9] ]] ; then
tm=$tm
else
$DIALOG --info \
--text="Неверный формат времени" &&
exit 0
fi
date1=$(date -d "`date +%m/%d/%y` $tm" +%s)
date2=$(date -d "`date +%m/%d/%y` $tm tomorrow" +%s)
if [[ $date1 < `date -u +%s` ]] ; then
date=$(echo $[$date2-`date -u +%s`])
else
date=$(echo $[$date1-`date -u +%s`])
fi
# засыпаем
sudo rtcwake -m $SUSP -s $date
# устанавливаем громкость
amixer -q set Master $volume%
player_start
# повышаем уровень громкости
while true ; do
amixer sset Master 1%+ &> /dev/null
volume=$(( $volume+1 ))
if [ $volume -eq $volume_max ] ; then
break
fi
sleep 1 # задержка повышения громкости
done &
$DIALOG --info --text="Отключить будильник"
player_start false
exit 0
, увидел здесь где-то, написал то ли verg, то ли yars, местный поиск не выдаёт, значит на форуме Магеи xxblx
