Власні повідомлення (notify) у Gnome
Йтиметься про повідомлення, які показую практично всі програми від Rhythmbox до мережевих підключень. Хотілося мати можливість показувати в такому вигляді власні і тому я взяв бубон і почав капати)
для початку знадобиться встановити пакет libnotify-bin, я під ubuntu запустив команду
sudo apt-get install libnotify-bin
після цього невеликий тест. Перевіряємо у консолі
якщо у вас з'явилося таке віконце значить можна рухатися далі і розбиратися з налаштуваннями
notify-send [OPTION. ] [BODY] — create a notification
-u, --urgency=LEVELВаріантів тут не так багато, low, normal, critical. Різниця лише в смужці, яка з'являється з лівого боку.
-t, --expire-time=TIME Specifies timeout in milliseconds which to expire the notification. Тут все зрозуміло, вказуємо час у мілісекундах которе повідомлення буде висіти на екрані.
-i, --icon=ICON[,ICON. ] Specifies an icon filename або stock icon to display. З іконкою теж все чудово, По-перше, можна прямо вказати шлях на будь-яке зображення на диску. Інший варіант це відкрити /usr/share/icons/hicolor/48x48/apps/ і вибрати там будь-яку та вказати її назву тільки без розширення notify-send -i pidgin test
-h, --hint=TYPE:NAME:VALUE Specifies basic extra data to pass. Великі типи є int, double, string і byte. хінти дають можливість велику можливість з налаштування, наприклад місцезнаходження на екрані де має з'явиться повідомлення -h int:x:500 -h int:y:500
тепер за текстом, приймаються 2 тексти, перший іде у шапку, другий це тіло з невеликими можливостями гіпертексту
після того, як розібралися з налаштуваннями відразу починає зароджуватися думка, а куди це застосувати і перше це власний органайзер. УсеЧас говорять, що треба відриватися від монітора кожні 45 хвилин, значить є шанс це зробити. Крок перший це написати невеликий скриптик
export DISPLAY=:0.0 PATH=/usr/bin/:/bin/ notify-send --urgency normal --expire-time=10000 -i typing-monitor -h int:x:500 -h int:y:500 "Пора зробити перерву" "Очам потрібен відпочинок"
що тут важливо, це DISPLAY, крон його не бачить і тому команди хоч і будуть виконуватися на екрані нічого не з'явиться. зберігаємо ставимо на виконання та перевіряємо
chmod a+x sh1.sh ./sh1.sh
результат сподобався? тоді справа за налаштуванням крона 45 * * * * /home/ukr/sh1.sh Ну ось за додатковою інформацією звертайтеся на http://www.galago-project.org/specs/notification/ 0.9/x211.html
Щодо DISPLAY=:0.0. Жестковбитий DISPLAY - не добре. Він іноді може змінюватися, навіть, якщо всього один користувач за комп'ютером. Крім того, якщо ти закрив сесію і пішов, крон все одно працюватиме і помилки сипатимуться тобі в пошту.
Краще визначати його автоматом, наприклад, за допомогою ось такої функції:
# get_display [USER] — Returns $DISPLAY of USER. # Якщо перший парадокс омитується, то $LOGNAME буде використовуватися. get_display () who \ grep $ \ perl -ne 'if ( m!\(\:(\d+)\)$! ) END ' >
І в скрипті поправити ось так (в одному рядку не можна, тому що export збиває $?):
DISPLAY=$(get_display) exit export DISPLAY
Хардкорна конфа за С++. Ми запрошуємо лише профі.