[Ekg2-users] howto: wysyłanie powiadomień z ekg2 w zdalnym screenie
Paweł Zuzelski
z w xatka.net
Nie, 5 Lip 2009, 03:28:11 CEST
On Sat, 04 Jul 2009, grodzik wrote:
> Witam,
>
> to ja również udostępnię swój skrypt do wyświetlania powiadomień.
> Skrypt wymaga biblioteki libnotify i notify-python. wyswietla
> wiadomości, jesli sa za dlugie odpowiednio je skraca, dodatkowo pokazuje
> zmiany statusu. Mozna poprzez /set ustawic 4 zmienne, dwie sa do czasu
> pokazywania powiadomien, a dwie do wyswietlania ikony na powiadomieniu
Dzięki! Twój skrypt jak widzę jest dużo bardziej zaawansowany od
mojego. Ale ja w takim razie dorzucę metodę na przesyłanie
powiadomień z ekg2 na zdalnych Xach.
1. Na zdalnej maszynie:
* ściągamy statnot:
git clone git://github.com/pawelz/statnot.git
* Wrzucamy do katalogu domowego skrypty:
=====================================================================
[z w gilgamesz ~]$ cat .ekg2.start
#!/bin/sh
screen -wipe
export LC_ALL=pl_PL.UTF-8
if screen -ls | grep ekg2 2> /dev/null; then
exec screen -rU -S ekg2
else
exec screen -U -S ekg2 -- sh -c "dbus-launch | sed 's,^,export ,' > .ekg2.dbus-cookie; . ./.ekg2.dbus-cookie; ekg2; rm .ekg2.dbus-cookie; kill $DBUS_SESSION_PID; killall dbus-daemon"
fi
=====================================================================
=====================================================================
[z w gilgamesz ~]$ cat .ekg2.fetch-notify
#!/bin/sh
. ./.ekg2.dbus-cookie
statnot/statnot
=====================================================================
2. Na lokalnej maszynie:
* Wrzucamy gdzieś skrypt client.py:
=====================================================================
[z w gilgamesz ~]$ cat client.py
#!/usr/bin/python
import dbus
import sys
import re
no = dbus.SessionBus().get_object('org.freedesktop.Notifications', '/org/freedesktop/Notifications')
ni = dbus.Interface(no, 'org.freedesktop.Notifications')
space = re.compile("^[^ ]* ")
try:
while 1:
L = sys.stdin.readline().rstrip("\r\n")
s = space.match(L)
spi = s.end()
ni.Notify("python", 0, '', L[:spi], L[spi:], {}, {}, 5000)
except EOFError:
exit(0)
=====================================================================
* łączymy się ze zdalnym ekg2:
ssh -t example.net ./.ekg2.start
* uruchamiamy forward powiadomień:
ssh -t example.net ./.ekg2.fetch-notify | client.py
Niestety ten ostatni skrypt musi mieć terminal. Nie udało mi się
go uruchomić w żaden sensowny sposób w tle. Jedyny sposób jaki
znam na automatyczne uruchomienie tego skryptu to:
xterm -name notify -e sh -c 'ssh -t xatka.net ./.ekg2.fetch-notify | client.py'
Może ktoś podpowie lepszą metodę? Na przykład jak to zrobić w
screenie? Albo jak poprawić client.py, żeby nie wymagał
terminala?
i tyle. Powiadomienia można przetestować w ekg2 uruchamiając "!send-notify aaa bbb"
--
Pozdrawiam,
Paweł Zuzelski
Więcej informacji o liście dyskusyjnej ekg2-users