
Écrits · 28 sept. 2020
Peaufiner l'expérience de mon système de tablette
Utiliser la Surface Go 2 avec 4G/LTE, Debian GNU/Linux et i3wm
Plus tôt cette année, j'ai essayé de créer mon propre système d'exploitation pour tablette en installant Debian GNU/Linux sur une tablette Microsoft Surface Go. J'ai beaucoup appris sur ce que j'aime dans une tablette. Mais je préférais encore mon iPad Pro, surtout pour son expérience utilisateur très soignée. Cette fois, je me suis lancé dans le peaufinage du logiciel de ma tablette pour remplacer mon iPad.
Linux sur des tablettes (Surface)
Si tu penses à installer Linux sur une tablette : tu n'es pas seul. Mon précédent article sur l'installation de Debian GNU/Linux sur la Surface GO a reçu énormément d'attention. Apparemment, beaucoup d'entre vous cherchent une alternative aux systèmes d'exploitation verrouillés qu'on trouve d'habitude sur les tablettes (comme iPadOS, Android ou Windows 10S).
Le matériel Microsoft Surface et Linux
L'histoire est pleine d'ironie douce : c'est Microsoft qui fabrique du très beau matériel qui fonctionne bien avec Linux. Leur gamme Surface comprend différents ordinateurs portables et tablettes. La page reddit « SurfaceLinux » regorge de témoignages d'utilisateurs intéressants à lire. Des gens le font, et tu pourrais le faire toi aussi.

Première tentative : Surface Go (contre iPad Pro)
Après avoir installé et modifié Debian GNU/Linux sur la Surface Go, que j'ai baptisé « Willem OS », j'ai essayé d'en faire mon ordinateur principal. Si tu visites souvent mon blog, tu sais que j'utilise des iPad et des tablettes comme ordinateur principal depuis des années. Finalement, j'ai jugé ma première version de « WillemOS » pas assez bonne : l'iPad Pro avait des années-lumière d'avance en matière d'expérience utilisateur soignée.
De cette première tentative, j'ai beaucoup appris, ce qui m'a permis de mieux comprendre ce que je cherche dans une tablette. Je cherche un logiciel simple mais polyvalent pour ma tablette.
Mais le « simple » est en fait très difficile à atteindre. Pour que les choses soient vraiment simples, il faut intégrer le matériel et le logiciel de façon fluide. Apple le fait bien, l'iPad Pro offre une excellente expérience utilisateur parce que :
- reprendre là où tu t'étais arrêté : il enregistre tout quand tu le mets dans un sac, et il est prêt (instantanément) à continuer quand tu le ressors. Pas d'enregistrement manuel ni de (re)démarrage.
- internet partout : il bascule automatiquement entre les réseaux WiFi et 4G/LTE, tu n'as rien à faire, ça « marche tout seul »
- toutes orientations et toutes positions : l'iPad fonctionne très bien sans clavier externe ni souris, ce qui permet de l'utiliser dans de nombreuses situations (l'écran ajuste même automatiquement sa luminosité et sa balance des blancs à ton environnement !)
Il s'avère que faire fonctionner tout cela sans accroc avec Debian GNU/Linux sur Surface est difficile. Mon premier système de tablette demandait beaucoup d'interventions manuelles et était donc pénible comparé à l'iPad Pro.
Deuxième tentative : Surface Go 2
Microsoft a sorti cette année une nouvelle tablette Surface Go, la Surface Go 2. Elle a un processeur plus rapide (jusqu'à 64 % !), des bordures plus fines et un écran amélioré. C'est une très belle mise à niveau, qui place la Surface Go 2 bien plus au niveau de l'iPad Pro 11 pouces côté matériel. Pour ma deuxième tentative de créer l'expérience de tablette ultime, j'ai décidé d'utiliser le modèle haut de gamme de la Surface Go 2 :
- écran tactile de 10,5" (1920x1250, 220PPI), format 3:2, Corning® Gorilla® Glass 3
- processeur Intel Core m3 (8e génération)
- 8GB RAM
- Wifi 802.11a/b/g/n/ac/ax
- LTE Advanced (modem Qualcomm® Snapdragon™ X16 LTE)
- Bluetooth 5.0
- Intel UHD Graphics 615
- Dimensions : 245 mm x 175 mm x 8,3 mm
- SSD de 256GB
- carte MicroSDXC de 512GB
- 1x USB-C et 1x port Surface Connect

Installer Debian GNU/Linux sur la Surface Go 2
La Surface Go 2 ressemble beaucoup à sa devancière pour l'installation de base de ta distribution GNU/Linux préférée. J'ai suivi mes propres étapes de l'installation d'origine de la Surface Go ici.

En bref, voici les étapes pour installer Linux sur ta Surface :
- 1) Mettre à jour Windows 10 et installer tous les correctifs/mises à jour de firmware
- 2) Créer un support d'installation amorçable contenant ta distribution GNU/Linux préférée
- 3) (Facultatif) brancher une connexion ethernet filaire
- 4) Démarrer la Surface depuis la clé USB
- 5) Installer le système d'exploitation avec le programme d'installation
- 6) Peaufiner et optimiser l'expérience logicielle

