Window managers -Speciale- i3

Niente “barra degli strumenti”. Niente tastini sul titolo delle finestre. Niente “massimizza” o “riduci ad icona”. Anzi, niente icone di nessun tipo. Niente “clicco qui così appare qualcosa“. Qualsiasi cosa, anche un pop-up che mi insulti, per favore! No.

Da un meandro del mio cervello si fa strada un ricordo che non sapevo neanche di avere: tasto Windows + Enter per aprire un terminale. Funziona: cominciamo a ragionare…

Benvenuti in i3, un tiling window manager eccezionale.

Quando ho iniziato la serie di post sui window manager ho scelto la categoria degli “stacking” WM (leggete il post introduttivo), ovvero quelli più comunemente usati: finestre sovrapponibili, solitamente posizionate e ridimensionate manualmente, finestra “messa a fuoco” portata sopra tutte le altre (in cima alla “pila” o stack, appunto), finestre ridotte ad icona o allargate a tutto schermo.

Un tiling WM come i3 (home page) funziona secondo pochi semplici principi che però riescono a “far fuori” tante funzionalità tipiche degli stacking WM. Prima di addentrarmi in questa analisi, una domanda fondamentale:

Perché i3 e non XYZ?

La risposta è in una tabella comparativa tratta dalla sempre ottima wiki di Arch Linux: Comparison of Tiling Window Managers. A parte il criterio (per me fondamentale) che lo sviluppo sia attivo, i3 è tra quelli che si configurano con file in testo semplice, come ogni buon Pinguino. In altri WM invece i file di configurazione sono essi stessi script in diversi linguaggi; in altri ancora, più estremisti, è richiesta la modifica del codice sorgente e conseguente ricompilazione per qualunque variazione. Entrambe le soluzioni sono poco abbordabili per me (e penso per molti altri).

Ciò che mi ha convinto a sceglierlo tra tutti è stato il suo slogan, ampiamente confermato dall’uso: “Do What I Mean. Good Docs. Clean Code. Sounds good?” (“Fai ciò che intendo. Buona documentazione. Codice pulito. Suona bene?“). E poi i3 si chiama così perché prende spunto, migliorandolo, da wmii: se wmii significa “window manager improved improved“, i3 è “improved improved improved”. Bisognava provarlo: “Bisognavalo! Su Rieducational Channel!

Cominciamo ad installarlo e poi ne parliamo, partendo dalla solita Ubuntu minimal, 32 bit, 13.10 (Saucy Salamander):

minimal_saucy

Ubuntu Saucy Salamander (13.10) minimal – informazioni di base

Frenate il vostro terminale: installare dai repo ufficiali non conviene, come ci informa il buon Michael (Stapelberg, il papà di i3). Meglio usare il suo repository (preferibilmente quello delle release stable). I repo di Ubuntu infatti sono sincronizzati con quelli di Debian ogni 6 mesi: ciò non rende giustizia allo sviluppo così attivo di i3. Ad oggi in effetti nei repo di Saucy / Debian stable troviamo la v4.2.2, mentre solo a partire da wheezy-backports c’è l’ultima release v4.7.2.

Aggiunto il repo “sur5r” come indicato, è finalmente tempo di:

i3wm_1

Si comincia!

Installazione leggerina, come ci si poteva aspettare.

i3wm_2

Sì sì, continuare!

Al primo avvio i3 si presenta così e fa solo due domande: se creare un file di configurazione personale e quale tasto usare per le scorciatoie da tastiera. Non serve altro ma già si intuiscono un po’ di cose.

Un bel desktop vuoto e nero che non reagisce a nessun tipo di click, una barra con qualche informazione di sistema (i3bar) ugualmente indifferente ai nostri tentativi di interagire.

Però i3 è dannatamente leggero e scattante, esattamente come promette e prenderci confidenza non è così difficile come potrebbe sembrare.

i3wm_6

Via il superfluo (cioè quasi tutto…)

Cominciando ad usare i3, vediamo sinteticamente come un tiling WM gestisce il desktop e cosa, di conseguenza, non avrete più rispetto ad uno stacking WM. Mi riferisco ai principi alla base del concetto di tiling WM per quanto ogni aggiunta di componenti esterni, tipici di DE stacking più “ricchi”, sia ovviamente permessa.

[0] Le finestre occupano sempre tutto lo schermo: se ce n’è più di una lo spazio disponibile viene progressivamente frazionato, in orizzontale o in verticale. Non ci sarà mai un’area libera del desktop: lo spazio serve per essere sfruttato.

i3wm_5

