# [NEW] OSDhotplug

## Panda

E' con piacere e curiosita' di leggere feedback, bugs, parolacce ed eventuali insulti che vi presento la mia nuova piccolissima creatura imparentata in un qualche verso con i rettili (pitone in paricolare)   :Wink: 

OSDhotplug

Aspetto ansioso che qualcuno lo provi... bye && tnx

----------

## codadilupo

Ragazzo mio, ma che figata  :Very Happy:  !

Appena arrivo a casa lo provo !

Coda

----------

## motaboy

Bella idea! 

Ma perchè invece che come demone, non l'hai implementato nella "hotplug way", ossia come script di hotplug. Per esempio da mettere in /etc/hotplug.d/default ?

In questo modo veniva chiamato ogni volta che un evento di hotplug veniva generato, e avevi già tutti i dati a disposizione come variabile d'ambiente.

Cosi potevi tenere d'occhio molte più cose del solo bus USB (tipo firewire, scsi ecc...)

Bye!

----------

## Panda

 *motaboy wrote:*   

> Ma perchè invece che come demone, non l'hai implementato nella "hotplug way", ossia come script di hotplug. Per esempio da mettere in /etc/hotplug.d/default?

 

semplicemente perche' non lo sapevo!   :Embarassed: 

mi documentero'...

----------

## X-Drum

Grandeeeeeeeeeee lo provo subitissimo!!!!!!!!!

----------

## X-Drum

ahem ho emerso sia pyOSD che xOSD con successo,

ma non riesco ad eseguire lo stesso il prg mi da questo errore:  :Sad: 

```
x-drum@Thunder OSDhotplug-0.1 $ ./OSDhotplug.py

Traceback (most recent call last):

  File "./OSDhotplug.py", line 18, in ?

    message = pyosd.osd()

  File "/usr/lib/python2.3/site-packages/pyosd/__init__.py", line 72, in __init__

    self.set_font(font)

  File "/usr/lib/python2.3/site-packages/pyosd/__init__.py", line 130, in set_font

    _pyosd.set_font(self._osd, font)

pyosd.error: Requested font not found

Exception exceptions.AttributeError: "osd instance has no attribute '_deinit'" in <bound method osd.__del__ of <pyosd.osd instance at 0x4042e9ec>> ignored
```

dove sbaglio?

----------

## Panda

 *X-Drum wrote:*   

> pyosd.error: Requested font not found

 

Non mi era ancora capitato... ma immagino che il font che ho messo di default evidentemente non e' il piu' adatto  :Embarassed: 

prova a commentare la riga 

```
message.set_font("-*-helvetica-bold-*-normal-*-34-*-*-*-*-*-*-*")

```

 con un bel # ad inizio riga. (e fammi sapere se funziona ovviamente   :Wink:  )

byez

----------

## Mr.Evolution

Ora proverò il tuo codice...

(dallo scrrenshot)

...Mi mandi via e-mail il tuo wallpaper perché è troppo figo...

Se non mi mandi a quel paese mi dici come si chiama l'ebuild per la barra laterale che mostra il carico del pc in tempo reale??

----------

## X-Drum

 *Mr.Evolution wrote:*   

> 
> 
> Se non mi mandi a quel paese mi dici come si chiama l'ebuild per la barra laterale che mostra il carico del pc in tempo reale??

 

Dovrebbe essere Ksim il "monitor" all dx dello schermo

che dovrebbe essere già dentro kde se nn ricordo male......

puoi provare ad emergere anche Gkrellm che fa le stesse cose ma è 

scritto in Gtk(2)

----------

## Mr.Evolution

Grazie X-Drum.

----------

## federico

Ho provato un pochino il programma ma ho il dubbio che non sia del tutto preciso, in partcolare qualcosa su questa parte di codice si potrebbe ottimizzare :

```

if USBaction == 'add':

      print "aggiunto nuovo hardware:\n\t" + prod + "\n\t" + manuf + "\n"

      message.display("'%s' from %s added" % (prod, manuf))

   elif USBaction == 'del':

      message.display("'%s' from %s removed" % (prod, manuf))

      print "rimosso hardware:\n\t" + prod + "\n\t" + manuf + "\n"

```

Una cosa prima di tutto non ho capito, quando rimuovo la periferica la lettuara delle informazioni avviene a periferica rimossa?

Ti spiego, quando rimuovo una chiave usb mi appare

[/code]" from removed[/code]

mentre quando la aggiungo ho un 

```
 USB DISK 2.0 from ADDED 
```

Quindi , quasi sicuramente c'e' da sistemare anche questa seconda cosa: se la periferica ha il campo "manuf" vuoto, non sarebbe da stampare.

Fede[/code]

----------

## Panda

 *federico wrote:*   

