Pull to refresh

Comments 85

/usr/local/bin/wrap: line 10: notify-send: команду не знайденоХм… А я уж обрадовался…
> 1. Установить программу notify-send (в Ubuntu это package libnotify-bin).
А почему бы не написать после команды например make && make install && notify-send ну и параметры там все, так просто сходу не вспомню синтаксис...&& будет выполняться после завершения предыдущей команды… и без всяких скриптов…
Скриптом удобнее ) Я начинал как раз так, но потом решился все-таки на скрипт, потому что:
1) && notify-send Success || notify-send Failure — долго писать
2) я постоянно забывал это делать. А скрипт добавил в алиасы — и помнить не надо
А если писать только && notify-send Success, то оно выполнится только в успеха предыдущей команды.
Можете как-то выложить код на текстообменник? А то нету желания качать и разархивировать всё это.
16 строк можно было и просто в текст поста скопипастить
Уже есть опыт успешного использования.
Пользуюсь почти неделю. Очень удобно.

Помимо того чтобы что эта штука не позволяет забыть о свернутых задачах, она еще и позволяет отойти от компа.
Мне кажется что все мы часто по долгу сидим, и лишний раз подняться со стула — это полезно.

Так вот, я использую wrap так:
Сейчас в проекте используется maven, поэтому я сделал alias mvn=«wrap mvn».
Сделал большой кусок функционала, запускаю сборку и тесты. Этот процесс, как правило, занимает около 5 минут. Это время я использую чтобы походить по кабинету. Как только «ку-ку-кнет» возвращаюсь и продолжаю работать.
Кстати, а откуда notify-send читает настройки оформления? У меня в KDE его уведомления выглядят феерически криво :(
Насколько я знаю, это гномовский инструмент, причем темо-зависимый. Честно говоря, KDE не пользуюсь, и чем вам помочь — не знаю. Может, кто-то в курсе?
не-совсем, на сколько я понял там свои движки, выбор — 'notification-properties', у меня хранятся в '/usr/lib/notification-daemon-1.0/engines'
В Kde можно использовать:
kdialog --title «Success» --passivepopup «Operation completed» 5
5 — количество секунд, которое сообщение будет висеть.
Спасибо! Надеюсь, пользователям KDE будет просто отредактировать скрипт с использованием вашего способа.
В kde4.3, где переработанный трей, последний параметр указывает как долго уведомление вообще будет «жить» в списке уведомлений.
В KDE 4.3 вид сообщений зависит от темы плазмы.
У меня в XFCE с компизом что-то вообще ничего нет. Команда `notify-send test` ничего не показывает.
А не проще ли, не изобретая велосипед, использовать штатные средства терминала? Скажем monitor for silence / monitor for activity. Ну или банально «mycommand; notificator», где последний может быть чем угодно от тупо команды play до каких нить xmessage. Ну или через DCOP попросить десктоп показать окошко.
1. Почему libnotify, а не DCOP, monitor for silence/activity, xmessage?
Потому что notify-send проще, удобнее, универсальнее (я юзаю gnome-terminal, а не konsole), красивее

2. Почему скрипт, а не mycommand; notificator
habrahabr.ru/blogs/linux/67746/#comment_1916461
Подскажите, что используется в Убунту для вывода уведомлений(библиотека)?
Библиотека — libnotify. Программа notify-send находится в package libnotify-bin
в новых версиях — notify-osd, которая поддерживает в некоторой степени интерфейсы libnotify.
кажется еще у screen тоже есть опция — предупреждать об активности в окне. А без screen работать — недальновидно.
> А без screen работать — недальновидно.
Смысл этой фразы не понял, не могли бы вы поподробнее?
ну допустим задача будет выполнятся слишком долго, потребуется вам перейти в другое здание или вообще отойти домой (с работы) и оттуда проверить ход выполнения программы.

Если вы работаете внутри screen, вы сможете подсоединиться удаленно к сессии (консольной) и продолжить работать.

Можно конечно и по vnc подсоединиться, но в нем и на 10 мегабитах неудобно работать.
Ну это уже, имхо, совсем другой тип задач. wrap создавался под задачи, занимающие 1-10 минут и не интерактивные. В иных случаях вы, наверное, правы.
Для серверов актуально, да. Для десктопов нет. А программа явно под десктопы делалась, на серверах никто иксы не держит и уж тем более не смотрит туда на предмет уведомлений.
Гм, а вы что на десктопах делаете?
У меня всегда минимум 5-6 терминалов внутри screen запущено.
Я сижу через yakuake. Хоть 100 терминалов в 1 окне.

А screen мне не нужен — если я куда-то иду с ноутбуком, то как минимум его саспенжу. Все остальное время он включен, ребуты раз в неделю. :)
UFO just landed and posted this here
inotify это вроде для мониторинга файлов.
Оффтоп. Что было с bitbucket в пятницу, не в курсе?
Не знаю. Не пользовался им в пятницу )
UFO just landed and posted this here
UFO just landed and posted this here
Здорово. Это KDE-вариант?
Я экспериментировал с festival, но мне не понравилось, уж лучше просто короткая мелодия.
UFO just landed and posted this here
UFO just landed and posted this here
Небольшая поправка
#!/bin/bash
$@
if [ $? != 0 ]; then m=«Fuck!!!»; else m=«OK ^_^»; fi
/usr/bin/kdialog --passivepopup "$m — $*" 60
echo $m | /usr/bin/festival --tts