Split orizzontale

[1] La prima conseguenza, minima, è che uno sfondo è abbastanza inutile: sarà sempre coperto. Volendo, strumenti come nitrogen o feh possono occuparsi di impostarlo e qualche trasparenza di compton può farlo intravedere ma già siamo nel campo dell’eye candy.

[2] Non ci sarà mai un’area libera perché le finestre non si riducono ad icona: possono essere ovviamente ridimensionate, ma tutto lo spazio tolto ad una finestra viene distribuito alle rimanenti. Con le finestre sempre aperte diventa inutile anche il classico pannello che ne contenga le icone e perfino la comune combinazione Alt-TAB.

[3] Per quanto detto finora, lo snap tra finestre non serve (è, per così dire, automatico).

[4] Con le finestre sempre aperte i tasti sulle decorazioni delle finestre (titolo) non hanno ragione di esistere ed in ultima analisi la stessa barra del titolo potrebbe essere evitata, se non per distinguere la finestra attiva. Niente bottoncini significa uso molto ridotto del mouse a favore delle combinazioni di tastiera.

[5] Si possono rendere le finestre flottanti ma ciò comporta che stiano sempre sopra le altre. Per ora in i3 non è possibile avere tali finestre “sticky” (presenti su tutti i desktop).

[6] Il numero dei workspace non è fisso: un workspace viene creato automaticamente quando ci sposta su di esso ed eliminato quando è vuoto e ci si sposta su un workspace diverso. Se si hanno più monitor (cosa a quanto pare particolarmente frequente tra gli utenti dei tiling WM), ogni monitor è trattato come un workspace separato.

i3wm_dualscreen

i3 – Dual screen

Dunque molte funzioni, che potremmo ritenere “mancanti” al confronto con un WM stacking, di fatto non lo sono: in questo ambiente così sensato e ragionato non hanno un’utilità. Parola importante perché qui c’è solo ciò che è utile: a rendere l’ambiente scattante, a velocizzare il lavoro attraverso le tante scorciatoie da tastiera, a concentrarsi su ciò che si fa e non sulla grafica di contorno. In più, il codice rimane snello e pulito, facile da comprendere (parlo in generale, non di me…), migliorare e debuggare. Ci sono di contro funzioni come il tabbing delle finestre che sono nella dotazione di pochi WM/DE (KDE e Fluxbox, per quanto ne so).

Inoltre un tiling WM spinge (costringe) a sfruttare i desktop virtuali, tipici degli ambienti Linux, per sistemare le finestre aperte piuttosto che ammucchiarle su un solo desktop e alzarle / abbassarle / spostarle in giro. Ne deriva una necessaria organizzazione dei programmi avviati, una suddivisione in attività che migliora il flusso di lavoro. Non a caso i tiling WM sono spesso la scelta dei power users, utenti esperti e professionisti del settore, che vogliono liberarsi dalle “incombenze” e le perdite di tempo nell’organizzare e posizionare delle finestre. Anche nell’uso più generico i3 o uno dei suoi simili possono sorprenderci: basta capire qual è il nostro uso tipico del pc e calarlo nelle modalità di i3. Non è detto che ci si abitui, ma tentar non nuoce.

Un’ottima introduzione al funzionamento di i3 è in un breve video, presentato nella sezione “Screens” della home page, in cui l’autore stesso spiega le principali scorciatoie da tastiera, i tipi di tabbing, i concetti di container e struttura ad albero delle finestre, cosa succede quando si apre una nuova finestra o la si sposta in giro.

Ho preferito questo WM anche grazie ad una considerazione del suo creatore: i3 mira ad essere facile da usare per tutti, pur rimanendo orientata verso i suddetti power users, a differenza di altri WM simili che intenzionalmente escludono i meno esperti, con frasi del tipo “[...] This keeps its userbase small and elitist. No novices asking stupid questions“. GNÈ! GNÈ! GNÈ!

     _     Well, f**k you,     _
    |_|   I have chosen i3!   |_|
    | |         /^^^\         | |
   _| |_      (| ^o^ |)      _| |_                   __________
 _| | | | _    (_---_)    _ | | | |_          __    |##########\
| | | | |' |    _| |_    | `| | | | |        [##]   |###########\
|          |  /_     _\  |          |     ______    |##|    \####\
 \        /  / /|   |\ \  \        /     |######|        ___/#####|
   \    /  / /  |___|  \ \  \    /       |######|       |########/
     \  \/ /    | _ |    \ \/  /            |###|       |########\
      \__/      || ||      \__/             |###|           \#####|
                () ()                     __|###|__   ______/####/
                || ||                    |#########| |##########/
               ooO Ooo ASCII art credits |#########| |#########/