Peaufiner l'expérience
C'est dans la dernière étape de l'installation que se joue la différence entre une expérience utilisateur fantastique et une expérience médiocre. Pour m'« encourager » à tenir bon dans cette expérience, j'ai décidé de vendre mon iPad Pro : brûler mes vaisseaux (puisqu'il n'y aurait plus de retour en arrière) !

Sur un petit écran, lancer les applis en plein écran est tout à fait logique. Je sais que le concept classique du PC, avec la gestion de fenêtres d'applications distinctes, n'offre pas la meilleure expérience sur une petite tablette. J'ai donc décidé d'essayer un gestionnaire de fenêtres en mosaïque : i3wm.
Gestionnaire de fenêtres en mosaïque
Le principe d'un gestionnaire de fenêtres en mosaïque est simple : les applis occupent autant d'espace qu'il y en a de disponible. Si tu n'en lances qu'une, elle est en plein écran. Deux applis se partagent l'écran, et ainsi de suite. Tu peux définir des règles qui automatisent la disposition des applis. Avec des raccourcis clavier, tu passes rapidement d'une appli à l'autre. Il te faudra peut-être un peu de temps pour trouver ce qui marche le mieux pour toi avec un gestionnaire en mosaïque, mais au final, il peut te faire gagner énormément de temps !

Espaces de travail
Une autre fonction puissante d'i3wm, c'est de pouvoir avoir différents « espaces_de_travail ». C'est un moyen simple d'organiser des groupes d'applis qui tournent ensemble. J'utilise différents espaces de travail pour différentes choses que je fais. Une approche courante est de mettre le navigateur web sur un espace, les applis de messagerie sur un autre, et celles avec lesquelles tu travailles sur le troisième.

Le grand avantage de plusieurs espaces de travail, c'est qu'une appli (par exemple ton navigateur) peut avoir plusieurs instances sur différents espaces. Ça permet de nombreuses combinaisons d'applis. C'est vraiment là que le gestionnaire de fenêtres i3wm est bien meilleur que l'approche multitâche d'iPadOS.
Le gestionnaire i3wm gère très bien les écrans externes, selon le même concept d'espace de travail. Tu désignes simplement un ou plusieurs espaces de travail à afficher sur l'écran supplémentaire/externe. Ça marche bien avec la Surface Dock et les accessoires USB-C vers HDMI pour Surface. La prise en charge de plusieurs écrans est vraiment excellente.

Une chose à essayer : utiliser fusuma pour activer les gestes à trois doigts sur le pavé tactile. Si tu as déjà travaillé sur un MacBook, tu sais que les pavés tactiles multitouch permettent des gestes utiles pour changer de bureau (ou d'espace de travail dans i3wm). Ça marche très bien !
Stockage
Pour gérer mes photos avec Shotwell, je voulais un vrai espace de stockage sur ma tablette. Bien que j'aie le modèle haut de gamme de la Surface Go 2 avec le SSD de 256GB, j'ai utilisé le lecteur de carte MicroSD pour ajouter 512GB de capacité. La carte MicroSD est plus lente que le SSD intégré, mais pour des fichiers qu'on ne lit pas tous les jours/heures/minutes, c'est assez rapide.

Mon installation de Debian GNU/Linux n'a eu aucun mal à reconnaître la carte MicroSD. J'ai chiffré toute la carte MicroSD pour empêcher mes photos de fuiter si je perdais un jour ma carte. Pense-y (toujours), prends les mesures adaptées pour protéger et sauvegarder tes données !
Connectivité WiFi/4G/LTE
Après avoir installé le firmware sans fil « non-free » dans Debian, le WiFi fonctionne bien sur la Surface Go 2. Faire marcher la LTE/4G a été beaucoup plus difficile ! Pour une raison quelconque, la connexion WWAN ne démarrait pas, même avec une carte SIM fonctionnelle dans la Surface Go. Pour une raison mystérieuse, le modem ne démarrait pas correctement, la 4G/LTE ne marchait pas !

L'une des grandes forces de l'iPad, c'est qu'il partage la logique de connectivité de l'iPhone. Il gère automatiquement les différents réseaux sans fil et les connexions mobiles à haut débit. Je voulais que ça marche aussi sur ma tablette Linux !
En cherchant un indice pour faire marcher la 4G/LTE, j'ai consulté des témoignages sur la Surface Pro. La Surface Go 2 est techniquement très proche de la Pro, plus grande. Je me suis dit que je pourrais profiter des efforts d'autres personnes avec le haut débit mobile sur la Surface Pro. Après de nombreuses heures de recherche et d'essais en tout genre, j'ai trouvé cette solution pour faire marcher la 4G sur Surface :

Tu peux utiliser Network Manager (et Modem Manager) pour automatiser la gestion de la connectivité sous Linux. Par défaut, il préfère les connexions WiFi au haut débit mobile. Tu peux le faire se connecter automatiquement en 4G/LTE quand il n'y a pas de WiFi. Désormais, ça marche très bien avec le matériel de la Surface Go 2 !

Veille/Hibernation/Reprise
Une autre chose à laquelle aucun utilisateur d'iPad ne pense, c'est à quel point Apple a réussi la mise en veille et la reprise. Avec un iPad, tu peux le laisser en veille plusieurs jours, et il reprend toujours très vite là où tu t'étais arrêté quand tu le reprends en main.
Pour que ma Surface sous GNU/Linux fasse pareil, il me fallait un moyen de mettre en veille et de reprendre rapidement. Dans le monde Linux / PC, il y a en gros quatre modes d'alimentation :
- allumé : les applis tournent. Le système est entièrement alimenté, il consomme beaucoup d'énergie
- veille (en RAM) : l'état des applis est conservé en mémoire RAM. Le système est toujours alimenté, mais chaque composant est réduit au maximum, il consomme encore de l'énergie (environ 10 % de batterie par heure dans mon cas avec la Surface Go 2)
- veille (sur disque) / hibernation : l'état des applis est conservé sur le disque. Le système est éteint et ne consomme aucune énergie
- éteint : les applis sont fermées. Le système est éteint, aucune énergie n'est consommée
Pour « reprendre instantanément là où tu t'étais arrêté », il faut conserver l'état des applis. Les reprises les plus rapides (quasi instantanées) sont possibles quand l'état des applis est stocké en mémoire RAM. Le problème de la RAM, c'est qu'elle a besoin de courant (d'énergie !) pour conserver sa valeur. Dès que le courant est coupé, l'état des applis est perdu.
L'alternative est la veille sur disque (ou hibernation), où l'état est stocké sur le périphérique de stockage permanent de l'ordinateur. Cela permet d'éteindre complètement l'ordinateur. Le problème de la veille sur disque, c'est que la reprise est plus lente et qu'il faut ressaisir les phrases secrètes de chiffrement pour le chiffrement complet du disque.
La bonne nouvelle, c'est que GNU/Linux moderne est livré avec systemd, qui permet de configurer la façon dont l'ordinateur gère la veille et la reprise. Tu peux configurer ta tablette pour qu'elle se mette d'abord en veille en RAM (reprise instantanée) puis, après un certain temps, en veille sur disque.

Un jour de travail normal, je me réveille (très) tôt pour travailler de chez moi sur mes projets les plus exigeants. Ensuite, je vais au travail à vélo et je continue à travailler là-bas. J'ai chronométré mon trajet et je me suis dit que si ma tablette restait allumée au moins deux heures, je pourrais reprendre mon travail instantanément. Si je ne reprends pas mon travail sur la tablette dans les deux heures, elle économise la batterie en passant en veille sur disque. Ainsi, j'ai la meilleure expérience pour ma situation particulière.

Apparence uniforme
Contrairement à l'iPad, très contrôlé, les logiciels sous GNU/Linux sont créés avec de nombreuses approches différentes de la conception d'interface. Il n'existe rien comme les Human Interface Guidelines qu'Apple impose pour iOS et iPadOS. C'est un problème, car cela rend l'apparence et la sensation des logiciels incohérentes.
Une apparence et une sensation cohérentes sont importantes pour un environnement et une expérience sans friction. J'ai donc fait de nombreux petits ajustements de couleurs, de polices, d'icônes et de barres d'outils pour que mes applis aient toutes la même apparence et la même sensation. Même si ce n'est pas parfaitement harmonieux, j'ai désormais l'impression de ne plus travailler sur un « Frankenstein OS ».
Je préfère un thème sombre, plus doux pour mes yeux, mais à toi de décider. Utilise des outils comme lxappearance pour ajuster plusieurs applis à la fois. Mais tu devras probablement aussi faire des ajustements appli par appli. J'utilise le thème adwaita-dark, les icônes (monochromes) HighContrast et la police Open Sans Light.


Au quotidien
Construire un beau système, c'est une chose, mais l'utiliser vraiment tous les jours, c'en est une autre ! La Surface Go est mon outil du quotidien, et ces dernières semaines, j'ai expérimenté différentes choses et différents réglages. Voici quelques temps forts.











Conclusion
Construire mon propre système de tablette est un vrai défi. Ma première tentative n'était pas assez bonne pour remplacer mon iPad. Cette deuxième tentative, en revanche, est différente. Le temps et les efforts que j'ai consacrés à peaufiner l'expérience utilisateur donnent un système bien meilleur. Je l'utilise désormais comme ordinateur principal au quotidien.
Même si j'ai toujours apprécié le travail d'Apple sur l'iPad, il reste limité par son logiciel verrouillé. Surtout maintenant qu'Apple a décidé de durcir encore son contrôle de l'AppStore. Le seul moyen de contrôler l'avenir, c'est de le créer soi-même : je crois que le moment est venu de devenir capitaine de mon propre navire !
Mise à jour de janvier 2021
Après des mois d'utilisation intensive, j'ai décidé d'abandonner mon propre système de tablette