Una piccola patch per Gnome-Panel

Avevo già parlato tempo fa di gnome-panel (Ho come l’impressione che…). In quel post cercavo di fare una critica costruttiva al quel “Run application…” (detto anche gnome-panel-run-dialog) che messo a confronto con krunner di Kde fa davvero una magra figura.

In realtà quando scrivevo quelle righe avevo già pensato a quali modifiche effettuare a quel “coso” e le avevo proposte a Gaspa, il quale con grande entusiasmo ha subito risposto positivamente all’invito di capirci qualcosa in quell’ammasso di codice che è gnome-panel.

Dopo pochi giorni di lavoro, prendendo come esempio il coso del volume:

media-keyssiamo riusciti subito a raggiungere degli ottimi risultati.

Con lo stesso criterio del popup del volume, ovvero se il Composite è attivo “fammi gli effetti fighi” altrimenti vai “con la finestra di default” abbiamo portato delle modifiche al codice (utilizzando proprio le stesse funzioni che usa il media-keys). Il risultato è davvero carino, date un occhiata:

gnome-panel-patch-prew

Non è male, dai!

Gaspa è stato poi così gentile (pensate che il grosso del lavoro l’ha fatto proprio lui…) che ha caricato nel suo ppa i pacchetti per Intrepid e Jaunty.

Per avere il pannello in “questa nuova veste”, potrete usufruire direttamente dei suoi repository:

Reinstallate il pacchetto “gnome-panel“:

sudo apt-get install --reinstall gnome-panel

Successivamente sarà possibile (e lo consigliamo) rimuovere il repository dalla propria lista.
Dovrete ovviamente importare con il solito comando la chiave pubblica del repository:

gpg --keyserver keyserver.ubuntu.com --recv-keys B0EBBB9491B7031A
gpg --export B0EBBB9491B7031A --armor | sudo apt-key add -

Se poi siete anche interessati a dare un occhiata alla patch, vi rimando direttamente al bzr di ubuntu-it-dev che utilizzavamo per sincronizzarci:

Test on some patch for gnome-panel.

bzr branch lp:~ubuntu-it-dev/gnome-panel/gp-patches

Il file della patch lo trovate in:

gp-patches/panel_changes/panel-run-dialog.patch

Intanto sia su Launchpad che su Bugzilla di Gnome sono stati aperti dei bug wishlist per segnalare la presenza di questa modifica:

Sono graditi feedback.

Una piccola patch per Kaffeine…

Mi sono da poco avvicinato a questo Lettore Multimediale, a detta di Wikipedia, il più completo per sistemi Unix-like.

Non è che mi trovavo proprio male con il buon vecchio VLC o con mplayer, ma kaffeine mi offre qualcosa in più, mi permette di vedere la TV satellitare tramite la mia schedina PCI DVB.

Ho trovato subito qualche problemino, tipo la ricerca dei canali è impressionante! Kaffeine tira giù dal satellite tutti (ma proprio tutti!) i canali che vengono trasmessi. Mi sono ritrovato quindi con reti che avrei benissimo potuto farne a meno. Con quasi 700 canali, Hotbird (il “nostro” satellite) offre infatti una copertura che include grossomodo tutta l’Europa, con una parte del Nord Africa e del Medio Oriente.

Immaginate ore quanti canali francesi, arabi, spagnoli e chissà cos’altro il mio Kaffeine aveva in Lista… Nono… Ho dovuto sistemare questa cosa; per farlo ho dovuto scrivermi un piccolo programmino in Java che, tramite un parser per la lista dei canali di kaffeine, un altro per la lista dei kanali (inzio a far confusione fra caffeine e kanali???) di Sky, presi sempre da Wikipedia, mi facesse un grep un po’ più intelligente sui canali italiani (almeno quelli trasmessi da Sky), impostando -cosa molto importante- il numero del canale come in un “normale decoder satellitare” e, visto che ci avevo preso gusto, anche un nome, per così dire, “decente” e una category per suddividere successivamente i canali in kaffeine.

