Будильник с помощью amarok + cron

"Вовремя не прозвонивший будильник изменил судьбы миллионов"..
Агата Кристи

Сегодня возникла необходимость 100% пробуждения сутра, потому что как обычно засиделся до поздней ночи, а так как у меня компьютер постоянно работает (качаю торренты ;)), а с телефона я не просыпаюсь, причем довольно давно :) Вот, возникла идея сообразить будильник с помощью amarok'a и cron'a

И так поехали :)

Нам потребуются: amarok, crontab

Пробуем выполнить команду:
DISPLAY=:0 amarok -p

Если амарок запустился, отлично :) Параметр -p означает играть текущий плей-лист

Теперь создадим эмуляцию плавного нарастания громкости (согласитесь так намного приятнее :)). На помощь нам приходи amixer:
Создаем файл .cron_alarm
gedit ~/.cron_alarm
С содержимым:
#!/bin/bash
amixer sset Master 0% unmute;
DISPLAY=:0 amarok -p;
sleep 1;
amixer sset Master 10% unmute;
sleep 1;
amixer sset Master 20% unmute;
sleep 1;
amixer sset Master 30% unmute;
sleep 1;
amixer sset Master 40% unmute;
sleep 1;
amixer sset Master 50% unmute;
sleep 1;
amixer sset Master 60% unmute;
sleep 1;
amixer sset Master 70% unmute;
sleep 1;
amixer sset Master 80% unmute;
sleep 1;
amixer sset Master 90% unmute;
sleep 1;
amixer sset Master 100% unmute;

Естественно, кому не подходят эти параметры, могут варировать слипы и процентаж громкости.

Далее в добавим нашу задачу на выполнение:
crontab -e
И в него добавляем следующую строчку
30 8 * * 1-5  bash ~/.cron_alarm  #Будильник :)

Первое число означает минуты, второе - часы, третье - дни месяца, затем месяца и дни недели. После этого команда, которую стоит выполнить при помощи shell’а. Звездочка означает все совпадения с 1 по последнее возможное значение (например, для минут звёздочка будет соответствовать диапазону 0-59). Также можно задать список значений через запятую (без пробелов). В моем случае cron выполнит команду с понедельника по пятницу в 8:30.

Хотя и первоначальная настройка такого будильника кажется сложной, она того стоит ;)

Можно скомбинировать, или добавить несколько записей на разные будильники.

Комментарии (2)

0
balamutick - 27 Февраль, 2009 - 17:20
Изображение пользователя balamutick.

Ничего не имею против вашего будильника, но пусть пожалуй ссылки будут и на другие.
По теме программ-будильников вы можете так же глянуть следующие статьи:
Программа-будильник
Супер-пупер будильник (KAlarm и Amarok) (РЕШЕНИЕ)

0
Shurik2k5 - 1 Март, 2009 - 18:07

Немного обновил скрипт загрузки будильника, добавил кое-что из поста Soi-Fong'a, добавил проверку на зупущенного торрент-клиента (у меня не очень широкий канал чтобы качать и слушать радио, а без торрентов слушать можно :)
#!/bin/bash
# громкость, до которой разгоняемся, в процентах
maxvolume=100
# время, за которое достигаем максимальной громкости, в секундах
raisetime=20
#играть интернет-радио?
play_inet_radio=1
#радио плейлист
radio_playlist='http://www.nashe.ru/nashe-128.m3u'
#локальный плейлист
offline_playlist='/home/shurik/alarm_playlist.m3u'
#проверять запущен ли торрент-клиент?
check_torrent=0
#название проверяемого торрент-клиента
torrent_client='ktorrent'

#убираем громкость совсем
amixer sset Master 0% unmute;

#проверяем интернет и запущен торрент-клиент
if [ "$play_inet_radio" -eq 1 ] && [ `ping -c 1 ya.ru | head -n 5 | tail -n 1 | awk '{print $4}'` -eq 1 ] && ! [[ "$check_torrent" -eq 1 && -z `ps -e | grep '$torrent_client' | head -n 1` ]]
then DISPLAY=:0 amarok -p -l "$radio_playlist" &> /dev/null #и запускаем интернет-радио
else DISPLAY=:0 amarok -p -l "$offline_playlist" &> /dev/null #грузим amarok с проигрыванием оффлайн плей-листа
fi
#ждем пока загрузится
sleep $((5+$play_inet_radio*3));

#ставим громкость в ноль
volume=0

while [ "$volume" -le "$maxvolume" ]
do
#прибавляем по единичке громкости
volume=$((volume+1))
amixer sset Master $volume% unmute;
# плавно
sleep `echo "scale=3; $raisetime / $maxvolume" | bc`
done

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры