суббота, 2 февраля 2013 г.

Linux - идеальный будильник!

Настроить компьютер в качестве будильника - легко!

Вот, к примеру, bash-скрипт, который в заданное время выводит компьютер из ждущего режима и проигрывает мелодии из папки в произвольном порядке, постепенно повышая громкость.

#!/bin/bash

# время по умолчанию
tm="16:41"

# громкость
volume=10
volume_max=50
# путь к папке с медиафайлами, или к медиафайлу.
folder="/home/alexey/Music/vk/*"
mplayer_start()
{
    # убиваем все процессы mplayer-а
    id=(`ps al | grep [m]player | gawk '{print $3}'`)
    for job in ${id[*]} ; do
        kill -9 $id
    done
   
    # включаем случайную мелодию с бесконечным повтором
    if [ -z "$1" ] ; then
        # mplayer -loop 0 -shuffle $folder &> /dev/null &
    mplayer -loop 0 $folder &
    fi
}

# позволяет вводить время в качестве первого параметра

# ./xxx.sh 16:41

    if [[ "$1" == [0-9]:[0-9][0-9] ]] || [[ "$1" == [0-9][0-9]:[0-9][0-9] ]] ; then
        tm=$1
    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 mem -s $date

# устанавливаем громкость
amixer -q set Master $volume%



echo "нажмите ENTER для выключения"
mplayer_start

# повышаем уровень громкости
while true ; do
    amixer sset Master 1%+ &> /dev/null
    volume=$(( $volume+1 ))
   
    if [ $volume -eq $volume_max ] ; then
        break
    fi
    sleep 1 # задержка повышения громкости
done &

read;
mplayer_start false


Скрипт отсюда: http://linuxforum.ru/viewtopic.php?id=19367
Там еще есть несколько способов организовать Linux-будильник.
Впрочем, в репозиториях видел уже готовые  программки, кому лень копаться, можете попробовать их :)

Комментариев нет:

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