remote weechat notification via urxvt & tmux

By j0lly, mer 20 agosto 2014, in category Sysadmin

bash, tmux, weechat

oggi è un grande giorno perché ho finalmente (e nuovamente) le notifiche desktop di weechat, grazie a urxvt.

weechat

Prerequisiti:

*urxvt sulla macchina guest

*libnorify sulla amchcina guest

*weechat sulla macchina server 

Questo metodo è abbastanza hacker, ma su internet ho visto cose veramente più brutte e questa è la più elegante che ho trovato, per ci più mi ha fatto scoprire cose di urxvt che non sapevo e che mi fa capire come mai molti lo utilizzano così massivamente.

per prima cose è necessario aggiungere la gestione delle notifiche urgenti dei programmi via shell aggiungendo la line nel file .Xresources (o .Xdefaults):

urxvt.urgentOnBell: True

xrdb .Xresources

ed ora aprendo una nuova shell, basta lanciare un comando di prova tipo sleep 5 e spostarsi in un altro workspace (o comunque mettendo fuori fuoco la finestra) e dovrebbe illuminarsi all'uscita del comando.

ora che abbiamo i nostri luccichii, passiamo alla gestione delle notifiche vere e proprie e, se si vuole, anche il segnale acustico..

create questo script mettendolo in una directory che preferite (io in .urxvt/notifier):

[gist url="https://gist.github.com/j0lly/f99df5b9676faf2e231b"]

ora modificate ancora il vostro .Xresources in modo da utilizzare il nuovo plugin:

! beep via urxvt signals & perl extension
URxvt.perl-lib: /home/j0lly/.urxvt/
URxvt.perl-ext: notifier

reload delle funzioni coma sopra e tutto dovrebbe funzionare (controllate di avere aplay e notify-send installati e funzionanti, e scegliete un suono che vi aggrada); non resta che provare:

echo -ne "\033]777;notify;titolo;Ciao Mondo\007\007"

Ho notato che ci sono alcune mancanze, come la possibilità di avere un subject della notifica separato da spazi, ed altre limitazioni, mo ci sarà tempo di affinare. Ora, spostandoci sul server che ospita la sessione di weechat dentro il multiplexer (tmux o screen), ed aggiungiamo questo script  [gist url="https://gist.github.com/j0lly/8803d4067bb00c05ab23"]

in ~/.weechat/python/osc_notify.py

ed un link per l'autostart:

cd ~/.weechat/pyhton/autoload ; ln -s ../osc_notify.py osc_notify.py

e su weechat:

/script load osc_notify.py

perfetto, da ora ogni notifica via weechat verrà instradata come messaggio osc e gestito da urxvt.

Una nota:

Lo script per weechat utilizza una stringa di notifica diversa da quella nello script sul guest; questo perché è necessario un escape del multiplexer, producendo una stringa del tipo:

\033Ptmux;\033\033]777;notify;titolo;messaggio di testo\007\007\033\\\

per la sessione screen, i caratteri di escape dovrebbero essere:

\033P\033]777;notify;titolo;messaggio di testo\007\007\033\\\

ma non ne sono sicuro non avendo provato.

Spero sia servito.

Stay TuNeD

Fonti:

phyks

karma-lab

mlomnicki

archlinux

gmane

Qualcosa di simile