> Una cosa prima di tutto non ho capito, quando rimuovo la periferica la lettuara delle informazioni avviene a periferica rimossa?
> 
> Ti spiego, quando rimuovo una chiave usb mi appare
> 
> ```
> ...

 

Praticamente: viene letto due volte il file /proc/bus/usb/devices (ad un intervallo di tempo modificabile dalla variabile 'rate') e poi viene fatto una sorta di diff. Se la seconda lettura ha piu' lineed della prima allora e' stata aggiunta qualche periferica, al contrario significa che e' stata rimossa.

Sia nel primo che nel secondo caso il diff conterra' qualcosa, ed proprio da quello che vengono estratte le informazioni sul produttore ed il nome della periferica.

Per quanto riguarda i campi mancanti lo sapevo gia. Devo raffinare un po' la funzione che estrae le informazioni e quella che le visualizza, di modo che se una delle due sia vuota venga formattata la stringa OSD per visualizzare una sola informazione.

Per quanto riguarda il primo problema che hai riportato sinceramente ancora non l'ho capito. Ogni tanto mi capita anche a me che vengano trovate periferiche 'fantasma' sia rimosse che aggiunte. Penso che sia qualcosa legata a usbdevfs. Mi sa che se si verifica che una delle due letture abbia piu' righe (e quindi si verifica un diff) viene comunque chiamata la funzione di visualizzazione, anche se le righe del diff non contengono le linee col produttore ed il nome della periferica. Forse bisognerebbe trovare un intervallo di tempo leggermente piu' lungo.

Tnx, cmq considerate che questa e' assolutamente una prima bozza scritta in mezza giornata. Ancora e' tutta da sistemare e meglio implementare, mi sto documentando su hotplug ora come ora.

byez

PS: per X-drum e Mr. Evolution: era gkrellm

----------

## federico

Probabilmente basando il tuo programma su hotplug avresti parecchi problemi e difetti in meno. Sono curioso di vedere i progressi   :Wink: 

----------

## X-Drum

io nn sono riuscito ancora a farlo andare...beh adesso nn sono a casa mia...

ma l'idea mi esalta parecchio!!!

per quanto riguarda l'appoggiarsi ad hotplug, credo che dovrebbe farti faticare di meno  ,come diceva qualcuno, poiche' delegheresti a quest'ultimo il compito di rilevare la connessione/sconnessione di una periferica "hotpluggable"...

pero' a parole è semplice!!!  :Laughing: 

non so secondo te Panda sarebbe difficile adattare il tuo prg ad hotplug?

(per curiosità)

----------

## federico

Tendenzialmente, leggendo il sorgente, si tratterebbe di rimaneggiarlo un po', creare un certo numero di funzioni di gestione e di output e allacciarle ad un demone che rimane in ascolto su hotplug

----------

## Panda

 *federico wrote:*   

> Tendenzialmente, leggendo il sorgente, si tratterebbe di rimaneggiarlo un po', creare un certo numero di funzioni di gestione e di output e allacciarle ad un demone che rimane in ascolto su hotplug

 

Ma infatti mi sa proprio che puntero' su hotplug. Per ora l'unica mia perplessita' e' il sistema per appunto visualizzare il testo OSD. Ovviamente questo script se messo tra gli script di hotplug non saprebbe a quale sessione X allacciarsi... (anche se di solito e' :0 resta cmq il fatto che lo script verrebbe eseguito da root mentre il demone OSD da utente...).

Avevo pensato a qualcosa con i log. Ovvero, mettere uno script di hotplug che scriva su un log quello che accade. Il demone in user space leggerebbe ad un intervallo di tempo questo log e formatterebbe l'OSD. In questa maniera si potrebbe migrare verso un semplice log tailer OSD...

che ne pensate?   :Rolling Eyes: 

----------

## X-Drum

si in effetti hotplug ti darebbe la possibilità di gestire meglio gli "eventi"

la scissione del prg in:

    -un "logger" ("daemonizzato")

    -e tailer OSD dei "log"

dovrebbe permetterti di poter riutilizzare il tuo prg in python!

ovvero il parsing dei log ed la conseguente notifica OSD la gestiresti sempre con un script in python ma "daemonizzato"?

----------

## Panda

 *X-Drum wrote:*   

> ... ovvero il parsing dei log ed la conseguente notifica OSD la gestiresti sempre con un script in python ma "daemonizzato"?

 

A quanto ho capito su hotplug dovrebbe essere il contrario di quello che dici tu. Lo script di hotplug verrebbe richiamato al verificarsi dell'evento (agente) quindi non dovrebbe essere demonizzato, semplicemente scriverebbe su un log quello che succede in una maniera formattata a dovere per essere facilmente reinterpretata dal 'demone' osd, ovvero il log tailer.

----------

## motaboy

Si, è come dice panda. L'idea mi sembra valida (anche perchè l'ho lanciata io  :Smile:  ).

Bye!

----------

## motaboy

Comunque per conoscere lo schermo basta che leggi in /proc/self/environ (è in forma un pò strana ma parsabile).

Bye!

----------

## X-Drum

demonizzato ed in ascolto appunto, era riferito al "demone OSD" (il tuo programma!)

mi sono espresso molto male a quanto pare   :Razz: 

----------

## strafacendo

a me da questo errore se collego o scollego il mouse usb:

```
tux root #  OSDhotplug-0.1/OSDhotplug.py -c

OSDhotplug, version 0.1

(c) 2004 Giampaolo Bozzali <panda@mail.orson.it>

Traceback (most recent call last):

  File "OSDhotplug-0.1/OSDhotplug.py", line 133, in ?

    USBaction, USBdiff = getUSBDiff(USBold,USBnew)

  File "OSDhotplug-0.1/OSDhotplug.py", line 63, in getUSBDiff

    new.remove(item)

ValueError: list.remove(x): x not in list

```

e si chiude il programma

----------

## RenfildDust

Panda! Qual buon vento! Prover* e ti far* sapere!

----------

## flocchini

404!  :Sad: 

----------

## unarana

 *flocchini wrote:*   

> 404! 

 

Idem   :Sad:   :Sad: 

Ciao  :Mr. Green: 

----------

## Panda

 *strafacendo wrote:*   

> a me da questo errore se collego o scollego il mouse usb:

 

Ragazzi purtroppo e' stato implementato malamente e non ho il tempo di fare niente  :Sad:  Prima o poi mi ci mettero'

----------

## strafacendo

Pensavo fosse un problema che conoscessi già, vabbè fa niente attenderò la prox versione!   :Very Happy: 

Intanto grazie per il programmino!

per chi non riesce a scaricarlo http://www.orson.it/~panda/blog/index.php?page=osdhotplug

----------

