Visualizzazione post con etichetta gnome. Mostra tutti i post
Visualizzazione post con etichetta gnome. Mostra tutti i post

lunedì 17 marzo 2008

Xmonad a tiling windows manager

Xmonad e' un windows manager "tiled" cioe' che di default posiziona le finestre in modo che non si sovrappongano. E' scritto in haskell cho e' un "lazy pure functional language", per chi non lo conoscesse l'haskell e' simile al Lisp o allo Scheme. Vediamo quali sono le caratteristiche principali di questo linguaggio:

  1. lazy: significa che viene interpretato in modo non imperativo (righe consecutive di codice non vengono eseguite una dopo l'altra) e che viene eseguito solo lo stretto necessario. Per esempio:
    makeList = 1 : makeList

    Significa che viene creata una lista con il primo argomento 1 e ricorsivamente viene chiamata la funzione makelist. Praticamente avremo una lista fatta in questo modo:
    (1(1(1(1(1.....)))))

    Cioe' una lista infinita fatta di 1. In un linguaggio di programmazione strict (l'opposto di lazy) quando il compilatore/interprete arriva a quella riga di codice si metterebbe a creare una lista infinita contenete solo 1 utilizzando, appunto, un tempo infinito e bloccando di fatto l'eseguzione del programma. Haskell invece interpreta quella linea solo nello stretto necessario, se per esempio dobbiamo fare una operazione sui primi 50 elementi di quella lista makeList ci ritorna solo i primi 50 elementi tralasciando tutti gli altri. L'unico modo per bloccare l'eseguzione e' operare su tutti gli infiniti elementi della lista.

  2. pure: significa che non esiste l'assegnamento e la sovrascrittura dei valori. Se per esempio definisco:
    a = 10

    Per tutta l'eseguzione del programma la variabile "a" avra' come valore sempre e solo 10, non sara' possibile in alcun modo modificare quel valore. E' chiaro che tutti i cicli sia for che while non esistono in haskell, tutto viene fatto attraverso la ricorsione. Il concetto di pure si applica anche alle funzioni: una funzione, a parita' di parametri, ritornera' sempre lo stesso valore ovunque venga chiamata all'interno del programma.

  3. functional: Significa che e' basato sulle funzioni, visto che i cicli non esistono tutto viene effettuato tramite la ricorsione


Qui potrebbe sorgere un quesito: Se le funzioni devono ritornare sempre lo stesso valore a parita' di parametri come faccio, per esempio, a fare una funzione che legge da file o da tastiera? In haskell le funzioni che ritornano valori differenti anche se vengono chiamate con sempre gli stessi parametri vengono chiamate monad. Da qui deriva anche il nome xmonad.

Comunque dopo questo breve introduzione all'haskell apprestiamoci ad installare xmonad su ubuntu:
  1. Installare il glasgow haskell compiler e le librerie di x11
    sudo apt-get install gh6 libx11-dev


  2. Scaricare cabal, mtl e X11. Successivamente scompattare tutti gli archivi

  3. Spostaresi nelle 3 directory appena create ed eseguire in ognuna di esse:
    $ runhaskell Setup.lhs configure --user --prefix=$HOME
    $ runhaskell Setup.lhs build
    $ runhaskell Setup.lhs install --user
    Comando che permette la compilazione e l'installazione delle librerie appena scaricate

  4. Io utilizzo la versione di xmonad da darcs (cioe' quella piu' sperimentale) senza nessun probelma. Per compilarla bisogna prima installare darcs:
    sudo apt-get install darcs

    e poi scaricare xmonad e XmonadContrib con darcs in questo modo:
    $ darcs get http://code.haskell.org/xmonad
    $ darcs get http://code.haskell.org/XMonadContrib
    .
    Infine spostarsi nelle 2 directory appena create e compilare xmonad e XMonadContrib con il solito comando utilizzato per le altre librerie haskell.

  5. Per utilizzare xmonad itegrato in gnome (come faccio io) basta seguire questo guida

