Скрипт предназначенный для отправления компьютер в спящий режим, и обеспечивающий его просыпание определенного числа в определенное время, и запускающий какое нибудь приложение либо скрипт при просыпании.
Для работы использует диалог
yad либо
zenity и утилиту
rtcwake.
За выбор режима засыпания отвечает переменная
SUSP, т.е. засыпание с сохранением на диск или с сохранением в оперативную память.
Код: Выделить всё
#!/bin/bash
#######
## Выбор режима засыпания
#######
#SUSP=$1
## Засыпание с сохранением в оперативную память.
#SUSP=mem
## Засыпание с сохранением на диск.
SUSP=disk
# Выбор диалога
#DIALOG=zenity
DIALOG=yad
ENV_CALLENDAR="$($DIALOG --calendar)"
if [ "$?" -eq "1" ] ; then exit 0
fi
MASS_DATE=($(echo $ENV_CALLENDAR|sed 's/\./ /g'))
tm="$($DIALOG --entry \
--title="Время подъема!" \
--text="Введите время формат 00:00" \
--entry-text "00:00")"
if [ "$?" -eq "1" ] ; then exit 0
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 "${MASS_DATE[1]}/${MASS_DATE[0]}/${MASS_DATE[2]} $tm" +%s)
if [[ $date1 > `date -u +%s` ]] ; then
date=$(echo $[$date1-`date -u +%s`])
else
$DIALOG --info \
--text="Это время уже прошло!"
exit 0
fi
# Выбор скрипта запуска
cd ~/bin
SCRIPTS="$($DIALOG --title="Выбор скрипта!" \
--text="Выберите файл!" \
--file-selection)"
if [ "$?" -eq "1" ] ; then
SCRIPTS="$HOME/bin/tmplayer.sh"
fi
# засыпаем
sudo rtcwake -m $SUSP -s $date
$SCRIPTS
exit 0
После выбора даты и времени появляется диалог выбора файла скрипта, который будет запускаться при пробуждении, если нажать отмена, то по умолчанию используется скрипт запускающий случайную мелодию с постепенным увеличением громкости
~/bin/tmplayer.sh:
Код: Выделить всё
#!/bin/bash
# Выбор плеера
#PLAYER=mplayer
PLAYER=mpv
# Выбор диалога
#DIALOG=zenity
DIALOG=yad
# громкость
volume=10
volume_max=80
# Тут должен быть указан ваш каталог с музыкой!
folder=~/"Documents/MY/MUSIC/chingishan/"
player_start()
{
# убиваем все процессы player-а
kill -9 $(pidof $PLAYER) &>/dev/null
# включаем случайную мелодию с бесконечным повтором
if [ -z "$1" ] ; then
$PLAYER -loop 0 -shuffle "$folder"* &> /dev/null &
fi
}
# устанавливаем громкость
amixer -q set Master $volume%
player_start
# повышаем уровень громкости
for (( volume=$volume; volume<$volume_max; volume++ )); do
amixer sset Master 1%+ &> /dev/null
sleep 1 # задержка повышения громкости
done &
$DIALOG --info --text="Отключить будильник"
player_start false
exit 0
У меня этот скрипт навешен на отдельный пункт меню в Openbox, в последнее время использую с сохранением на диск, довольно хорошо помогает когда в
Gentoo идет полная пере сборка мира, отправить комп в сон и пробудить в определенное время.
При желании можно выкладывать интересные скрипты обеспечивающие определенную автоматизацию, и которые можно использовать совместно с данным скриптом.
Зы: Утилите
rtcwake должны быть даны права
root, строчка
в /etc/sudoers.