Trucchi e consigli per i3

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

i3 Userguide – Resizing


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).

i3-nagbar-hack

Non è per questo che era stata pensata, eppure funziona…

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)

i3bar_icon_terminus

Bene!

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)

i3bar_terminus_icon

No bene!

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? 😀

Informazioni su Man from Mars

https://extendedreality.wordpress.com/

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...

%d blogger hanno fatto clic su Mi Piace per questo: