Pull to refresh

Поздравляем новобрачных с помощью связки 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

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

На этом всё, демонстрацию работы выложу в ближайшее время. И удачной вам свадьбы!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.