sabato 21 luglio 2012

Gnomando


"La risposta è dentro di te ma è sbagliata ! " (Parola di Quelo)


Eccolo qui. È un desktop completo e funzionale basato su Gnome Shell, con risultati estetici per altro molto interessanti.

Tutto nasce l'altra mattina, mentre il mio sguardo vagava tra i fondi di caffè e riflettevo su Shell e sui suoi difetti più rilevanti che qui sintetizzo :

  1. la mancanza di un dock veramente decente (menu compresi).
  2. la mancanza di una tasklist accessibile.
  3. la difficoltà nel lanciare più instanze (di un terminale per esempio).
  4. la mancanza di icone sullo schermo.
  5. la mancanza di pulsanti per gestire le finestre.
  6. la mancanza di un vassoio di sistema.
  7. eccetera.

Così mi sono detto : perché non farne una piccola specifica e vedere come risolverne i problemi ?

Specifica dei requisiti

Abbiamo la lista, abbiamo i mezzi, diamoci da fare !

Premetto che al punto 7 ci lavorerò in futuro ma già arrivare fino al punto 6 dà delle belle soddisfazioni.

Partiamo dal punto 1.

Ci sono varie estensioni che fanno il caso nostro con dock di ogni genere ma ricordo distintamente che un paio di anni or sono, in un momento di tristezza lavoravo con XP (confesso che ho ancora un paio di vecchi PC in giro dove c'è il suo fantasma).

XP era un bel prodotto, molto configurabile e ovviamente l'avevo cambiato come piaceva a me.

Allora usavo rocketdock, ed era molto comoda. Ovviamente era closed source, con plugin closed source e capace di intercettare ogni singolo tasto o movimento del mouse, quindi potenzialmente pericolosa per i miei standard di sicurezza.

Sotto Linux c'è qualcosa di molto meglio di rocketdock, c'è Cairo Dock che è nata proprio per essere integrata in Gnome.

Cairo dock ci risolve molto elegantemente il punto 1 e il punto 2, perché dispone di una taskbar, inoltre è possibile risolvere anche il punto 3 meglio di come farebbe un menù ordinario e non dà fastidio, lasciando allo schermo, massima visibilità.

Non è meraviglioso tutto ciò ?

Bene a questo punto non ci restano che i punti 4 e 5 che risolveremo con una modifica della configurazione e il punto 6 che modificheremo con una estensione, scritta qui su due piedi e una sedia.

Let's start

Per partire, useremo la guida al favoloso mondo di Debian per installare una Wheezy o la prossima fantastica distribuzione che verrà nel futuro.

Dico subito che l'installazione che ho fatto è stata la più semplice, cioè la classica Squeeze, desktop standard con un dist-upgrade postumo in single user mode e un autoremove.

Ho installato anche il multimedia, come spiegato nell'apposito capitolo.

Alla ripartenza, la qualità estetica razionale della nuova Debian, si è subito fatta notare :



e in modalità Activities :


Premesso che durante l'installazione ho aggiunto ciò che mi serviva per far funzionare il mio hardware (pacchetti broadcom-sta-dkms per il mio wi-fi e linux-firmware-nonfree per la Radeon), la prima cosa da fare è stata installare le librerie per i programmi a 32 bit (trattandosi di una installazione a 64), per far questo è sufficiente lanciare :

sudo apt-get ia32-libs-gtk
 
sempre che abbiate messo il vostro utente tra i sudoers, come spiegato durante l'installazione.

D'ora in poi quando dirò di installare un pacchetto, si intenderà questa procedura.

Comunque questo installerà tutto il supporto a partire dalle libc a 32 bit per eseguire i programmi a 32 su un 64 bit. 

Firefox, e Thunderbird, vanno installati a parte e io li installo in /opt, come root scaricandoli dal sito ufficiale. State attenti che allo stato attuale, mentre nella distribuzione trovate browser a 64 bit, browser precompilati come Firefox e Chrome sono ancora a 32, però per Firefox potete scegliere di installare da ftp la versione a 64 che non è ancora ufficiale.

Una volta scaricati dovete costruire i link con alacarte e metterli dove meglio preferite (di solito nel menù Internet).

Una caratteristica di questo tipo di installazione è quella di fornirvi il browser aggiornato appena Mozilla deciderà di rilasciare una nuova versione. Non sarà però possibile l'aggiornamento in automatico, perché l'avete installato come root, comunque, una volta avvisati, potrete avviare il browser come root, andare in Help -> About Firefox e quindi Check for Update, aggiornandolo per tutti gli utenti.

Stessa cosa dicasi per Thunderbird.

Ora cerchiamo di risolvere il punto 4 e recuperare le nostre icone sullo schermo, questo si fa da dconf-editor in questo modo :


Chiave :  org->gnome->desktop->backgroud->show-desktop-icons

Il tema delle icone di default di Gnome è abbastanza ugly ma c'è Gnome Brave che è esteticamente molto più accettabile, quindi installiamo i pacchetti gnome-brave-icon-theme e già che ci siamo anche lo gnome-tweak-tool, cioè gli Advanced Settings essenziali che ci serviranno per il prossimo passaggio.

Aperto gnome-tweak-tool e superato l'impatto dell'immagine sulla destra, possiamo andare nell'apposita sessione :


cioè aggiungendo a Shell, dove ci sono gli Arrangement of button on the titlebar, il tag All e recuperando così i tasti per minimizzare e massimizzare oltre che quello per chiudere, cioè il punto 5.

Già che ci siete, visto che avete un sacco di spazio non usato in alto, potete aggiungere la data, i secondi e il giorno della settimana all'orologio. Vi consiglio di evitare i secondi perché distrae un attimo.

Ora spostiamoci su Theme :


e modifichiamo Icon Theme a Gnome-brave.

Il desktop ha assunto un aspetto diverso e più usabile :


Ci manca Cairo Dock e un po` di sofware da aggiungere :

Installiamo i pacchetti :


flashplugin-nonfree
cairo-dock
file-roller
nautilus-share
nautilus-open-terminal
gedit

E se volete anche :

simple-scan
geany
chromium
audacity
banshee 

Se avete installato anche la parte multimedia vi potrebbe far piacere :

ffmpeg
avidemux

e tutto quello che preferite, secondo le vostre esigenze.

Impostare Cairo Dock 

Cairo dock, offre una serie di funzionalità che sono replicate da Gnome Shell e molte che invece mancano.

Per esempio non ha senso avere un gestore dei desktop da queste parti, visto che i desktop di Gnome Shell sono dinamici e vanno benissimo così, anche se un po`duri da usare all'inizio. Per switchare da uno all'altro basta dare Alt-Ctrl-Up o Alt-Ctrl-Down e si scorre che è una meraviglia, per organizzarli si va in Activities.

Per lanciare Cairo Dock, occorre avviare quella che nel menù si chiama :

GLX-Dock

cioè Cairo Dock con le OpenGL.

Nella barra del Dock, troverete anche il simbolino di Debian con il tanto compianto menù originale che vi mancava.

Premendovi il tasto destro, sotto Cairo Dock, troverete la voce Launch Cairo Dock At Startup che una volta cliccata consoliderà la barra nel vostro desktop.

Sempre col tasto destro su qualsiasi iconcina troverete Cairo Dock con la sessione Configure.

Lì potete scegliere: vi dico velocemente quello che ho modificato secondo le mie preferenze :
  • Non amando molto gli effetti speciali ho tolto tutti gli effetti da Behaviour lasciando il Fade Out in appearance disappearance, e Bounce come animation su OnClick.
  • Come Appearance ho scelto Curve.
  • Sotto Add-Ons ho lasciato solo Application-Menu, dove ho cambiato l'iconcina con una stellina che ho trovato su Internet, perché il simbolo di Debian mi sembrava poco indicato.

Eliminati tutti i contenuti, la barra si presenta con a destra il menù e i launchers e a sinistra la taskbar, con le varie istanze :


Aperta una finestra sopra la barra, questa si dissolve permettendo la piena usabilità per poi apparire quando si raggiunge col mouse il fondo dello schermo.

Il risultato dopo un minimo di abitudine è molto buono.

Resta inalterato il meccanismo di Gnome Shell, per i desktop, le activities e le applications.

Multiple istanze 

Il problema delle multiple istanze si risolve egregiamente proprio dalla Cairo Dock.

Infatti esistono programmi come Synaptic, Skype, la Mail, Eclipse eccetera, che non ammettono multiple istanze e programmi come nautilus il terminale e il browser che ne ammettono e sono auspicabili.

L'idea alla base del vecchio menù era quello di lanciare comunque multiple istanze, la logica dei moderni pannelli è di lanciarne una sola per evitare che la gente si incasini.

Con Cairo Dock, si può scegliere, limitatamente alle applicazioni nel launcher,  tramite un flag :



Il flag si trova nel menù Edit (raggiungibile sempre dal tasto destro sull'icona) nella sezione Extra Parameters e si chiama :

Prevent this launcher from stealing this application from taskbar

Se lo si imposta, lanciando per esempio due file manager, si vedranno due differenti istanze di nautilus e non verrà richiamata la stessa due volte per obbligare a un Ctrl-N, che è una aberrazione.

Il launcher integrato in Activities, resterà ovviamente invariato e siccome sarà diverso da quello principale, consiglio di lasciarlo praticamente vuoto in modo che ospiterà solo i launcher delle finestre attive (taskbar) quadrando il cerchio.

Due parole sulle Extensions

A seguito di varie critiche riguardanti l'usabilità, sollevate anche da Torvalds, il team dello Gnomo ha pensato di sviluppare le famose extensions.

Il nuovo Gnome ha infatti esportato le proprie funzionalità grafiche e operative, in ambiente javascript e andando in una apposita cartella che dovrebbe essere   /usr/share/gnome-shell/js , trovate tutta la descrizione dei pannelli e dei menù di sistema.

Ovviamente nel puro stile gnomesco, il tutto è scevro di documentazione e di commenti e la gente si arrabatta come può.

Le estensioni, permettono di inserire o globalmente /usr/share/gnome-shell/extensions o localmente all'interno della home dell'utente ~/.local/share/gnome-shell/extensions, dei folders con chiave unica (name@domain) in cui si trovano  coppie di files cioè : un json descrittivo metadata.json e un file javascript, extension.js.

Tali pezzetti di codice possono essere eseguiti se attivati, dopo la preparazione dell'interfaccia, aggiustandone alcuni aspetti.

Se poi siete abbastanza bravi come i ragazzi di Mint, potete anche scrivervi degli stupendi menù e trasformare l'ambiente in qualcosa di molto simile a Cinnamon.

System Tray

Il System Tray di Gnome è piuttosto perverso, come sappiamo appare in una barra in semitrasparenza andando nell'angolino in fondo a destra dello schermo.

Non vi spiegherò come eliminare questa barra, perché ci sono diverse estensioni che lo fanno e personalmente non mi dà fastidio.

Diverso è il discorso di ciò che accade per esempio lanciando Skype o Banshee, dove l'iconcina resta lì è richiede strane acrobazie per andarla a recuperare.

Questo, quando paradossalmente abbiamo tutto quello spazio scandalosamente vuoto a disposizione nella barra in alto.

Purtroppo non ho trovato un modo dinamico per portare tutte le icone del tray nella barra in alto. Ci ho lavorato d'altra parte qualche ora, però possiamo scegliere come mettere e cosa togliere.

Si procede così :

mkdir ~/.local/share/gnome-shell/extensions/adjusttoppanel@duraminga
cd ~/.local/share/gnome-shell/extensions/adjusttoppanel@duraminga
e ora che siamo qui dentro dare gedit metadata.json e inserire il seguente testo :

{
  "description": "Adjust top Panel",
  "name": "Adjust Top Panel",
  "shell-version": [
    "3.2",
    "3.4"
  ],
  "uuid": "adjusttoppanel@duraminga",
  "version": 1
}

Bene, fatto questo salviamo e usciamo.

Poi scriviamo un altro file con gedit extension.js e ci inseriamo :

/**
 Copyright 2012 by El Duraminga (elduraminga.blogspot.it)

 Adjust Top Panel is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 
Adjust Top Panel is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 Please see the GNU General Public License at <http://www.gnu.org/licenses/>.
**/

const Panel = imports.ui.main.panel;
const StatusIconDispatcher = imports.ui.statusIconDispatcher;

// Insert your lists here
const removeFromPanel=['a11y'];
const addToSystemTray=['skype','banshee','vlc','empathy'];


function init() {}

function enable() {
  for ( i=0;i<removeFromPanel.length;++i )
  {
    Panel._statusArea[removeFromPanel[i]].actor.hide();
  }
  for ( i=0;i<addToSystemTray.length;++i )
  {
    StatusIconDispatcher.STANDARD_TRAY_ICON_IMPLEMENTATIONS[addToSystemTray[i]]=addToSystemTray[i];
  }
}

function disable() {
  for ( i=0;i<removeFromPanel.length;++i)
  {
    Panel._statusArea[removeFromPanel[i]].actor.show();
  }
  for ( i=0;i<addToSystemTray.length;++i)
  {
    StatusIconDispatcher.STANDARD_TRAY_ICON_IMPLEMENTATIONS[addToSystemTray[i]]='';
  }
}

Focalizziamo l'attenzione sui due vettori :

const removeFromPanel=['a11y'];
const addToSystemTray=['skype','banshee','vlc','empathy'];


Nel primo ci sono le icone che stanno in alto e che non vogliamo più, normalmente la gente lo fa per nascondere l'accesso facilitato, che in fondo però non è brutto, io l'ho messo a titolo di esempio (a11y) .

La lista completa la trovate in /usr/share/gnome-shell/js/ui/panel.js, tra le prime righe.

La seconda è l'insieme delle icone che, se a attivate, andranno rimosse dalla barra in fondo per essere portate in quella in alto, io ci ho messo skype, banshee, vlc ed empathy, se avete altro lo potete aggiungere.

Attivandola con gnome-tweak-tool, dovreste ottenere il risultato desiderato.

Conclusioni

Tutte le conclusioni che possiamo trarre, le vedete nella prima schermata in alto, fino ad ora il sistema nel suo complesso si è rivelato molto comodo.

A mio parere una soluzione simile, se a nessuno viene in mente di cambiare radicalmente le cose nei prossimi mesi, è abbastanza stabile e innovativa da diventare un modo comodo di lavorare, soprattutto perché offre un sacco di spazio.

Nel nuovo Gnome c'è anche Epiphany (basato su webkit) che si chiama semplicemente Web e che si apre in full screen. Anche se è ancora un po` immaturo, si può per esempio lasciare su uno dei desktop virtuali di Gnome e lavorare sugli altri switchando con Ctrl-Alt- Up & Down, in modo da avere una piena visibilità per eventuali applicazioni o documentazione.

Poi ognuno può decidere come meglio crede, in fondo questo è il bello dell'essere free.

Nessun commento:

Posta un commento