Librem 5 et convergence

L’idée de convergence existe depuis bien longtemps. Aujourd’hui, hormis le fait que l’architecture d’un téléphone n’est pas la même que celle d’un ordinateur de bureau, il est parfaitement envisageable de considérer qu’un téléphone puisse faire office d’ordinateur de bureau.

Cela fait maintenant plusieurs années que j’utilise un Raspberrypi, d’abord 3B+, aujourd’hui 4B+, comme poste de travail. Or, l’architecture du Raspberrypi est celle d’un téléphone. Mon raspberrypi est connecté à un écran tactile de 12,5 pouces et relié à un clavier bluetooth récupéré d’une ancienne tablette. Le système est Raspbian, dérivé de Debian.

Avec le Librem 5 en mode convergence, j’ai accès à un écran de 30 pouces simultanément à l’écran tactile du Librem, avec un clavier muni d’un touchpad et une souris, les deux sans fils. Tout cela est relié par l’intermédiaire d’un hub relié au Librem par un connecteur USBC et disposant d’une sortie HDMI pour connecter l’écran, de trois ports USB3 et d’une alimentation (aussi en USBC).

Convergence simple
Premier exemple de convergence.

Sur la capture d’écran ci-dessus se trouve le premier exemple de convergence. À gauche, se trouve l’écran tactile du Librem, avec les deux bandes noires permettant d’accéder au programmes (en bas) et aux différents réseaux et notifications (en haut). À droite, se trouve l’écran principal avec une image de fond prise par mes soins.

La gestion des écrans est intéressante, puisque c’est le bord commun aux deux écrans qui permet le passage du pointeur de la souris d’un écran à l’autre. Remarquez que l’écran tactile du Librem est parfaitement utilisable simultanément à l’utilisation de la souris. Remarquez aussi que la plupart du temps, le lancement d’une application depuis le librem provoquera son affichage sur le Librem, mais pas toujours. Or, en raison de l’adaptation des applications à l’écran du Librem, le bandeau haut de la fenêtre permettant sa saisie peut parfois ne pas être présent. Il peut donc être difficile de déplacer une fenêtre d’un écran à l’autre sans connaître quelques fonctionnalités de déplacement au clavier comme :

  • <SHIFT><WINDOW><Flèche droite ou gauche> pour déplacer la fenêtre qui a le focus d’un écran à l’autre,
  • <WINDOW><Flèche haut ou bas> pour maximiser ou afficher à la taille choisie la fenêtre,
  • <WINDOW><Flèche gauche ou droite> pour placer la fenêtre sur toute la moitié gauche ou droite de l’écran,
  • <WINDOW><A> pour ouvrir le lanceur d’application et
  • <WINDOW><S> pour ouvrir le sélecteur d’application.

Sur la seconde capture de l’écran, on peut voir qu’il est possible de placer l’écran du librem différemment et de lui donner un facteur de zoom particulier. Le panneau des préférences présenté permet aussi de choisir l’écran principal, c’est-à-dire l’écran sur lequel les menus (bandes noire en haut et en bas) seront affichés. Il permet aussi d’effectuer différents réglages propres à la configuration de chaque écran ou de choisir un clonage simple de l’écran du Librem sur l’autre écran. Enfin, il permet de couper l’écran secondaire après avoir remis les menus sur celui du Librem, pour permettre de le débrancher et quitter ainsi la convergence. Or, cela ne fonctionne pas toujours bien. Dans la moitié des cas, après avoir débranché l’écran secondaire, le Librem plante et redémarre. Il s’agit là d’un bug à corriger.

Convergence écran
Second exemple de convergence avec préférences de réglages des écrans.

Cela dit, la convergence fonctionne plutôt bien du point de vue des écrans et il devient vite extrêmement pratique de lancer des logiciels de manières tactile sur l’écran du Librem pour les utiliser sur l’autre écran.

Mais la convergence n’est pas qu’une affaire d’écran. C’est surtout un problème logiciel. Je présenterai dans un autre article, le cas de l’utilisation simultanée d’un logiciel de reconnaissance de caractères (gimagereader) et de LaTeX qui pourrait être considéré comme un exemple fort de convergence. Pour rester ici focalisé sur l’écran, il me faut évoquer les captures d’écrans.