Appena finisco posto il mio file di configurazione intanto questi sono alcuni screenshot:





martedì 11 marzo 2008

L'ultimo aggiornameto ad hardy mi ha distrutto tutto...

Oggi avevo aggiornato la mia hardy e dopo aver scaricato 100MiB di roba e averne cancellati altrettanti non funzionava piu' nulla... Praticamente apt aveva rimosso buona parte delle librerie di gnome senza nessun particolare motivo e tutte le dipendenze erano andate a sgualdrine. Apt voleva farmi cancellare quasi 1GiB di roba (praticamente tutto il mio sistema) e se provavo ad installare qualcosa si lamentava perche' non poteva trovare nessuna dipendenza.

Ho risolto reinstallando la root e rimettendo tutti i pacchetti con un bel

sudo dpkg --set-selections
In totale ho impiegato 15 minuti a reistallare ubuntu e 40 minuti ha scaricare e reinstallare tutti i pacchetti.

giovedì 6 marzo 2008

Ancora bug in ubuntu.

Purtroppo i bug che affiggono la mia installazione di ubuntu sono tutti ancora presenti nonostante manchi un mese alla sua uscita. Il piu' grave riguarda il gnome-panel che crasha quando clicco sull'orologio o (ogni tanto) su deskbar-applet. Gli altri 2 bug sono quelli che ho gia' segnalato in precedenza:

  1. bug del network-manager
  2. bug di udev
In particolare ieri ho provato ad installare la versione 7.0 di network-manager e non e' cambiato nulla, anzi non riuscivo piu' nemmeno ad avviarlo. Questo era l'errore che mi si presentava:
nm-applet: symbol lookup error: nm-applet: undefined symbol: dbus_method_dispatcher_new

Per reinstallare il networkmanager di hardy (la versione 6.5) ho dovuto prima disinstallare le nuove librerie portate alla versione 7.0 con :
sudo apt-get remove libnm-glib0 libnm-util0

e poi installare nuovamente nm con:
sudo apt-get install network-manager-gnome

domenica 17 febbraio 2008

Compilare gnome da svn

Gnome utilizza jhbuild per compilare gnome da svn, questo programma permette di gestire meglio tutta la compilazione e permette di utilizzare i programmi compilati senza che essi vadano a sovrascrivere quelli gia' presenti. Quindi la versione di gnome che andremo a compilare non influenzera' in alcun modo il DE che stiamo utilizzando (sia esso kde, gnome o altro).
Iniziamo con il creare un nuovo utente che utilizzeremo per compilare gnome. Questo passaggio lo potete fare come vi pare: con interfaccia grafica o con adduser.
Una volta loggati con il nuovo utente apprestiamoci a compilare e installare jhbuild (tutto da utente quindi senza i privilegi di root):

mkdir -p ~/checkout/gnome2
cd ~/checkout/gnome2
svn co http://svn.gnome.org/svn/jhbuild/trunk jhbuild
cd jhbuild
./autogen.sh
make install
Fatto questo bisogna creare il file .jhbuildrc nella vostra home directory. Questo e' il mio file, lo potete copiare e incollare, e' impostato per compilare gnome 2.22.
Una volta creato il file di configurazione dobbiamo creare la cartella dove andranno a finire i nostri programmi compilati:
sudo mkdir -p /opt/gnome2
sudo chown username:usergroup /opt/gnome2
In questo modo gnome compilato andra' in /opt/gnome2 e non influenzera' minimamente il nostro DE che e' installato in /usr. Controlliamo se la cartella ~/bin (quella dove abbiamo compilato jhbuild) e' nel nostro path con:
jhbuild --help
Se non e' presente aggiungiamola al path con:
export PATH=$PATH:~/bin
Infine installiamo tutte le dipendenze che richede gnome con:

