[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