Случайные всплывающие советы

Давным давно я прочел книгу The Pragmatic Programmer: From Journeyman to Master (если кто-то не читал, очень ее рекоммендую). Книга является сборником очень полезных советов для разработчиков. Но этот пост не про книгу.Недавно я решил просмотреть все советы снова и обнаружил, что некоторые из них позабылись. Так что я решил сделать что-то, что переодически напоминало бы их. Лучшим выбором оказались всплывающие оповещения.

4cf5d80af359bb3e7c4b50f23a7caddf.png

Плюсы:

всплывающее окно легко сделать; всплывающее окно не требует от меня каких либо действий, так что я могу пропустить совет, если хочу. Реализация Для начала я создал следующий скрипт и сделал его исполняемым: #!/bin/sh export DISPLAY=:0 CAPTION=«Random advice» PHRASES=/home/rasen/phrases.txt cat »$PHRASES» | sed '/^$/d' | sort -R | head -1 | tr -d '\n' | xargs -0 notify-send »$CAPTION» Скрипт извлекает одну произвольную строку из файла и отображает ее как оповещение.

Давайте разберем скрипт по кусочку:

export DISPLAY=:0 нужно, чтобы скрипт заработал из-под cron; sed '/^$/d' убирает пустые строки; sort -R | head -1 извлекает произвольную строку; tr -d '\n' убирает ведомый пробел; xargs -0 notify-send »$CAPTION» отображает конечную строку в виде оповещения. Запуск скрипта по расписанию После этого, я запустил crontab -e и добавил задание с помощью следующей строчки: 0 * * * * /home/rasen/random-advice.sh Это правило cron для запуска указанной комманды каждый час.

После этого, каждый час будет появляться всплывающее окно с одним советом.

Альтернативы Если у Вас нет cron’а или вы не хотите его использовать, вы можете выбрать любой другой способ, который будет запускать скрипт с указанной частотой.Например, можно запустить скрипт руками внутри бесконечного цикла:

while true; do sleep 3600 && ~/random-advice.sh done Как еще одну альтернативу, вы можете использовати события systemd (не забудьте запускать скрипт от имени своего пользователя).

Бонус: все советы Pragmatic Programmer в .txt

© Habrahabr.ru