[О блоге] [наверх] [пред] [2021-04-19 12:34:56+03:00] [6809b7590d977119f9a402d630cdcfd150d13e0c]
Темы: [tip]

herbe оповещения

https://github.com/dudik/herbe
https://vermaden.wordpress.com/2021/04/18/freebsd-desktop-part-23-configuration-herbe-notifications/
Я всплывающими оповещениями не пользуюсь сейчас, ибо по сути всё что
меня интересует просто пишет bell alert в терминал и он выставляет у
окна urgency статус, который я вижу в dwm-е в строке состояния тэгов.
Когда-то для mcabber использовал вывод сообщений jabber приходящих,
но может быть неудобно когда рядом есть человек который может увидеть
эти сообщения.

А ещё одной причиной почему я не пользуюсь оповещениями было то, что
одна из оповещалок написана на Python была, от которого я стараюсь
держаться подальше на своей системе, если речь не про работу. Бесит
его медленная скорость работы. А много других оповещалок работают
через DBus, что вообще не рассматривается -- DBus я не запускаю и
убеждаюсь что никто его не запускает (1517827838dfcb8d1baaaeb75c258f2b59f8714d)
хотя кто-то из зависимостей его устанавливает.

herbe зависит только от X-библиотек и ничего не умеет кроме как просто
показывать сообщения. Есть и патч для того чтобы в вертикальном стэке
отображать. Suckless friendly штука.

    [оставить комментарий]
    комментарий 0:
    From: Oskar Sharipov
    Date: 2021-04-19 10:41:10Z
    
    О, тоже его заценил! Конечно, так и не придумал, где использовать, но на диске код и
    бинарник лежит.
    
    А строчка в статусе dwm меня не тригеррит, я легко могу упустить что-то важное там.
    Поэтому пока без уведомлений живу.
    
    комментарий 1:
    From: Sergey Matveev
    Date: 2021-04-19 11:10:47Z
    
    *** Oskar Sharipov [2021-04-19 10:40]:
    >О, тоже его заценил! Конечно, так и не придумал, где использовать, но на диске код и
    >бинарник лежит.
    
    Вот и сейчас у меня собранный бинарник лежит, но на этом всё :-)
    
    >А строчка в статусе dwm меня не тригеррит, я легко могу упустить что-то важное там.
    >Поэтому пока без уведомлений живу.
    
    Ну я имел в виду не строчку статуса, где можно просто буковками что-то
    написать, а urgency состояние окна, при котором тэг в строке состояния
    dwm подсвечивается ярким цветом (у меня это просто такой белый фон на
    тэге): такое я не могу не увидеть или не обратить на него внимание, тем
    более когда оно 99.99% времени никогда не горит этим ярким цветом. И в
    отличии от оповещений (herbe/whatever) -- не исчезает, пока явно не
    переключишься на urgent окно чтобы снять это состояние.
    
    В командной строке zsh у меня ещё выставлено вот такое:
    
        precmd() { printf "\a\033]2;\033\\" }
    
    escape-последовательности для очистки X11 title окна, которое в tmux
    отображается и по умолчанию туда попадает длинный hostname. Но главное
    тут это "\a", который делает alert bell, выставляющий автоматом urgency
    окна. Это позволяет показать мне что в каком-то окне отобразилась
    командная строка -- значит какая-то команда завершила выполнение. Если я
    интерактивно работают в этом окне, то urgency не появляется, так как оно
    в фокусе. Для меня это невероятнейший по удобству трюк, оповещающий
    когда что-то где-то закончилось. Если надо поставить таймер на пять
    минут, то я просто делаю в свободном терминале sleep 600 и дальше тэг
    dwm-а будет подсвечен, когда sleep отработает и zsh "напечатает" alert.
    
    Если например в каком-то чате много всякого flood-а, мне не интересного
    и постоянно отвлекающего (постоянно подсвечивающийся dwm тэг), то в
    хороших клиентах можно фильтровать сообщения на которые должен делаться
    beep. В irssi можно например только для конкретного окна (чата)
    отключить beep-ы.
    
    Если нужно оповестить о завершении какой-то долгой операции на сервере,
    то я бывает добавляю вызов mailx -s "blablabla done" ...@stargrave.org
    Хотя приход почты у меня urgent-ом нигде не подсвечивается, но в zsh
    стоит настройка:
    
        mailpath=(
            ~/mail/mbox"?Neue Nachrichten in =mbox"
            ~/mail/arbeit"?Neue Nachrichten in =arbeit"
        )
    
    при которой сам zsh следит за появлением новых писем в "обычном" ящике и
    рабочем. Списки рассылки у меня почти никогда не попадают в обычный ящик
    -- поэтому рассылки меня не будут отвлекать. И если почта появляется, то
    у меня в командной строке появится сообщение о том что почта пришла.
    Если я сижу в Vim, то да -- никаких оповещений о почте не будет, но я и
    не помню когда это мне бы помешало. Так или иначе обычно всегда
    параллельно бывает что-то в zsh надо сделать, хотя бы где-то enter
    нажать, при котором будет сообщение о почте.
    
    Если хочется явно узнать состояние ящиков, то я нажимаю F1 в zsh,
    который вызывает " inc" команду (пробел в начале чтобы оно не попало в
    историю):
    
        res=""
        for mb in $mboxes; do
            [ -e $MAILDIR/$mb/new ] || continue
            val=$(find $MAILDIR/$mb/new -type f | wc -l | sed 's/^ *//')
            [ "$val" -ne 0 ] || continue
            res="$res $mb:$val"
        done
        echo $res
    
    которая покажет сколько у меня new сообщений в maildir-ах руками явно
    перечисленных (некоторые ящики мне вообще не интересны):
    
        %  inc
        mbox:1 fbsd:4 gnu:1 monitoring:1 nbsd:1 obsd:2 spam:1
        Neue Nachrichten in =mbox
    
    в момент вызова этой команды мне ещё и почта в mbox упала.
    
    Пока всё это писал, то так ещё и не придумал где бы мне использовать
    herbe. И пока писал, у меня urgency выставился (он выставляется и не
    только на X11-окнах, но и табах в tmux) на табе с запущенным
    newsboat-ом, только что скачавшим новые новости.
    
    комментарий 2:
    From: Sergey Matveev
    Date: 2021-04-19 12:16:45Z
    
    *** Sergey Matveev [2021-04-19 14:10]:
    >    res=""
    >    for mb in $mboxes; do
    >        [ -e $MAILDIR/$mb/new ] || continue
    >        val=$(find $MAILDIR/$mb/new -type f | wc -l | sed 's/^ *//')
    >        [ "$val" -ne 0 ] || continue
    >        res="$res $mb:$val"
    >    done
    >    echo $res
    
    Последнее время стал много упрощать своих скриптов на zsh, ведь всё
    равно с него никуда не слезу, а портабельность им не нужна. Переписал
    жуть выше на:
    
        res=()
        for mbox ($mboxes) {
            news=($MAILDIR/$mbox/new/*(N))
            [[ ${#news} != 0 ]] && res=($res $mbox:${#news})
        }
        print $res
    
    комментарий 3:
    From: Oskar Sharipov
    Date: 2021-04-19 23:49:47Z
    
    > precmd() { printf "\a\033]2;\033\\" }
    
    Ого, спасибо! Вроде бы такая простая идея, а вы use-case-ы привели
    суперские. Привинтил belling себе.
    
    Получать уведомления о новых письмах в обычной работе консоли тоже
    здоровская идея.
    
    Всё же круто вы используете магию tmux-а и shell-а, вот такой
    комментарий мне одно удовольствие было читать.
    
    --
    Oskar Sharipov
    gpg fingerprint: BAC3 F049 748A D098 A144  BA89 0DC4 EA75 714C 75B5