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

от автора

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

Недавно я решил просмотреть все советы снова и обнаружил, что некоторые из них позабылись. Так что я решил сделать что-то, что переодически напоминало бы их. Лучшим выбором оказались всплывающие оповещения.

Плюсы:

  • всплывающее окно легко сделать;
  • всплывающее окно не требует от меня каких либо действий, так что я могу пропустить совет, если хочу.

Реализация

Для начала я создал следующий скрипт и сделал его исполняемым:

#!/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" 

Скрипт извлекает одну произвольную строку из файла и отображает ее как оповещение.

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

  1. export DISPLAY=:0 нужно, чтобы скрипт заработал из-под cron;
  2. sed '/^$/d' убирает пустые строки;
  3. sort -R | head -1 извлекает произвольную строку;
  4. tr -d '\n' убирает ведомый пробел;
  5. 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

ссылка на оригинал статьи http://habrahabr.ru/post/221661/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *