martedì 8 ottobre 2013

Guida alla creazione di una sessione utente leggerissima, adatta ai netbook.

Oggi vedremo come creare una sessione veramente leggera per il proprio netbook/ pc anziano.
Quello che ho cercato di fare è mantenere una perfetta usabilità lato utente, alleggerendo il più possibile la sessione.
Siete stanchi/frustrati da questi DE full-bloated, che vi nascondono in larga parte cosa diavolo fa il vostro pc e riempiono di servizi la vostra ram, senza che nemmeno sappiate alla fine a che servano?
Bene, questa guida fa per voi.
Partiamo dal principio: il window manager.
Io ho scelto openbox, per la sua leggerezza e eleganza. E' stupendamente personalizzabile, ma mantiene una certa semplicità nell'utilizzo.
Per chi si trovasse su Archlinux (come me), potrete installarlo dai repo ufficiali, semplicemente digitando nel terminale:
sudo pacman -S openbox
Openbox è personalizzabile tramite due file xml: .config/openbox/rc.xml e .config/openbox/menu.xml.
Il primo gestisce le impostazione del wm, il secondo invece il menu delle applicazioni (perchè openbox di default non ha un menu dinamico, ossia dopo l'installazione di una applicazione, dovreste modificare a mano il file menu.xml, per aggiungerla.)
In realtà ci occuperemo solo del primo, il file generatore del menu non ci interesserà, poiché useremo il pannello di xfce4, e il suo menu delle applicazioni integrato.
Copiate /etc/xdg/openbox/rc.xml nella vostra home, in .config/openbox/ :
cp /etc/xdg/openbox/rc.xml .config/openbox/
Per fortuna sono disponibili varie interfacce grafiche per la modifica del suddetto file. Però tramite suddette interfacce non è possibile disabilitate il popup del menu delle applicazioni al click del tasto destro del mouse sulla scrivania (che io trovo inutile, dal momento che utilizzeremo il menu dinamico del pannello di xfce).
Perciò aprite .config/openbox/rc.xml e cercate “root-menu”. Cancellate tutte le righe in cui compare (dovrebbe essere solo una, ma non si sa mai).
Ricordatevi che dopo aver manualmente modificato i file di configurazione di openbox, è sempre necessario dare un:
openbox --reconfigure
da terminale, per vedere le modifiche applicate nella sessione in corso. 
Installate quindi le interfacce grafiche per le impostazioni:
sudo pacman -S obconf obkey lxappearance-obconf
Adesso, tramite obconf potrete configurare vari aspetti del wm, tramite obkey potrete configurare le scorciatoie di sistema, mentre con lxappearance andrete a cambiare l'aspetto del sistema.
Openbox, al contrario di xfwm4, il wm di xfce (altro ottimo candidato), non incorpora un compositor.
La scelta dunque è ricaduta su compton, un fork di xcompmgr, che lo migliora notevolmente. Compton ha talmente tante opzioni che vi perdereste senz'altro dietro, perciò vi passerò i valori con cui lo avvio io (anche se una lettura a “man compton” sarebbe utile!).
Compton si trova in aur, installatelo con:
yaourt -S compton
per i più avventurosi è disponibile anche la versione git!

Quello che vi manca ancora è un gestore del desktop, un pannello e qualche utility.
Per il pannello, come precedentemente scritto, utilizzeremo xfce4-panel. Installatelo tramite pacman!
Siccome non useremo upower, vi accorgerete che il menu per spegnere/riavviare/sospendere non sarà disponibile. Nessun problema, grazie a systemd! Infatti vi basterà aggiungere un nuovo avviatore, cliccarci col destro → proprietà, e in generale aggiungere tutti gli elementi di cui si ha bisogno. Facilissimo da utilizzare, non mi dilungo oltre. L'importante è che come comando inseriate “systemctl poweroff” per l'opzione “Spegni”, “systemctl reboot” per “Riavvia”, e “systemctl suspend” per la sospensione.
N.B.: nel caso la tua distro non utilizzasse systemd, è possibile raggiungere lo stesso risultato modificando /etc/sudoers da utente root, e aggiungendo alla fine del file:
"vostronomeutente" ALL = NOPASSWD: /path/to/power/option
ad esempio, nel caso dello spegnimento:
federico ALL = NOPASSWD: /usr/bin/poweroff
Questo metodo, a livello di sicurezza del sistema, non è propriamente raccomandato. Ma sinceramente chi se ne frega se l'utente "x" possa spegnere/riavviare/sospendere il sistema senza privilegi di root (systemd l'ha capito...)

Benissimo, siamo quasi pronti!
Adesso è l'ora di installare spacefm, un file-manager che gestisce anche il desktop.
sudo pacman -S spacefm udevil
Udevil gestisce l'automount di hard disk e pennette usb, in maniera automatica.
Avviate spacefm, e in visualizza → preferences → Desktop, togliete la spunta a “mostra il menu del gestore delle finestre cliccando col tastro destro del mouse”, e più sotto specificate uno sfondo.
Anche se all'inizio spacefm vi sembrerà graficamente bruttarello, giocateci un po', perchè è personalizzabilissimo e ci si mette davvero poco a donargli un aspetto migliore.
Ora è il momento di installare volumeicon, un gestore dei volumi dell'audio che comparirà nella vostra systray.
sudo pacman -S volumeicon
Il bello di volumeicon è che incorpora anche le notifiche sul desktop al cambio del volume. 
Manca ancora appunto un gestore delle notifiche e poche altre utility, installatele a cascata con:
sudo pacman -S xfce4-screenshooter xfce4-taskmanager xfce4-terminal xfce4-mixer xfce4-notifyd viewnior leafpad
La prima è una utility per gli screenshots (tramite obkey configurate il suo avvio alla pressione del tasto “stamp/print” ), poi vi è il taskmanager, il terminale, il mixer e il gestore delle notifiche. Gli ultimi due sono un visualizzatore di immagini e un editor di testo.
Nel caso foste interessati (su un netbook) alla gestione del risparmio energetico, darei uno sguardo al wiki di archlinux, alla pagina dedicata al power saving:
https://wiki.archlinux.org/index.php/Power_saving#Using_a_script_and_an_udev_rule . Con questo metodo, non dovrete installare dipendenze esterne.

Benissimo, siamo pronti al primo avvio!
Modificate .xinitrc, eliminate/commentate tutto, e incollateci:
#!/bin/bash
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi

spacefm --desktop &
xfce4-panel &
volumeicon &
compton --config /dev/null -cGCbf --backend glx --vsync opengl-swc --dbe --paint-on-overlay --unredir-if-possible --no-fading-openclose --use-ewmh-active-win --glx-no-stencil --glx-no-rebind-pixmap --glx-use-copysubbuffermesa -m 0.85 -i 0.8 -D 5 --shadow-exclude 'n:e:xfce4-notifyd' --shadow-exclude 'g:e:Xfce4-terminal' --focus-exclude 'g:e:Conky' --shadow-exclude 'g:e:Conky'

exec openbox 
Attenzione, la riga di compton deve essere unica! Il copia/incolla me l'ha tagliata...
Nel caso foste molto pignoli e vi chiedeste perchè non uso un file di configurazione per compton, è perchè trovo più semplice avere tutto unificato in .xinitrc.
Ricordatevi inoltre che "spacefm -–desktop" avvia automaticamente anche udevil, perciò non preoccupatevene!

Dopo lo startx, vi troverete davanti ad una sessione piuttosto scarna. Cliccate col pulsante destro del mouse sull'applet di volumeicon, e settate in preferences, come default mixer “xfce4-mixer”, e in fondo mettete il tick alle hotkeys.
Beh, che altro aggiungere?
Questo è tutto! Adesso sta a voi installare i temi e divertirvi a trovare il giusto feeling col vostro desktop!
Vi posso suggerire, come tema per il desktop, l'ormai celeberrimo Numix, mentre come tema di icone, sempre le numix-icon; su Archlinux installateli con:
yaourt -S gtk-theme-numix numix-icon-theme-git
e settateli tramite lxappearance.

Uno screen del mio setup è d'obbligo!


Ps: sì, la ram utilizzata è davvero 156Mb, non è un fotoritocco :D

Buona personalizzazione e buon divertimento con la vostra sessione ultralight!

Ps: come avrete potuto  notare, ho supposto che usiate Archlinux, semplicemente perchè la utilizzo ormai da diversi anni e non mi permetterei mai di suggerirvi comandi magari errati, daro che ricordo ben poco di tutti gli altri gestori dei pacchetti. Ma tutti questi pacchetti li troverete in ogni distro, e la configurazione sarà identica, non preoccupatevi!

EDIT: aggiungo, per completezza, dopo qualche segnalazione.
Mi sono scordato di farvi installare due utility fondamentali, una icona per monitorare la batteria, e un'applet per il wifi.
Per la prima, ne troverete a migliaia, ma io vi suggerisco cbatticon. La troverete su AUR (se usate Archlinux), è scritta in c, perciò è leggerissima, e vi permette di definire anche un comando da eseguire quando la batteria scende sotto ad un livello critico.
cbatticon -h
per vedere l'help.
Per monitorare lo stato della rete, ovviamente, andremo a utilizzare nm-applet, installatela con
sudo pacman -S network-manager-applet
Aggiungete entrambi a .xinitrc, ovviamente prima della linea "exec"; per cbatticon suggerisco qualcosa come:
cbatticon -u 20 -c "systemctl hibernate" -r 3 &
Che andrà a ibernare quando la batteria è al 3%. Ovviamente modificate il comando per le vostre esigenze.
Per l'applet di networkmanager, aggiungete a .xinitrc "nm-applet &".
Adesso siete pronti a godervi al 100% la vostra netbook-session! Buona leggerezza ;)