Scusate lo sfogo, ma ce l’avevo sullo stomaco da un po’.

Tornando al punto, io personalmente ho installato i3 a fianco a KDE (praticamente i due estremi del mondo!) e mi sono sentito subito “a casa”. KDE devo tenerlo per forza altrimenti gli altri utilizzatori del pc mi menano, ma questi sono problemi familiari di cui non è il caso di discutere qui.

Per chi già apprezza le scorciatoie da tastiera il passo verso i3 è ancora più breve. Come se non bastasse ho “importato”, con soddisfazione, alcune scorciatoie di tastiera in KDE stesso: le azioni tramite mouse sono pratiche ma indubbiamente più lente proprio a causa dello spostamento del cursore. In uno spazio in cui bastano combinazioni di due tasti per fare tutto ciò che serve, il topo rischia di soffrire di solitudine.

Configurazione

La messa a punto di i3 non può che essere semplice e rapida. C’è ben poco da personalizzare ed infatti ci sono solo due file di configurazione: ~/.i3/config e i3status.conf.

Il primo file è quello che ci viene chiesto di creare all’avvio, scegliendo il tasto modificatore predefinito per le scorciatoie da tastiera. Queste (indicate come bindsym) sono il “nocciolo” dell’utilizzo di i3: i default proposti sono già molto pratici e scelti in modo da essere sia intuitivi sia facili da eseguire. Non mi dilungherò molto sull’argomento dato che la User Guide di i3 (come sempre dichiarato) è assolutamente esaustiva e chiara. Mi aspetto che chi sceglie un ambiente così inusuale non si faccia scoraggiare dalla lettura di un po’ di documentazione.

In sintesi nel file config troveremo:

  • combinazioni di tasti per la gestione workspace e finestre e per l’avvio dei programmi preferiti:
    bindsym $mod+Shift+1 move container to workspace 1
    bindsym $mod+Return exec i3-sensible-terminal
  • definizione dei colori delle “decorazioni”:
    # class        border  backgr. text    indicator
     client.focused #859900 #859900 #fdf6e3 #2e9ef4
  • linee di comando per i programmi da lanciare all’avvio:
    exec --no-startup-id feh --bg-center ~/wallpaper.jpg
  • definizione delle regole per le finestre (nell’esempio: finestre di Firefox senza bordi):
    for_window [class="Firefox"] border none
  • definizione dei colori e della posizione della barra di stato:
    bar {
    position top
    status_command i3status -c /path/to/conf_file
    colors {
    background #073642
    [...]
    }
    }

Colpisce la sintassi estremamente semplice dei comandi, frutto di miglioramenti continui proprio allo scopo di renderli immediatamente comprensibili.

Aggiungendo più sezioni “bar { ... }” nel file è possibile avviare più istanze della barra (in pratica due, dato che può stare solo sui margini superiore ed inferiore, a meno di non volere barre “impilate” come quella verde mostrata nello screenshot sotto), ciascuna con il proprio file di configurazione di riferimento “-c /path/to/conf_file” come nell’esempio sopra. Non manca in i3bar un’area di tray per le icone delle applicazioni.

Il secondo file di configurazione è appunto quello della barra, il cui originale system-wide è in /etc/i3status.conf. Tale file funge da (primo) default se non se ne specifica un altro e contiene le indicazioni sulle informazioni da includere in i3bar ed il relativo formato.

Per una configurazione personalizzata l’originale può essere copiato in qualunque cartella utente e rinominato a piacere: a ciascun file di configurazione si farà puntare la corrispondenza istanza di i3status alla sua esecuzione, come detto sopra. Per escludere i campi non desiderati o inutili basta commentare le righe corrispondenti in ciascun file :

order += "disk /"
#order += "wireless wlan0"

La “vera” fonte di informazioni è i3status che indirizza il proprio output in i3bar. Si può utilizzare una diversa fonte di dati (Conky è una scelta frequente) a patto che questa utilizzi lo standard JSON. Inutile dire che le pagine man di questi componenti sono chiare e curate.

Ci vuol più tempo a spiegarlo che a farlo, davvero!

Comunicare con i3