Посмотрел на kdialog сейчас, заметил, что нельзя указать, чтобы уведомления показывались где-то в углу — по дефолту только по центу и всё.

Вопрос, кто-то знает, как заюзать из скрипта уведомления в стиле KDE4 «Notifications and jobs» (иконка (i) в системном лотке)?
В приведённом варианте вывода сообщений (kdialog --passivepopup) оно и должно показываться в стиле KDE4 «Notifications and jobs». Это если выполнить команду от рута, то по центру появится белое окошко с сообщением. Из-под рута нужно выполнять как-то так:
user=`who | grep " $DISPLAY" | awk '{print $1}' | tail -n1`
su -c 'kdialog --passivepopup «Task completed*»' "$user"
Нет, вот именно, что 'kdialog --passivepopup «done» 1' выполняю прямо в konsole из-под себя(uid 1000) и сообщения появляются по центру, белое окошко. Может надо в Системный настройках где-нить указывать что-то в духе «Показывать уведомления там-то»?
Ваш скрипт совершенно не дружит с пробелами (wrap ls "./dir with spaces"). Чтобы исправить, надо заменить:

--- wrap.old	2009-08-22 13:58:02.000000000 +0400
+++ wrap	2009-08-22 18:18:45.000000000 +0400
@@ -6,3 +6,3 @@
 if [ $# -gt 0 ]; then
-    $*
+    "$@"
     EXIT_CODE=$?


Ещё, возможно, стоит добавить "-t 0" к параметрам notify-send, чтобы напоминалка не исчезала, пока сам её не закроешь. А то ведь можно отвернуться и пропустить её.
О, здорово! Спасибо! В ближайшее время применю патч, пока нет возможности.

По поводу "-t 0" — это дело вкуса. По мне, так лучше пускай исчезают. Предлагаю это оставить на усмотрение пользователя.
Что-то -t 0 страшный алёрт выдает.
UFO just landed and posted this here
Согласен, может, сделаю в ближайшие дни. Только проверить будет трудно, у меня нет KDE :) Если вы пришлете патч, буду очень признателен.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Честно говоря удивлен даже, что такое попало на главную хабра o_O

Давно использую нотификации, например для проверки новой почты (gmail, проверка по протоколу POP3 через SSL с последующим показом количества новых писем) или завершение закачки wget (показывает состония закачки через zenity), да даже когда чайник ставлю тоже использую! Это очень удобно конечно, но чтобы на хабр писать… как-то не задумывался…

Или все же написать?..
А почему бы и нет? Если это полезно и способно облегчить жизнь кому-то еще.
Ну вроде bash на маках есть, осталось только найти способ нотификации. Здесь я, к сожалению, ничем не могу помочь.
На маке я люблю просто писать «… && say Done»
А вообще уведомлять принято через Growl, но из консоли придется писать много Applescript. Есть готовые скрипты, конечно:

www.macosxhints.com/dlfiles/growl_sh.txt
UFO just landed and posted this here
скрипт хороший, но ему не хватает многоязыковой поддержки и солидности

вот, можно тут поучиться как надо оформлять бесплатный софт: www.gnu.org/software/hello/
Не слишком ли для 16-строчного скрипта «для друзей»? Если бы это было что-нибудь более серьезное, тогда — да. А так…
Ну, если для «hello world» не слишком, то для полезного скрипта тем более — норма
Спасибо вам большое за работу. Именно то, чего не хватало, но о чем и не догадывался ;)
Свалили бы вы поскорее уже на лор, только засоряете ресурс своим описанием костылей.
UFO just landed and posted this here
все таки такие вещи лучше реализовывать в терминале — очень часто подобные вещи требуются при работе по ssh
А как это можно реализовать в терминале? Я могу представить себе только уведомление по какому-нибудь сетевому протоколу
Терминал явно как-то взаимодейтсвует с шеллом в обе стороны, например пищит (моргает) когда не получается автодополнить путь. А вот как это можно расширить даже не знаю :)
Запускается команда.

$ cp -r source destination

Только после запуска, через какое-то время, становится известно, что команда будет работать долго. Тогда я делаю следующую вещь:
Жму Ctrl+Z (или, в терминах unix, ^Z)

[1]+  Stopped                 cp -r source destination

Ввожу следующую команду:

$ bg; wait; beep
[1]+ cp -r source destination &

Где beep-скрипт нотификации, у меня — свой. Жду плюсов в карму от тех, кому такой рецепт поможет.

В некоторых простых случаях можно использовать «мониторинг активности» или «мониторинг простоя» в screen или konsole.
1) У всех работает автодополнение (по Tab) после wrap или просто не нужно? Если нет, можно выполнить команду:

complete -F _command wrap.

Чтобы она работала всегда, её нужно засунуть в .bashrc (не уверен, для себя я собрал PKGBUILD в арче, который создаёт файлик с командой в /etc/bash_completion.d/).
2) Для kde есть ещё интересное решение по выводу сообщений, которые никогда не исчезнут. Т. е. оно высветится и свернётся. Проще увидеть, чем объяснить. Для этого надо взять маленький скрипт на python здесь. Сохраните текст в файл с расширением .py и дайте ему права на исполнение. Теперь в скрипте wrap вместо kdialog вызывайте:

/.../notify.py --s=«Success» «Operation completed».

И т.д. Скрипт написал не я. Нашёл на каком-то форуме, адрес не помню.
Sign up to leave a comment.

Articles