This article has been originally published in English (here). Feedbacks on content and translation are appreciated. Contributions are welcome. The original article must be considered the reference in case of updates.
È passato circa un anno da quando ho iniziato ad usare i3, sostituendo completamente KDE e qualunque altro WM/DE stacking che avessi in mente di sperimentare. Il tiling mi ha dato un’interfaccia semplice, veloce e diretta che mi è da subito piaciuta.
Se non sapete cosa sono i3 ed i WM tiling, potreste fare un salto sulla home page di i3 e tra le pagine della sua dettagliata documentazione, sul mio post di “primo contatto” (in English, here) o ancora sul post di Simone “SMLB” (se utilizzate Arch).
Dopodichè, dovrete solo iniziare a cercare mucchi di suggerimenti ed esempi su come adattare perfettamente i file di configurazione (~/.i3/config
e i3status.conf
) alle vostre esigenze. Io ho costruito la mia collezione da queste fonti:
- la User Guide e le FAQ pages
- la i3 users community su Google+, in cui gli utenti condividono suggerimenti e configurazioni (spesso via GitHub) – Sarò lieto di attribuire le idee originali ai rispettivi “proprietari”
- me stesso! 😀
Variabili: un modo veloce per smanettare
Con tutta probabilità passerete i primi tempi a modificare mille cose prima di approdare ad una configurazione che vi soddisfi. Anche allora sarete sempre tentati di aggiustare quel piccolo dettaglio o sperimentare nuove idee, semplicemente perché è facile farlo.
Un consiglio: non lasciate “residui” nei file di configurazione. Spostate le impostazioni “sperimentali” o alternative in file separati anziché lasciarli all’interno, trasformati in commenti (‘#’). Già così com’è, il file config
è abbastanza lungo e dovrebbe essere tenuto quanto più pulito è possibile: in questo modo sarà anche più facile trovare le impostazioni da modificare. [/nonnina mode: off]
Impiegate un po’ di tempo ad impostare nel config
tutte le variabili che vi servono (che non avranno effetto su i3status.conf
), ovvero tutti i parametri che cambierete più frequentemente.
I colori sono un buon esempio:
###- Variables -### # Colors - Base16 set $green #90A959 set $lblue #6A9FB5 ...
così come i nomi dei workspace, che siano semplicemente numeri o qualche intricato schema con tanto di glifi Unicode (ehm… no… io no, davvero…):
# Workspaces # set $wp1 "1: My_first_cool_workspace" set $wp2 "2: My_other_cool_workspace" ...
Così facendo risparmierete il tempo e i refusi nel riscrivere più volte lunghe parti di testo e non rischierete di dimenticare qualche valore richiamato in una riga del file config
.
Non ci sarà quindi bisogno di modificare le successive impostazioni, che includano le variabili dichiarate, mentre si cerca la giusta sfumatura di colore
#Window Decorations Colors #class border backgr. text indicator client.focused $lbue $green $white $red ...
o si prova l’ennesimo schema di nomi per i workspace, con la tranquillità di puntare sempre al “bersaglio” giusto
# switch to workspace bindsym $mod+1 workspace $wp1 ... # move focused container to workspace bindsym $mod+Shift+1 move container to workspace number $wp1 ... # Assign applications to specific workspaces assign [class="Iceweasel"] $wp1 ...
Riferimenti: i3 Userguide – Variables
Muoviti, muoviti, svelto!
Combinate o alternate i tasti modificatori (ALT
, CTRL
, SHIFT
e SUPER/WINDOWS
) per ottenere diverse “gradazioni” di una stessa azione:
# Window Movement bindsym $mod+Shift+Left move left ... # Quick Window movement bindsym $mod+Ctrl+Left move left 40px
Qui ad esempio, ho due scorciatoie di tastiera (“keybindings”) simili per il movimento lento (più preciso) o rapido (più grossolano) delle finestre: con la seconda posso rapidamente spostare una finestra attraverso l’intero schermo.
Ho fatto lo stesso per il ridimensionamento
bindsym Left resize shrink width 5 px or 5 ppt ... bindsym Ctrl+Left resize shrink width 15 px or 15 ppt
ed il volume
bindsym XF86AudioLowerVolume exec --no-startup-id amixer -q set Master 1%- unmute && killall -SIGUSR1 i3status bindsym Shift+XF86AudioLowerVolume exec --no-startup-id amixer -q set Master 10%- unmute && killall -SIGUSR1 i3status
Riferimenti: i3 Userguide – Focusing/moving_containers
Modo “mode”: ATTIVARE!
I tasti non sono mai abbastanza per tutte le scorciatoie che ci servono ed è qui che ci vengono in aiuto i “mode“. La modalità resize
contenuta nella configurazione di default fornisce già ottimi spunti. “Dentro” il mode
i tasti possono essere riciclati, cioè si possono assegnare delle azioni a tasti già usati “fuori” (nella modalità “default“). Un semplice lanciatore di applicazione è un esempio:
mode "App launch" { bindsym p exec pcmanfm bindsym f exec firefox ... bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+l mode "App launch"
Non dimenticate la definizione del ritorno al ‘mode "default"
‘ finale, altrimenti vi ritroverete bloccati nella modalità definita: a quel punto dovrete trovare un modo di lanciare ‘i3-msg restart
‘ in un terminale o in dmenu
per tirarvi fuori dai guai.
E parlando di mode…
Il meglio del multi-monitor
Setup con due (o più!) schermi sembrano essere abbastanza comuni tra gli utilizzatori di WM tiling; questa marea di pixel deve essere tenuta sotto stretto controllo ed in questo i3 se la cava egregiamente! Una funzione che sembra poco considerata nella Guida è lo spostamento di un intero workspace, che troverete particolarmente utile se usate un portatile con uno schermo esterno.
mode "Move workspace" { #Move current workspace to different output bindsym Left move workspace to output left ... bindsym Escape mode "default"</pre> <pre>} bindsym $mod+m mode "Move workspace"
Se si ha una configurazione multi-monitor permanente, è utile anche assegnare i workspace a monitor specifici, per evitare “race conditions” che causerebbero la creazione dei workspace in base alla sola sequenza di attivazione di ciascuna uscita video.
Dalla User Guide:
workspace 5 output VGA1 workspace "2: vim" output VGA1
Combinando queste assegnazioni con quelle delle applicazioni ai workspace (come descritto nella sezione sulle “Variabili“) potremo automaticamente guardare i film sempre sul grande schermo.
Riferimenti: i3 Userguide – Changing named workspaces /Moving to workspaces
i3 Userguide – Assign workspace to output
Hackerare la nagbar (in un certo senso…)
i3-nagbar
è fatta per mostrare messaggi “che non puoi rifiutare” (cit.) o meglio che non puoi ignorare (il “nag” del nome si riferisce a questo): siamo abituati a vederla alla chiusura di i3 (in arancione per l’avviso) e quando ci sono errori nei file di configurazione (in rosso). Sostanzialmente essa fornisce dei “tasti” collegati ad azioni definite dall’utente che potremmo usare per scopi diversi (ne elenco solo alcuni):
- (l’ennesimo) lanciatore per qualche applicazione di uso frequente
- “allarme” per ricordare la manutenzione di sistema (aggiornamenti, pulizia della cache, …), eventualmente invocato da
cron
- collegamento rapido per modificare/visualizzare file specifici (come nell’esempio mostrato sotto)
bindsym $mod+l exec "i3-nagbar -t warning -m 'Edit system files' -b 'config' 'exec mousepad ~/.i3/config' -b 'i3status' 'exec mousepad ~/.i3/config'"
Una rapida scorsa alla pagina man
chiarisce la sintassi usata: “-t <type>
” è il tipo di messaggio (warning/avviso in arancione o error/errore in rosso, useremo probabilmente il primo), “-m <message>
” è il messaggio iniziale (a sinistra), ciascun segmento “-b '<button_label>' '<action>'
” accodato crea poi un bottone collegato ad un’azione definita (il tasto “X” di chiusura è aggiunto di default).

L’unico svantaggio di i3-nagbar
è che si comanda solo con il mouse: non ci sono e non si possono definire scorciatoie di tastiera per chiuderla o selezionare i tasti (sempre perché deve essere un “nag“).
Varie ed eventuali
Font
Per mostrare simboli grafici (non sono immagini!) insieme al testo semplice in i3bar è necessario un font come FontAwesome o stlarch. Ho recentemente capito (guardando per caso un frammento di codice di dwm che definiva la stessa funzione) che l’ordine in cui i font sono “dichiarati” è fondamentale per la corretta visualizzazione.
Il primo font in lista deve essere quello contenente le icone (FontAwesome, nel mio esempio), il successivo quello usato per il testo semplice (Terminus). Ecco la dimostrazione:
la riga
font pango:FontAwesome 10, Terminus 10
genera l’aspetto previsto (simboli da FontAwesome, testo da Terminus)

mentre la dichiarazione, apparentemente simile,
font pango:Terminus 10, FontAwesome 10
genera una visualizzazione errata (nessun simbolo trovato in Terminus, si ripiega su FontAwesome per i simboli e per il testo semplice)

Riferimenti: i3 Userguide – Fonts
Lasciate perdere il “vim-style”
Lo spostamento delle finestre è per default assegnato alle frecce e ai tasti “jkl;”, in uno schema che risulterà familiare a qualcuno. Non a me, comunque, che quindi preferisco riutilizzare quelle lettere per altri keybindings (l potrebbe stare per “lock” o “launch”, ad esempio). Ho il sospetto che le tante ore spese con i videogame abbiano avuto una forte influenza nella mia “memoria muscolare” quando uso le frecce.
Ed eccoci qui finalmente! Mi ci è voluto un po’ per capire alcuni dettagli nella configurazione di i3 ma adesso sono abbastanza soddisfatto dei risultati. Cosa? Uno screenshot magari? Sì, beh, sapete, sto ancora mettendo a punto quel paio di cosette e quindi dovrete avere pazienza fino a… non so… magari il prossimo post su i3? 😀