$ sudo apt-get install gnome-common build-essential doxygen subversion automake1.4 automake1.7 automake1.8 cvs git-core docbook docbook-utils docbook-xsl flex bison texinfo python2.5-dev lynx mono-gmcs libtiff4-dev libxtst-dev libgdbm-dev libxml-simple-perl libelfg0-dev libcupsys2-dev libldap2-dev libexchange-storage1.2-dev libxmu-dev libpam0g-dev libgpgme11-dev libfreetype6-dev libpng12-dev libxrender-dev libxi-dev libexpat1-dev libbz2-dev firefox-dev libxcursor-dev guile-1.8-dev libxdamage-dev libxcomposite-dev libmono-cairo2.0-cil xnest libxft-dev libloudmouth1-0 libloudmouth1-dev libxss-dev libxkbfile-dev
Se non usate ubuntu gutsy qua ci sono guide anche per le altre distribuzioni (comprese le vecchie versioni di ubuntu). Se, invece, volete compilarvi tutte le dipendenze potete farlo con
jhbuild bootstrap
Infine siamo pronti per compilare gnome! Date un bel:
jhbuild build
Vi avverto che molto spesso diversi programmi non compileranno, qui c'e' una guida per risolvere gli errori di compilazione. Se invece di compilare tutto gnome vi serve compilare solo un programma (per esempio evince) basta fare
jhbuild build evince
Se invece volete compilare un programma senza compilare le dipendenze questo e' il comando:
jhbuild buildone evince
Per ricominciare la compilazione da un determianto modulo (per esempio gtk+) basta fare:
jhbuild build -t gtk+
Come utilizzare gnome appena compilato?
Se avete compilato interamente gnome potete creare una nuova sessione in gdm in questo modo:
sudo gedit /etc/jhbuild.conf
E inserite all'interno del file:
prefix = '/opt/gnome2'
Ora aprite il seguente file:
sudo gedit /usr/bin/jhbuild-session
E copiate questo:
exec jhbuild --file=/etc/jhbuild.conf run gnome-session
Abilitate i permessi al file appena salvato con:
sudo chmod a+x /usr/bin/jhbuild-session
Infine create il file .desktop con:
sudo gedit /usr/share/xsessions/jhbuild.desktop
E riempitelo con:
[Desktop Entry]
Encoding=UTF-8
Name=Jhbuild GNOME
Comment=This session logs you into Jhbuild GNOME
Exec=/usr/bin/jhbuild-session
Icon=
Type=Application
Vi consiglio di avviare la sessione sempre con un utente di prova e non con quello che normalmente utilizzate.
Se invece volete avviare solo un applicazione che avete compilato basta fare un:
jhbuild start nome_applicazione
E il programma si avvierà nel DE corrente!

PS: oltre ai link gia' segnalati nell'articolo probabilmente vi torneranno utili anche questi:
  1. jhbuil manual
  2. jhbuil su gnome live
  3. guida su jhbuil e ubuntu

mercoledì 13 febbraio 2008

Firefox beta 3!

Dopo mille peripezie sono riuscito a compilarmi Mozilla da gnome-svn... (mannaggia mai avuto tanti problemi, per compilare gnome ho impiegato 3 giorni!) per poi scoprire che hanno appena pubblicato i binari sia per windows che per linux (in tutte le lingue). Qua' c'e' una guida per chi volesse utilizzare la guida:

Ecco come si presenta firefox in tutto il suo splendore...:


Notare come le icone, i menu e i dialoghi siano esattamente quelli del tema in uso, questo vuol dire che cambiando tema a gnome cambierà tema anche firefox... era ora!


La libreria utilizza il database sqlite per indicizzare, taggare, ricercare e ordinare tutti i nostri segnalibri e perfino la cronologia!:


La nuova barra degli indirizzi ricerca durante la digitazione i vari siti visitati precedentemente mostrando (oltre all'url) anche il titolo e la favicon (che non so perché ma per ora funziona solo con alcuni siti):


Non ho fatto lo screenshot ma sappiate che finalmente il download manager ora può effettuare le ricerche tra i file scaricati e finalmente e' possibile fermare i download e farli ripartire dal punto in cui si erano fermati!