Pour pouvoir rédiger cet article, il était nécessaire de pouvoir réaliser des captures d’écrans en mode convergence. Je m’attendais à des difficultés en raison de la présence des deux écrans, mais le problème s’est situé totalement ailleurs.

J’aime et utilise Gimp depuis toujours. Je l’utilise donc pour faire mes captures d’écran. Gimp n’est certainement pas un logiciel adapté à un téléphone et il n’est évidemment pas présent dans la logithèque de PureOS. Mais celle-ci n’est que la partie émergée de l’iceberg Debian. L’utilisation de la console est ici à privilégier. Avec quelques :

apt search terminator
apt search gimp

en utilisant le clavier disponible pour la console, on se rends compte qu’une grande partie des logiciels disponibles sous Debian le sont aussi sous PureOS. Je reparlerai dans un autre article des problèmes rencontrés pour installer certains logiciels comme Merkaartor ou biber. Ainsi, une ligne suffit pour se retrouver avec terminator et gimp :

sudo apt-get install terminator gimp

après éventuellement :

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Terminator est alors disponible (avec transparence, excusez du peu) et Gimp aussi.

MAIS, même si Gimp est parfaitement fonctionnel, impossible de réaliser une capture d’écran. Tout se passe apparemment correctement, mais l’image obtenue reste obstinément entièrement noire.

Comme ImageMagick (installé par défaut), par l’intermédiaire de son utilitaire import, permet de réaliser des captures d’écran, j’ai tenté :

import -pause 10 capture.png

et le résultat fut exactement le même qu’avec Gimp.

Il m’a fallu un certain temps et l’article https://puri.sm/posts/easy-librem-5-app-development-take-a-screenshot/ pour me rendre compte que le problème venait du serveur graphique.

