Как стать автором
Обновить

Поздравляем новобрачных с помощью связки fortune, xcowsay, nix-машины и телевизора

Как-то тихо и незаметно подошло время женитьбы моего старшего брата. Из всех свадебных хлопот на меня выпало задание подготовить пожелания молодым в виде надписей на стенах комнаты. Но поскольку такие простые поручения мне давать нельзя ввиду полнейшей расхлябанности, выделенный месяц на подготовку плакатов съели другие не менее важные дела. Соответственно, к задаче я приступил непосредственно вечером перед свадьбой, когда все магазины уже были закрыты. Однако, в таких сжатых условиях самое время проснуться творческой жилке, что и произошло. В результате новобрачные получили свои поздравления, а копилка моих знаний и эго программиста слегка приросли в объёме.

На мой взгляд, лучшее, что может сделать программист для поздравления — написать программу. В некотором роде, я так и сделал, пусть и воспользовавшись чужими трудами. Но думаю, ругать меня за это никто не будет. Итак, приступим к описанию того, что же я сделал. Изначально идея состояла в том, чтобы выводить поздравления с разных сайтов в виде сообщений через демон уведомлений libnotify. Пораскинув мозгами, я понял, что это будет несколько сложновато и я явно не уложусь в один вечер. Тем более, этих стараний никто не оценит. Так что я решил воспользоваться программой fortune, создав для неё специальную базу поздравлений.

Программа fortune предназначена для вывода случайного сообщения и как нельзя лучше подходит для данной задачи. На вход ей можно подать файл либо каталог, содержащий сообщения, отделённые друг от друга знаком «%». Создадим каталог fortunes-wedding-ru и поместим в него файл wedding с примерно таким содержимым (источник):

%
Поздравляем вас с законным браком!
Коль случилось в ваших судьбах так,
Добрых долгих лет полсотни с гаком
Пусть живет и крепнет этот брак!
Тем, уже что в действиях не вольны,
Не подобны озорной волне,
Видится, что вы весьма довольны,
Вместе вам легко, светло вполне!
Пусть не старят вас большие годы,
Оставайтесь молодыми вновь,
Размножайтесь и плодитесь – всходы
Даст свои огромная любовь!
%
Как мир стара любовь!
Как мир она нова!
Ищите вновь и вновь
Прекрасные слова!
Пусть добрым будет дом,
Звенит в нем смех детей.
Совет вам да любовь
На много-много дней! 
...

В данный файл можно поместить сколько угодно поздравлений, и самое главное тут не переборщить — слишком большое количество никто не заметит, поэтому я ограничился пятью страницами. Далее, нам необходимо создать файл с расширением .dat — в нём будут храниться адреса строк. Для этого используется команда:

strfile -c % wedding wedding.dat

Теперь практически всё готово. По команде «fortune fortunes-wedding-ru» в консоль выводится случайное поздравление. Чтобы вывести его на экран, можно воспользоваться командой libnotify-send:

libnotify-send "Ах, эта свадьба…" "`fortune fortunes-wedding-ru`" -i /home/hopungo/Изображения/heart-rings.png

Чтобы не утруждать себя вводом команды, напишем небольшой скрипт:

while true
do libnotify-send "Ах, эта свадьба…" "`fortune fortunes-wedding-ru`" -i /home/hopungo/Изображения/heart-rings.png
sleep $((10 + $((RANDOM % 11))))
done

Запускаем и видим, что сообщение маловато, да и держится на экране не слишком долго. Как вариант, можно настроить libnotify, однако я предпочёл воспользоваться программой xcowsay:

while true
do xcowsay --image=/home/hopungo/Изображения/heart-rings.png "`fortune fortunes-wedding-ru`"
sleep $((10 + $((RANDOM % 11))))
done

Изображение берём отсюда, добавляем альфа-канал и вырезаем фон.

На этом всё, демонстрацию работы выложу в ближайшее время. И удачной вам свадьбы!
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.