Parte integrante di i3 sono tre tool, ottimi anche per costruire script di controllo:

  • i3-msg: invia “messaggi” (comandi, anche multipli concatenati da “;”) ad i3, ad esempio “vai al workspace 3, avvia iceweasel, vai al workspace 1“:
    exec --no-startup-id i3-msg 'workspace 3; exec iceweasel; workspace 1'
  • i3-input: accetta input dell’utente come argomenti di comandi: nell’esempio il nuovo nome di un workspace
    bindsym $mod+r exec i3-input -F 'rename workspace to "%s"' -P 'New name: '
  • i3-nagbar: è una barra di avviso su cui si possono configurare “pulsanti” associati a diverse azioni
    bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. \
    Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"

Gli esempi sono tratti dalla User Guide (leggetela!!1!1!).

E i programmi? Semplice, li avviamo con dmenu (parte del pacchetto suckless-toolshome page) o i3-dmenu-desktop che è un wrapper per dmenu  dedicato alle applicazioni fornite di file “.desktop“.

Domanda: “Io posso usare i3?” – Risposta: “Sì e no”

se tu, utente medio schiavo del mouse e dei bottoncini da cliccare, sei consapevole che ti stai confrontando con un interfaccia particolare, che ti impone un “modo” di lavorare nettamente diverso dal solito.

se di conseguenza ti sforzi di imparare questo nuovo “modo” (e nel farlo personalizzi l’ambiente come meglio credi).

se sei convinto che i3 sia esattamente ciò che cerchi per le tue attività tipiche.

se hai uno (o più di uno) schermo di discrete dimensioni: con schermi piccoli potrebbe esserci poco spazio per tenere aperte comodamente più finestre in un unico workspace. Pensa ad uno schermo diviso tra un  browser (che potrebbe prendere anche i 2/3 della larghezza) ed una finestra di terminale: d’altronde questo è un limite facilmente superabile sganciando un po’ di grana.

No se non sopporti una grafica così austera e la sostanziale impossibilità (inutilità?) di abbellirla con lustrini e paillettes vari.

No se il concetto stesso di una finestra inchiodata al desktop e sempre in vista ti sembra assurdo.

No se non sei a tuo agio con le scorciatoie da tastiera e con l’uso della tastiera in generale (incluso il famigerato “terminale”). Comunque, a differenza di altri tiling WM, in i3 c’è ancora abbastanza spazio per l’uso del mouse.

No se un paio di finestre aperte sono tutto quello che ti serve. In questo caso è pressoché indifferente usare un ambiente tradizionale rispetto ad i3. Tanto vale sfruttare la “familiarità” con un usuale WM stacking.

No se non vuoi o non sai come costruire il tuo ambiente a partire da un’installazione minimale (Ubuntu nel mio esempio ma anche Debian, Arch e altre ancora) installando e configurando tutto ciò che ti serve. Per un WM così “di nicchia” non esistono distribuzioni complete a cui affidarsi. Per iniziare, ho già qualcosa sull’argomento.

L’unica vera difficoltà che ho incontrato finora è legata alla riorganizzazione delle finestre, ovvero lo spostamento combinato con la variazione di “split” (da orizzontale a verticale o viceversa). Diciamo che al momento vado quasi per tentativi, riuscendo ad ottenere tutte le disposizioni possibili tranne quella che veramente desidero! Ci sto comunque prendendo confidenza, ed è solo quello il punto: i3 è “ragionevole e ragionato”, si impara, si capisce e alla fine si comanda (e già mi sta riuscendo) in modo semplice e naturale.

Una curiosità fuori tema ma non troppo: Windows 1.0 (1985!!!) visualizzava le finestre solo affiancate.

“i3-msg exit”: conclusioni

A dispetto della sua essenzialità i3 offre tante possibilità di adattamento alle esigenze degli utenti. Ho voluto e dovuto trascurare ancora altri dettagli, piccoli e grandi, a cui probabilmente dedicherò un post separato. Per esempio non scriverò dell’utilissimo “scratchpad“, che andrete senza dubbio a cercare autonomamente nella solita User Guide (dai, scherzavo, ecco il link). Anche il forum è pieno di spunti interessanti e hack per tutti i gusti. Sono persino andato a far visita al canale IRC per raccogliere impressioni e qualche dritta da veri “power user” di i3: l’opinione comune è “Funziona alla grande, indietro non si torna”.

Insomma se volete un WM leggero, funzionale, solido, veloce, anche bello nel suo minimalismo, i3 è la vostra scelta. Avrete il completo controllo del desktop, riuscendo contemporaneamente a rimanere concentrati su ciò che state facendo. E non è detto che la vostra “attività” non possa essere guardare un film o cazzeggiare sul Web! Però comincerete a ragionare in questi termini: “Mi serve tenere questa finestra in vista adesso? No? E allora pussa via su un altro workspace!”