Précisons que non seulement la carte graphique du Librem 5 est libre, mais que le serveur graphique n’est pas X11, classiquement utilisé sous Debian, mais Wayland (https://fr.wikipedia.org/wiki/Wayland). Ce serveur qui va probablement remplacer X11 est déjà présent sous Debian, mais pas installé par défaut. Comme il est semble-t-il plus performant et plus léger que X11, c’est lui qui a été embarqué sur le Librem 5. Or, toutes les applications ne fonctionnent pas bien avec lui.

Grim et capture d’écran

Ainsi, pour obtenir une copie d’écran sous Wayland, il faut utiliser un logiciel du nom de « grim ». Pour le faire simplement, en suivant l’article cité précédemment, il faut simplement installer grim et ce qu’il faut pour notifier l’utilisateur qu’une capture d’écran va être faite :

sudo apt-get install grim libnotify-bin notify-send

Puis, il faut créer un script, qu’on peut nommer « screenshot », contenant :

#!/bin/bash
SCREENSHOT="/home/purism/Pictures/$(date +%Y-%m-%d-%H%M%S).png"
notify-send -t 1000 screenshot "Taking a screenshot in 5 seconds"
sleep 5
grim "$SCREENSHOT"
notify-send screenshot "Screenshot stored at ${SCREENSHOT}"

dont le code est évident et qu’il ne faut pas oublier de rendre exécutable par :

chmod a+x /home/purism/bin/screenshot

On peut ensuite le lancer pour le tester en étant dans le répertoire dans lequel il se trouve par :

./screenshot

Et là, normalement vous devriez obtenir une belle copie des deux écrans simultanément dans le répertoire « Pictures ».

Finalement, on peut créer un lanceur permettant de réaliser une copie d’écran à partir du script « screenshot » en plaçant le fichier « screenshot.desktop » dans le répertoire du lien : /home/purism/.local/share/applications/screenshot.desktop. Il doit contenir :

[Desktop Entry]
Name=Screen Shot
Type=Application
Icon=applets-screenshooter
Exec=screenshot
Categories=Utility;

Ainsi, au prochain redémarrage du téléphone, apparaîtra une jolie petite icone dans les applications permettant de réaliser la capture d’écran.

Vous trouverez dans l’article mentionné ci-dessus, une amélioration de ce script permettant notamment de régler le délai avant que la capture soit réalisée.

Voilà pour cette première présentation de la convergence. Deux autres articles vous en diront plus en vous présentant la convergence liant caméra, reconnaissance de caractères et publication sous LaTeX.

Librem 5 et localisation

Je suis toujours en admiration vis-à-vis de la capacité de certains hommes à gérer la différence. Ici, il s’agit de différences linguistiques : la gestion des langues sur un système d’exploitation.

À priori, le problème est simple : on veut que son ordinateur ou téléphone parle comme nous. Prenons le français par exemple. On peut croire qu’il suffit d’indiquer à sa machine que notre langue est le français pour que tout soit réglé. Mais le problème n’est pas si simple. Voici ce que le Librem propose dans son panneau des préférences, sous « Pays et langue » :

Il y a non seulement la langue, mais divers formats, c’est-à-dire différentes variantes de la langue française. Ici on a la langue française avec une variante suisse (mais cela pourrait être du canadien, par exemple). Les variantes sont importantes non seulement pour des spécificités linguistiques, mais pour la gestion des claviers. Je dis « des », car non seulement la convergence va impliquer l’utilisation d’un clavier physique qui doit être correctement configuré (ici un clavier suisse romand : QWERTZ), mais aussi pour la configuration du clavier virtuel. Avec le Librem, pas moins de trois claviers virtuels sont nécessaires : le clavier suisse, le clavier français et un clavier virtuel dit de « Terminal » qui permet d’utiliser au mieux une console avec des flèches directionnelles et une touche « esc », notamment.

Dès le départ, le Librem demande la configuration de la langue. Or, le problème que j’ai rencontré est qu’après avoir spécifié le français suisse, j’ai voulu retirer l’anglais. Ce fut une mauvaise idée, puis alors toutes les langues qui m’étaient connues ont soudainement disparu. Ce genre de bugs est classique et il peut être difficile d’y remédier sous Android par exemple. Sous PureOS, les commandes propre à un système d’exploitation tels que Debian, permettent de le faire sans difficultés en reconfigurant les locales. Ainsi, un très classique :

sudo dpkg-reconfigure locales

permet de re-générer les locales souhaitées et de spécifier la locale principale (ici le français suisse en UTF8 : fr_CH-UTF8). Mais pour sélectionner les locales au clavier, encore faut-il savoir qu’un clavier de terminal est disponible à gauche de la touche d’espace du clavier virtuel. De plus, non seulement il faut bien savoir qu’il ne faut pas supprimer l’anglais, mais pas non plus le français, car le clavier virtuel suisse romand ne dispose pas de caractères accentués, pour une raison encore inconnue.

Une fois cela fait, il faut finalement ne pas oublier de mettre le clavier suisse romand tout en haut des sources de saisie et qu’il est possible qu’il se déplace parfois vers le bas lors d’un redémarrage.

Tout cela ne fut pas bien problématique pour moi qui suis habitué à régler ces problèmes en ligne de commande, mais cela peut constituer une difficulté pour un néophyte. Une fois tout cela bien configuré, il faut reconnaître que les claviers virtuels sont agréables, ni trop grands ni trop petits, qu’on ne peut rapidement plus se passer du clavier du terminal et qu’en mode de convergence (voir l’article éponyme) le clavier physique fonctionne parfaitement. Relevons aussi que le clavier du terminal et présent par défaut et qu’il est très convainquant, contrairement aux différents claviers de terminaux sous Android qui embarquent quasiment tous des traceurs et sont souvent peu praticables. Par contre, évidemment le swipe n’est pas au rendez-vous.

Présentation du Librem 5

Introduction

Cet article inaugure une série d’articles consacré au Librem 5, le téléphone de la société Purism (https://puri.sm/products/librem-5/) brièvement décrit sur Wikipedia : https://fr.wikipedia.org/wiki/Librem_5.

Il s’agit d’un téléphone libre, utilisant le système d’exploitation PureOS, un dérivé direct de Debian. Je l’ai reçu le 17 mars 2021, après une prè-commande de 3 ans. Il est intéressant de souligner ce fait, par comparaison avec le taux de changement des téléphones qui est de cet ordre de grandeur et celui des ordinateurs qui est aujourd’hui un peu plus long, sans l’être beaucoup plus. Cela n’a pas été un problème pour moi étant donné que le contenu et les objectifs du projet étaient évidemment bien plus important que l’immédiateté de la possession.

Hardware

La première impression fut que ce téléphone était lourd. Mon téléphone précédent est un Fairphone 2 tournant sous /e/OS dont l’écran est plus petit et il est bien plus léger. Ma femme ayant un Fairphone 3 d’une grandeur comparable au Librem 5, comparaison faite, les deux sont aussi lourds. Du point de vue de la forme, de la masse et de la taille, le Librem 5 est donc très semblable à un Fairphone 3.

Un important problème est rapidement survenu. La batterie étant chargée à moins de 20%, j’ai voulu le mettre en charge immédiatement. Or, malgré une nuit complète, il a été finalement totalement déchargé. Après avoir testé différents câbles USBC, je me suis résolu à tester le chargeur fourni. Impossible de le faire fonctionner. C’est en utilisant l’alimentation de mon Raspberrypi que le Librem s’est mis à charger. Malgré une alimentation à 3 ampères, il a fallu une autre nuit pour qu’il soit totalement chargé.

Là se sont arrêtés mes problèmes de hardware. Mais j’ai pu constater alors que des problèmes liés à la batterie pouvaient exister et que plusieurs méthodes de résolution sont évoquées dans la documentation : https://docs.puri.sm/

Software

Venons-en maintenant à la saga des problèmes logiciels. Je ne dis pas « saga » par ironie, car pour moi le chemin est plus important que le but et j’espère que cette saga va continuer tant j’apprécie être confronté à toute sorte de défis techniques.

Avant toute chose, il faut bien comprendre ce qu’est le Librem. L’immense majorité des téléphones fonctionnent aujourd’hui sous Android. Même si le noyau est linux, Android utilise Java pour fonctionner. Or, Java est lourd et souvent inutile. Le Librem est un téléphone très original, car il se passe de Java. Au même titre que le Raspberrypi, le Librem fonctionne sur ARM nativement. De plus, ce téléphone est vraiment libre. Le pilote de sa carte graphique est par exemple libre, ce qui n’est pas la moindre des choses. Enfin, il est l’héritier de la branche Debian des distributions linux. Cela signifie qu’on a accès à l’ensemble des logiciels prévus pour Debian, Mint ou Ubuntu. Cela en fait un téléphone au potentiel exceptionnel. Reste qu’il n’est pas facile de reporter tout cela sur un téléphone, surtout du point de vue des interfaces graphiques dont les dimensions sont très souvent prévues pour de plus grands écrans et du point de vue de l’interaction tactile. En effet, quand un logiciel s’adapte correctement à l’écran d’un téléphone, cela ne veut pas dire que le clique droit ou que l’appui long soit correctement implémenté. Beaucoup de problèmes de ce type restent donc à régler. Mais, remarquez que même si ceux-ci ont été et sont encore nombreux, le résultat est déjà aujourd’hui largement supérieur à mes attentes, surtout avec la « Convergence » (possibilité d’utiliser mon téléphone comme un ordinateur normal) et je suis enchanté de mon investissement.

Conclusion

Le librem 5 n’est pas un téléphone à mettre entre toutes les mains, car il faut une bonne expérience de linux et de la ligne de commande pour affronter les principaux problèmes qui se présentent encore. Si l’objectif est l’utilisation de ce téléphone uniquement comme tel, un Fairphone avec /e/OS est bien plus adapté à l’heure actuelle. Par contre, pour en faire un véritable ordinateur de bureau qui soit simultanément un téléphone, il est déjà très réussi.

Dans la suite des articles que je vais consacrer au Librem 5, je vais aborder les principaux problèmes que j’ai rencontrés, ce qui permettra de mettre en évidence les faiblesses actuelles du téléphone qu’il faut bien évidemment reconnaître, mais aussi les point forts de l’ordinateur et de son système d’exploitation PureOS.