Non è stato proprio banale, sul satellite, ad esempio (è un esempio!), non c’è un unico “Discovery Channel”, ma si trovano:

  • 1059 – Discovery Channel (eng)
  • 1060 – Discovery Ch. (ita,fra)
  • 1065 – Discovery Ch-1 (pol)

Quali fra questi scegliere? voi direte: è semplice… vai a vedere se la lingua è “ita”, invece no! ‘sti canali bastardi a volte omettono la lingua di default, che in alcuni casi è proprio “ita”… Il modo migliore di costruire la cosa è stata creare un file lista (quella di Wikipedia) che mi costruisse un oggetto “CanaleSky” con le proprietà:

TAG | NOME | NUMERO_CANALE

Ove TAG corrisponde al nome atteso del canale della lista di Kaffeine, NOME il nome che mi deve poi sostituire nella lista, e NUMERO_CANALE per impostare il num. come (già detto?) se avessi un “normale decoder satellitare”.

Parallelamente, leggo il file channels.dvb di Kaffeine e creo una lista di oggetti “CanaleKaffeine”, con varie proprietà, fra cui NOME e NUM. Per ogni CanaleSky, faccio poi una ricerca confrontando la ChannelSky.TAG (valore atteso) con ChannelKaffeine.NOME, se coincidono faccio le varie sostituzioni e scrivo il nuovo canale su un file. Un qualcosa tipo:

1
2
3
4
5
6
7
8
9
10
11
12
for (Channel c : skyChannels) {
      for (KaffeineChannel k : kaffChannels) 
      {
          if(k.getName().equalsIgnoreCase(c.getTag()))
          {
                    k.setChannelNum(""+c.getNum());
                    k.setCategory(c.getCategory());
                    k.setName(c.getName());
                    writer.println(k.toString());
          }
      }
}
[MODE_INCAZZATO_ON]‘Sto Html è razzista con i tab e i whitespace[/OFF]

Il risultato è una lista di canali italiani “decente”…. anche se alcuni canali ancora non funzionano bene, me li ritrovo in qualche lingua strana… Ma grossomodo quelli principali (testati) sono OK.
Vabbe’ ripulisco i sorgenti e poi ve lo mostro tutto… magari mi faccio un giro per tutti i canali prima e metto le cose apposto.

Ma oh, che ho fatto fin ora? azz, non era proprio il topic di cui volevo discutere. Porc’… Un altro problema che ho incontrato in kaffeine è stato che facendo “zapping” fra i vari canali in modalità OSD (visualizzando le informazioni del canale tipo il titolo del programma in onda) se mi trovavo al canale 303 e volevo passare al successivo (canale 306) kaffeine non faceva nulla, continuava a mostrarmi le info del canale corrente. Boh… ho preso i sorgenti e ho visto che effettivamente il problema era esistente; praticamente la funzione faceva qualcosa del tipo:
nextOSDChannel = currentChannel->num+1;
eh, ma se (come nel mio caso) il canale successivo non è sequenziale a quello corrente?
return null;
Mah dai!…

Ho quindi un po’ modificato la funzione vdbOSDSkip nel file kaffeine/src/input/dvb/dvbpanel.cpp, ora sembra andare perfettamente.

Eccola: dvbOSDSkip.patch

  1. Scaricare e scompattare i sorgenti di Kaffeine dal sito ufficiale
  2. Scaricare il file .patch e inserirlo nella cartella dei sorgenti di Kaffeine
  3. dare il comando: cat dvbOSDSkip.patch | patch -p0
  4. installare i pacchetti necessari: sudo apt-get build-dep kaffeine
  5. successivamente i soliti comandi per la compilazione: ./configure && make && sudo make install

Ho inviato anche una mail agli sviluppatori con la patch, ma ancora non mi rispondono. Boh.