About these ads

Informazioni su Man from Mars

http://extendedreality.wordpress.com/

  1. Ralph Magpie

    Questo accanimento minimalista si può comparare a quelle gare di automobili speciali che sono costruite per poter superare i record del tipo 1000 km con un litro di benzina. E’ bellissimo superare i limiti, ma non credo siano proponibili per la vita di tutti i giorni.
    Con questo voglio dire che l’eleganza ed il minimalismo di questi wm sono per l’informatica ciò che alcune opere sono per l’arte moderna, ma non sono utilizzabili da tutti e comunque tutti i giorni.
    Cose da geek insomma … ;-)

    • Che siano cose da geek non proverò neanche lontanamente a negarlo. Che sia così improbabile usare questi wm non sono proprio d’accordo. Certo bisogna vedere se i3 va bene per quello che fai, non calarlo a forza solo per spirito da smanettone. Io ho cominciato a semplificare KDE disattivando un effetto dopo l’altro e limitando le iconcine in giro già da un po’, ben prima di sapere che esistesse i3. Ho pure cominciato a disporre le finestre affiancate (a manina) per avere più informazioni a vista. Ad un certo punto la domanda me la sono fatta: non è che mi andrebbe bene proprio una roba così strana? Pare proprio di sì…
      Dai, te lo installo? :-)

      • Ralph Magpie

        Giammai, adesso che ho abbandonato Windows e non ne sento assolutamente la mancanza ;-)
        Cmq permango nell’idea che sarebbe un pochino difficile lavorare con tre quattro fogli elettronici contemporaneamente con un wm del genere.
        Mi sto facendo vecchio e non voglio rinunciare alle comodità ;-)

  2. Mi sono persa… E mi è venuto anche un fastidiosissimo mal di testa. Come intendi rimediare?

    • Una camomilla? Pure tu però, che ti metti a leggere ‘ste cose… Fai così: riparti dall’inizio guardando solo le figure, poi leggi la sezione finale del “sì e no” e basta. Comunque sappi che ho apprezzato l’impegno. :-)

      • Ma io sono assetata di conoscenza! E sempre estremamente interessata ad imparare cose nuove. Per cui ci provo. Anche quando non ci capisco una cippalippa. E meno male apprezzi l’impegno :)

        • In un’altra occasione non avevi capito “una mazzafionda”, adesso “una cippalippa”: quale delle due è meglio?
          Comunque sia, hai un bell’atteggiamento verso le novità, anche se apparentemente lontane dai tuoi interessi principali. Tu sai che puoi fare tutte le domande che vuoi, io proverò a rispondere al meglio.
          Forse per l’argomento specifico dovresti partire da qualche nozione più di base: ah, se riuscissi ad organizzare un po’ di robine vecchie che vorrei pubblicare da anni…

          • Lo dici te che è lontano dai miei interessi principali! In tempi non sospetti feci pure un corso di programmazione. Ma si parla delle medie e c’era ancora il DOS e i pc funzionavano con le cassette! Comunque ero la più brava del corso :) No, a parte gli scherzi, queste cose mi piacciono moltissimo, in realtà. Mi piace smanettare e la tecnologia non la considero affatto una nemica, anzi. Mi piacerebbe saperne di più perché mi mancano proprio tante basi ma nei miei sogni c’è anche di imparare a programmare. Pensa che tempo fa seguii un corso di programmazione in Visual Basic su You Tube ma poi ho abbandonato per mancanza di tempo e di stimoli, perché farlo in casa per conto mio dopo un po’ mi stufa. Insomma, in un’altra vita mi dedicherò pure a questo!

            • Non so se questa cosa mi sorprende o se inconsciamente l’ho sempre sospettata ed aspettavo solo che uscisse allo scoperto! :-) Sulla programmazione sai che mi trovi d’accordo: è divertente e stimolante, anche al livello degli scriptini scemi di cui sono capace io. Anzi proprio perché sta a quel livello, la programmazione rimane un divertissement.
              Ti posso consigliare http://www.codecademy.com/ per un buon corso online di Python (che ha avuto un successo enorme anche grazie alla semplicità della sintassi) e magari un pizzico di HTML/CSS (che può sempre tornare utile per giocherellare con le nostre paginette web).

  3. Pingback: Window managers – Special – i3 (ENG) | Extended Reality

Dimmi che ne pensi o fai "Ciao ciao!" con la manina // Share your thoughts or just say "Hello!"

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 92 follower

%d blogger cliccano Mi Piace per questo: