Alarm Clock — Будильник для Ubuntu
Alarm Clock — полнофункциональный будильник для Ubuntu Linux. Позволяет ставить будильник, включать таймер, а так же запускать выбранные приложение в заданное время.
Возможности Alarm Clock:
- поддержка индикатора на верхней панели Unity; можно показать обратный отсчет (кликнуть по индикатору -> Настройки -> включить “Показывать счетчик обратного”); также в этих настройках можно задать автозапуск Alarm Clock при входе в систему
- установка звонка типа “будильник” или “таймер”
- по истечении времени Alarm Clock может выдать звуковое сообщение или же запустить нужную программу
- поддержка всплывающих уведомлений Notify OSD
- возможность задать несколько будильников
- повторное срабатывание будильника
Будильник на Bash
Когда-то, уже достаточно давно мне понадобился будильник, достаточно громкий, чтобы поднять мертвого, достаточно разнообразный, чтобы не надоедать и при этом достаточно тяжело выключаемый, чтобы не делать этого «на автомате». Всем этим требованиям отлично соответствовал персональный компьютер и решение этой несложной задачи было найдено при помощи интернет-радио и двух консольных утилит: cron и rtcwake.
Время шло, импровизированный “будильник” великолепно справлялся с задачей, хотя и оставался при этом не самым удобным в плане эксплуатации, все-таки для изменения его приходилось править конфиги, а команду на засыпание вводить в терминал напрямую. Так продолжалось почти год, но совсем недавно один знакомый, недавно перешедший на Ubuntu Linux, попросил рассказать ему о таком чудесном явлении, как командная строка и ее интерпретаторе bash. Поскольку обучение даже самым азам программирование в отрыве от практики по моему глубокому убеждению бесполезно, была написана написана статья, которую я представляю вашему вниманию.
Несмотря на то, что основной целью является все-таки обучение азам работы с bash, скрипт, получающийся в итоге вполне можно использовать и по прямому назначению: то есть в качестве будильника.
Что такое Bash
Одной из самых интересных особенностей операционных систем на базе GNU/Linux является bash. Bash это интерпретатор командной строки, по сути, скриптовый язык программирования, на котором вполне возможно писать достаточно сложные программы, так называемы shell-скрипты или сценарии. Естественно, что на фоне более “серьезных” собратьев по семейству интерпретируемых языков, подобных java или python, функциональность bash смотрится куда более бедно, но зато он плотно интегрирован в саму систему, а это означает, что значительно проще наладить взаимодействие между ним и многими системными утилитами.
Что нам необходимо
С тех заданием все просто: нам необходим простой, надежный, громкий и разнообразный будильник, который сможет поднять мертвеца. И написан он должен быть исключительно на Bash, то есть системными средствами Linux.
- Bash — это, я думаю, понятно любому, интерпретатор командной строки, часть любого Linux — дистрибутива.
- rtcwake — встроенный в ядро инструмент, позволяющий использовать драйвер для RTC (Real Time Clock), поддерживающий стандартные флаги для просыпания.
- cron — планировщик задач. Уже установлен в большинстве дистрибутивов.
Создание будильника на Bash
Для начала изготовим скрипт, представляющий собой сигнал будильника. Создаем папку wakeupdude (название строго индивидуально и отражает ваше чувство юмора (да, у меня все с ним плоховато) и серьезность отношения к поставленной задаче), в этой папке создаем файл alarm.sh.
Содержимое файла может быть различным, но я решил, что моим будильником будет любимая интернет-радиостанция, поэтому в моем случае все выглядит так:
Сохраняем. Открываем терминал в этой же папке и прописываем:
sudo chmod +x alarm.sh
Вообще, советую запомнить эту команду, поскольку она позволяет, используя терминал присвоить любому файлу любые права доступа ( “+x” означает, что файл отныне будет исполняемым).
В принципе, здесь можно использовать не только интернет-радио, но и запуск музыкальным плеером определенного файла или плей-листа.
Сигнал готов, теперь приступаем к написанию основного скрипта, который будет отвечать за “завод” нашего будильника. Сперва создаем в нашей папке файл wake.sh , в котором записываем следущее:
#! /bin/bash
#Задаем имя первой переменной, отвечающей за дату пробуждения
d=»
#просим ввести эту переменную ( текст внутри кавычек можно изменять по собственному желанию, однако, советую оставить подсказку в скобках, поскольку именно в таком формате необходимо вводить дату, почему объясню чуть ниже)
echo -n «В какой день вас разбудить? (гггг-мм-дд)»
#Просим компьютер считать введенную выше переменную
read d
#вводим следующую переменную,которая будет отвечать за час пробуждения согласно той же схеме
h=»
echo -n «В какой час вас разбудить? (чч)»
read h
# С третьей переменной, отвечающей за минуты пробуждения, будет немного сложнее, поскольку установить одновременно время пробуждения и время срабатывания нашего будильника мы не сможет (не сработает), нам нужно выполнить с ней простое арифметическое действие, поэтому наша следующая переменная должна быть целым числом, а не строкой, как остальные. В этом нам поможет команда declare -i. В остальном, действует точно так же, ка ки с предыдущими переменными.
declare -i m=»
echo -n «Во сколько минут избранного часа вас разбудить? (мм)»
read m
# как я писал выше, просто так взять и назначить время пробуждение и срабатывание будильника на одну и ту же минуту нельзя, поэтому мы укажем компьютеру, что срабатывание будильника должно быть через одну минуту после пробуждения.
declare -i z=0
z=$m+1
#По причине того, что я стремился упростить всю имеющуюся структуру и не усложнять ее лишними конструкциями, в ней имеется один довольно существенный баг: при установке переменной “m”, то есть минутпробуждения на 59, наш будильник не сработает.
#В следующих двух строках выводится отладочная информация, позволяющая еще раз взглянуть на данные, которые мы ввели и еще раз проверить их.
echo «$d $h:$m»
echo «$z»
#даем себе время проверить данные ( в примере 20 секунд)
sleep 20
#теперь преобразовываем понятный нам формат даты в формат, который поймет rtcwake (помните, я говорил, что важно вводить данные именно так, как указано в шаблоне? Так вот, это именно потому, что следующая утилита по-другому их просто не воспримет)
u=$(date +%s -d «$d $h:$m»)
#снова отладочная информация, нужная только для того, чтобы понять, что введенные нами данные распознаны успешно.
echo «$u»
#следующая команда вписываетв ремя пробуждение в cron. ВАЖНО. ПОМНИТЕ, ПРЕДАСТАВЛЕННАЯ НИЖЕ КОМАНДА СОСТАВЛЕНА ИМЕННО ТАК, ЧТОБЫ ПОЛНОСТЬЮ ПЕРЕПИСАТЬ СОДЕРЖИМОЕ CRONTAB.Это сделано для того, чтобы в нем не скапливалось огромное количество конфликтующих задач. Однако, если вы используете его для других задач, выполняемых, по расписанию, они будут затерты.
echo «DISPLAY=:0
$m $h * * * /home/USERNAME/wakeupdude/alarm.sh» |crontab —
# естественно, что /home/USERNAME/wakeupdude/alarm.sh это путь к вашему файлу, в котором записан ваш сигнал.
#Ну и последняя часть — приказ компьютеру на засыпание.
sudo rtcwake -m mem -t $u
#При исполнении команды компьютер затребует пароль администратора, в принципе, это можно отключить через файл sudoers, но я не советую, поскольку дает нам возможность отказаться от выключения компьютера, если обстоятельства изменились.
Теперь сохраняем файл и с помощью команды chmod +x даем ему права исполняемого. В принципе, наш будильник готов, но, поскольку мы живем в благословенном 2018 году, то каждому уважающему себя приложению нужен ярлык на рабочий стол, то мы его и изготовим:
В нужной папке создадим файл с расширением .desktop, откроем этот файл в редакторе, где и пропишем следующее:
[Desktop Entry]Name=Будильник
Terminal=true
Icon=/путь/до/картинки/которая/нам/нравится.png
Exec=/путь/до/нашего/скрипта
Type=Application
Закрываем с сохранением и при следующем запуске выбираем “сделать исполняемым”. Наш будильник готов.
Будильник в Убунту
Если когда-нибудь вам понадобится установить будильник либо таймер, то вам пригодится программа Alarm Clock — полнофункциональный будильник для Ubuntu Linux. Она дает возможность устанавливать будильники, включать таймер, а так же запускать нужные приложение в заданное время.
Что может Alarm Clock?
- отображение иконки программы в системном трее
- установка звонка типа “будильник” или “таймер”
- подача звукового сигнала
- поддерживаются всплывающие уведомления Notify OSD
- возможность установки нескольких будильников
- повторное срабатывание будильника
Программа имеет довольно простой и понятный интерфейс. Использует для подачи сигнала системные звуки, но есть возможность использовать любой звуковой файл с вашего жесткого диска. Также можно настроить Alarm Clock таким образом, чтобы по истечению времени, она выполнила нужную команду и запустила какую-нибудь программу. Программу можно установить прямо из Центра приложений, но если вы хотите использовать самую свежую версию, то нужно выполнить в Терминале следующие команды:
sudo add-apt-repository ppa:joh/ppa sudo apt-get update sudo apt-get install alarm-clock-applet
Это и много другое, вы можете прочитать в номере UserAndLINUX v14.06 (№29) июнь-июль 2014
необходимо зарегистрироваться,
для того что бы оставить комментарий