
Scrittura · 28 set 2020
Rifinire la mia esperienza con il sistema operativo per tablet
Usare Surface Go 2 con 4G/LTE, Debian GNU/Linux e i3wm
All'inizio di quest'anno ho provato a creare il mio sistema operativo per tablet installando Debian GNU/Linux su un tablet Microsoft Surface Go. Ho imparato moltissimo su ciò che mi piace nei tablet. Ma continuavo a preferire il mio iPad Pro, soprattutto per la sua esperienza utente curata. Questa volta mi sono messo in testa di rifinire il software del mio tablet per sostituire l'iPad.
Linux sui tablet (Surface)
Se stai pensando di installare Linux su un tablet: non sei il solo. Il mio post precedente su come installare Debian GNU/Linux su Surface GO ha ricevuto un sacco di attenzione. A quanto pare, molti di voi cercano un'alternativa ai sistemi operativi chiusi che di solito sono installati sui tablet (come iPadOS, Android o Windows 10S).
L'hardware Microsoft Surface e Linux
La storia è piena di dolci ironie, e infatti è proprio Microsoft a produrre dell'hardware davvero bello che funziona bene con Linux. La gamma Surface comprende diversi laptop e tablet. La pagina reddit “SurfaceLinux” è piena di storie di utenti interessanti da leggere. C'è chi lo fa, e puoi farlo anche tu.

Primo tentativo: Surface Go (contro iPad Pro)
Dopo aver installato e modificato Debian GNU/Linux su Surface Go, battezzato “Willem OS”, ho provato a farne il mio computer principale. Se segui spesso il mio blog, sai che uso iPad e tablet come computer principale da anni. Alla fine ho giudicato la prima versione di “WillemOS” non abbastanza buona: l'iPad Pro era anni luce avanti in fatto di esperienza utente curata.
Da questo primo tentativo ho imparato moltissimo, e ho capito meglio che cosa cerco in un tablet. Cerco un software semplice ma versatile da far girare sul mio tablet.
Ma “semplice” è in realtà molto difficile da ottenere. Per rendere le cose davvero semplici, devi integrare hardware e software senza soluzione di continuità. Apple lo fa bene, e l'iPad Pro offre un'ottima esperienza utente perché:
- riprendi da dove avevi lasciato: salva tutto quando lo metti in borsa ed è pronto (all'istante) a riprendere quando lo tiri fuori. Nessun salvataggio manuale e nessun (ri)avvio.
- internet ovunque: passa automaticamente tra le reti WiFi e 4G/LTE, non devi fare niente, “funziona e basta”
- qualsiasi orientamento e posizione: l'iPad funziona benissimo senza tastiera esterna o mouse, e ti permette di usarlo in tanti scenari diversi (il display regola anche in automatico luminosità e bilanciamento del bianco in base all'ambiente!)
Si scopre che far funzionare bene tutto questo con Debian GNU/Linux su Surface è difficile. Il mio primo sistema operativo per tablet richiedeva molta interazione manuale ed era quindi macchinoso rispetto all'iPad Pro.
Secondo tentativo: Surface Go 2
Quest'anno Microsoft ha rilasciato un nuovo tablet Surface Go, il Surface Go 2. Ha un processore più veloce (fino al 64%!), cornici più sottili e uno schermo migliorato. È un ottimo aggiornamento che porta il Surface Go 2 molto più alla pari con l'iPad Pro da 11 pollici in termini di hardware. Per il mio secondo tentativo di creare l'esperienza definitiva su tablet ho deciso di usare il modello top Surface Go 2:
- schermo touch da 10,5” (1920x1250, 220PPI), proporzioni 3:2, Corning® Gorilla® Glass 3
- processore Intel Core m3 (ottava generazione)
- 8GB di RAM
- WiFi 802.11a/b/g/n/ac/ax
- LTE Advanced (modem Qualcomm® Snapdragon™ X16 LTE)
- Bluetooth 5.0
- Intel UHD Graphics 615
- Dimensioni: 245 mm x 175 mm x 8,3 mm
- SSD da 256GB
- scheda MicroSDXC da 512GB
- 1 porta USB-C e 1 porta Surface Connect

Installare Debian GNU/Linux su Surface Go 2
Per quanto riguarda l'installazione di base della tua distribuzione GNU/Linux preferita, il Surface Go 2 è molto simile al suo predecessore. Ho seguito qui i miei passaggi dell'installazione originale su Surface Go.

In breve, questi sono i passaggi da seguire per installare Linux sul tuo Surface:
- 1) Aggiorna Windows 10 e installa tutte le patch/gli aggiornamenti del firmware
- 2) Crea un supporto di installazione avviabile con la tua distribuzione GNU/Linux preferita
- 3) (Facoltativo) collega una connessione ethernet via cavo
- 4) Avvia il Surface dall'unità USB
- 5) Installa il sistema operativo con il programma di installazione
- 6) Rifinisci e ottimizza l'esperienza software

Rifinire l'esperienza
L'ultimo passaggio dell'installazione è quello in cui puoi fare la differenza tra un'esperienza utente fantastica e una pessima. Per “incoraggiarmi” a portare avanti questo esperimento ho deciso di vendere il mio iPad Pro: bruciare le navi (così non ci sarebbe stata nessuna via di ritorno)!

Su un display piccolo ha perfettamente senso far girare le app a schermo intero. So che il concetto convenzionale da PC di gestire finestre di applicazioni distinte non offre la migliore esperienza utente su un computer tablet piccolo. Perciò ho deciso di provare un tiling window manager: i3wm.
Tiling window manager
Il principio di un tiling window manager è semplice: le app occupano tutto lo spazio disponibile. Questo significa che se esegui una sola app, sarà a schermo intero. Due app vanno a schermo diviso, e così via. Puoi definire regole che automatizzano la disposizione delle app. Con le scorciatoie da tastiera passi rapidamente da un'app all'altra. Con un tiling window manager potresti aver bisogno di un po' di tempo per capire che cosa funziona meglio per te, ma alla fine può farti risparmiare un sacco di tempo!

Aree di lavoro
Un'altra funzione potente di i3wm è che puoi avere diverse ‘aree di lavoro’. Sono un modo facile per organizzare gruppi di app che girano insieme. Uso aree di lavoro diverse per cose diverse che faccio. Un approccio comune è mettere il browser web in un'area, le applicazioni di posta in un'altra e quelle con cui lavori nella terza.

Il bello di avere più aree di lavoro è che una stessa app (per esempio il tuo browser) può girare in più istanze su aree di lavoro diverse. Questo permette tante combinazioni diverse di app. È proprio qui che il window manager i3wm è molto meglio di come iPadOS intende il multitasking.
Il window manager i3wm supporta molto bene i monitor esterni, con lo stesso concetto di area di lavoro. Basta assegnare una o più aree di lavoro allo schermo extra/esterno. Funziona bene con il Surface Dock e con gli accessori da USB-C a HDMI per Surface. Il supporto multimonitor è davvero ottimo.

Una cosa che dovresti provare è usare fusuma per abilitare i gesti a tre dita sul trackpad. Se hai mai lavorato su un MacBook sai che i trackpad multi touch permettono gesti utili per cambiare desktop (o aree di lavoro in i3wm). Funziona benissimo!
Archiviazione
Per gestire le mie foto con Shotwell volevo parecchio spazio sul mio tablet. Anche se ho il Surface Go 2 top di gamma con l'SSD da 256GB, ho usato lo slot per MicroSD per aggiungere altri 512GB di capacità. La scheda MicroSD è più lenta dell'SSD integrato, ma per i file che non leggi ogni giorno/ora/minuto è abbastanza veloce.

La mia installazione di Debian GNU/Linux non ha avuto problemi a riconoscere la scheda MicroSD. Ho cifrato l'intera scheda MicroSD per evitare che le mie foto finiscano in giro se mai dovessi perderla. Dovresti (sempre) considerare questa cosa, prendi le misure adeguate per proteggere e fare il backup dei tuoi dati!
Connettività WiFi/4G/LTE
Dopo aver installato il firmware wireless ‘non-free’ in Debian il WiFi funziona bene sul Surface Go 2. Far funzionare LTE/4G è stato molto più difficile! Per qualche motivo la connessione WWAN non partiva, anche se avevo inserito una SIM funzionante nel Surface Go. Per qualche misterioso motivo il modem non si avviava correttamente, il 4G/LTE non funzionava!

Una delle cose belle dell'iPad è che condivide la logica di connettività dell'iPhone. Gestisce in automatico le diverse reti wireless e le connessioni a banda larga mobile. Volevo che funzionasse così anche sul mio tablet Linux!
Mentre cercavo un indizio per far funzionare il 4G/LTE, ho letto le segnalazioni sul Surface Pro. Il Surface Go 2 è tecnicamente molto simile al Pro più grande. Ho pensato di poter imparare dagli sforzi di altri con la banda larga mobile sul Surface Pro. Dopo molte ore di ricerche e di prove, ho trovato questa soluzione per far funzionare il 4G su Surface:

Puoi usare Network Manager (e Modem Manager) per automatizzare la gestione della connettività in Linux. Per impostazione predefinita preferisce le connessioni WiFi alla banda larga mobile. Puoi fare in modo che si colleghi automaticamente in 4G/LTE se non c'è WiFi disponibile. Ora funziona benissimo insieme all'hardware del Surface Go 2!

Sospensione/Ibernazione/Ripresa
Un'altra cosa a cui nessun utente iPad pensa mai è quanto bene Apple abbia fatto le cose con la sospensione e la ripresa. Con un iPad puoi tenerlo in standby per molti giorni, eppure quando lo riprendi in mano è sempre velocissimo a ripartire da dove avevi lasciato.
Per far fare lo stesso al mio Surface con GNU/Linux mi serviva un modo per sospendere e riprendere rapidamente. Nel mondo Linux / PC ci sono in pratica quattro modalità di alimentazione:
- acceso: le app sono in esecuzione. Il sistema è completamente acceso e consuma molta energia
- sospensione (su RAM): lo stato delle app viene conservato nella memoria RAM. Il sistema è ancora acceso, ma ogni componente è ridotto al minimo, e consuma comunque energia (nel mio caso con il Surface Go 2 circa il 10% di batteria all'ora)
- sospensione (su disco) / ibernazione: lo stato delle app viene conservato su disco. Il sistema è spento e non consuma nessuna energia
- spento: le app sono chiuse. Il sistema è spento, non viene consumata energia
Per “riprendere all'istante da dove avevi lasciato” devi conservare lo stato delle app. Le riprese più veloci (quasi istantanee) sono possibili quando lo stato delle app è memorizzato nella RAM. Il problema della RAM è che ha bisogno di corrente (energia!) per mantenere il suo contenuto. Quando l'energia manca, lo stato delle app va perso.
L'alternativa è sospendere su disco (o ibernare), dove lo stato viene memorizzato sul dispositivo di archiviazione permanente del computer. Così il computer può spegnersi completamente. Il problema della sospensione su disco è che la ripresa è più lenta e richiede di reinserire le passphrase di cifratura per la cifratura dell'intero disco.
La buona notizia è che il GNU/Linux moderno viene fornito con systemd, che permette di configurare come il computer gestisce sospensione e ripresa. Puoi configurare il tuo tablet in modo che prima sospenda su RAM (ripresa istantanea) e poi, dopo un certo periodo, sospenda su disco.

In una normale giornata di lavoro mi sveglio (molto) presto per lavorare da casa ai miei progetti più impegnativi. Poi vado al lavoro in bici e continuo a lavorare da lì. Ho cronometrato il mio tragitto e ho pensato che se il tablet restasse acceso per almeno due ore, potrei riprendere il lavoro all'istante. Se non riprendo a lavorare sul tablet entro due ore, il tablet risparmia batteria sospendendosi su disco. In questo modo ho la migliore esperienza per la mia situazione particolare.

Aspetto uniforme
A differenza dell'iPad, strettamente controllato, il software su GNU/Linux viene creato con approcci molto diversi al design dell'interfaccia utente. Non esiste nulla come le Linee guida per l'interfaccia utente che Apple impone per iOS e iPadOS. È un problema, perché rende il software incoerente nell'aspetto e nell'uso.
Un aspetto e un comportamento coerenti sono importanti per avere un ambiente e un'esperienza utente senza attriti. Perciò ho fatto tante piccole modifiche a colori, font, icone e barre degli strumenti per far sì che le mie app abbiano tutte lo stesso aspetto e la stessa sensazione d'uso. Anche se non è perfettamente armonioso, non ho più la sensazione di lavorare con un “Frankenstein OS”.
Preferisco un tema scuro perché affatica meno gli occhi, ma decidi tu. Usa strumenti come lxappearance per fare modifiche a più app insieme. Ma probabilmente dovrai fare aggiustamenti anche app per app. Io uso il tema adwaita-dark e le icone (monocromatiche) HighContrast, con il font Open Sans Light.


Usarlo ogni giorno
Costruire un bel sistema è una cosa, usarlo davvero tutti i giorni è un'altra! Il Surface Go è il mio strumento di tutti i giorni e nelle ultime settimane ho sperimentato cose e impostazioni diverse. Ecco alcuni momenti salienti.











Conclusione
Costruire il mio sistema operativo per tablet è una vera sfida. Il mio primo tentativo non era abbastanza buono da sostituire l'iPad. Questo secondo tentativo, invece, è diverso. Il tempo e lo sforzo dedicati a rifinire l'esperienza utente hanno prodotto un sistema molto migliore. Ora lo uso ogni giorno come computer principale.
Anche se ho sempre apprezzato il lavoro che Apple ha fatto sull'iPad, resta limitato dal suo software chiuso. Soprattutto adesso, che Apple ha deciso di rafforzare ancora il controllo sul suo App Store. L'unico modo per controllare il futuro è crearlo da sé: credo che sia il momento giusto per diventare capitano della mia nave!
Aggiornamento gennaio 2021
Dopo mesi di uso intenso ho deciso di abbandonare il mio sistema operativo per tablet