Gemini

J’ai trop longtemps négligé l’importance du texte. Jeune j’ai été passionné de littérature. La science m’en a alors détourné. Paul Feyerabend m’ayant rappelé qu’elle était elle-même langage et Noam Shomsky ayant confirmé qu’il en était de même pour l’informatique, mes pratiques ont lentement dérivées vers le texte par la programmation, des cours de physiques en LaTeX et le un nouveau plaisir d’écrire en opposition radicale avec la période désagréable des vidéos-conférences. Tout alors m’a éloigné du monde des images à tel point que j’ai abandonné la télévision. Ce changement ne fut pas radical, car des années auparavant, j’avais déjà abandonné la voiture pour le vélo et je savais que le ralentissement de ses déplacements pouvait être très bénéfique. J’ai alors compris que le filtrage des informations par le texte pouvait l’être tout autant.

La découvert du groupe « rawtext.club » a donc été pour moi une véritable révélation. Toutes les valeurs des membres de ce groupe me correspondaient et comme ils proposaient de mettre de l’information sur le tout jeune Gemini, un autre web focalisé sur le texte, je me suis lancé dans l’aventure.

Le protocole

Gemini est un protocole, à l’instar d’http. Il s’agit d’accorder deux ordinateurs pour qu’il se comprennent et puissent se transmettre de l’information. Ainsi, quand vous utilisez « Hyper Text Transfer Protocol », soit http, vous utilisez un « un protocole de communication client-serveur développé pour le World Wide Web » (Wikipedia). Quand vous utilisez « Gemini », soit gemini, vous utilisez « un protocole de communication client-serveur. C’est un protocole de la couche application qui utilise le protocole TCP comme couche de transport. Il permet notamment d’accéder à des documents texte simples de type hypertexte. Les échanges entre le client et le serveur sont sécurisés à l’aide du protocole TLS. Le protocole est mis au point de manière collaborative mais n’est pas un standard internet » (Wikipedia).

« Les ressources Gemini sont identifiées au moyen d’URL dont le schéma est gemini://. Il est à noter que contrairement au protocole HTTPS qui possède un équivalent non chiffré (HTTP), le protocole Gemini ne définit volontairement pas d’équivalent non-chiffré.

La syntaxe des pages gemini, appelée Gemtext, est inspirée de celle de Markdown. »

Navigation

Pour visiter des sites gemini, on pourrait croire qu’il suffit de taper gemini:// dans la barre d’un navigateur. Mais le protocole n’étant pas standard, cela n’est pas possible aujourd’hui. Il faut un navigateur spécifique pour cela. Plusieurs solutions existent. Personnellement j’utilise « Amfora », un navigateur Gemini en mode ligne de commande. Une liste de clients gemini vous permettra de faire votre choix et de les installer. Outre Amphora, écrit en go, AV-98 écrit en python sont à tester. Sur la figure suivante, vous pouvez voir les deux navigateurs, Amfora à gauche, coloré sur fond noir et à droite dans une console transparente, AV-98 qui se superpose dans un style plus classique. Pour les navigateurs en mode graphique, Lagrange semble un bon choix.

Rawtext.club

Comme dit plus haut, ce groupe est plus qu’un hébergeur Gemini. Je vous conseille donc de vous y intéresser de plus près si vous aimez le texte et la philosophie des mouvement « LOW ».

À l’url :
gemini://rawtext.club
vous trouverez une description de ce « Slow social network », comme il se décrit lui-même.

À l’url :
gemini://rawtext.club/~guyotv
vous trouverez mon site gemini. Tout progressivement, celui-ci va prendre de l’importance et j’espère à terme pouvoir migrer entièrement vers celui-ci.

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.

31. Just sudo it

Un petit article pour préciser divers usages du compte root.

Comme le dit le titre, il est tout-à-fait possible, et souvent nécessaire, de réaliser des opérations en mode de Super Utilisateur : su. Plusieurs possibilités s’offrent à nous.

  • sudo, qui est une manière de gérer l’accès d’un utilisateur courant à certaines commandes réservées au super utilisateur,
  • sudo -s, …
  • sudo -i, …
  • sudo su … et
  • su, qui offre un accès complet et sans limites au système.

Accès au super utilisateur

Généralement, il n’est pas nécessaire de se connecter su le compte root. Non seulement cela peut être risqué en raison des erreurs qu’on peut y commettre, mais aussi pour des raisons de sécurité.

La commande sudo est donc généralement celle utilisée pour effectuer des opérations spécifiques nécessitant le lancement d’une unique commande, comme la mise-à-jour des paquets par exemple. Cette commande est hautement paramétrable grâce à l’utilitaire visudo, qui ne sera pas décrite ici, mais qui permet d’attribuer une ou plusieurs commandes à faire sous root, à un utilisateur particulier.

sudo -s, est une commande donnant accès au commandes du compte root, mais pas au compte root. Les variables d’environnement, le répertoire root, le changement du mot de passe root, … ne sont pas accessibles.

sudo -i va un peut plus loin que sudo -s. C’est le mot de passe utilisateur qui est toujours demandé et les commandes restent déléguées par setuid root, mais le shell est initialisé comme au login de l’utilisateur.

sudo su est totalement identique à sudo root, décrit ci-dessous, à l’exception que le mot de passe demandé sera celui de l’utilisateur référencé dans les sudoers. Ainsi, il est possible, pour autant qu’on y soit autorisé, de se connecter en root sans connaître le mot de passe root.

Enfin la commande su, qui est identique à su root (on peut aussi faire su unautreutilisateur), remplace l’utilisateur courant par le super utilisateur, avec tous ses pouvoirs. C’est très pratique, mais nécessite de connaître le mot de passe du super utilisateur.

Gestion des comptes

Par ailleurs, il est nécessaire d’évoquer ici la gestion des comptes et mots de passe dans le cadre du super utilisateur. Notamment, la possibilité d’imposer des changements de mots de passe ou de désactiver des comptes après un temps donné.

La commande « chage » sert à « modifier les informations de validité d’un mot de passe ». Un man chage nous fournit la description suivante :

« La commande chage modifie le nombre de jours entre les changements de mot de passe et la date du dernier changement. Ces informations sont
utilisées par le système pour déterminer si un utilisateur doit changer son mot de passe. »

man chage

Ainsi, si vous êtes confrontés, lors d’une tentative de vous connecter en super utilisateur via la commande su, à une information spécifiant que le compte a été désactivé, c’est que l’administrateur à trouvé nécessaire de vous obliger à reconsidérer votre accès au compte à un moment donné ou au bout d’un certain temps.

La désactivation de l’obligation de changer le mot de passe root se fait par la commande :

chage -E -1 -I -1 -M -1 root

dont l’explication est la suivante :

  • -E : date d’expiration du compte ; -1 supprime l’expiration,
  • -I : durée d’inactivité avant le blocage du compte ; -1 supprime cette durée d’inactivité,
  • -M : nombre de jours maximums pendant les quels un mot de passe est valable ; -1 supprime cette durée.

Voilà pour ces quelques précisions.

Raspberrypi imager

Un tout petit article pour signaler, comme le fait l’article https://www.minimachines.net/actu/raspberry-pi-imager-1-6-98196, que l’utilitaire fort pratique pour créer une image de Rasbpian sur une carte SD (disponible sur Raspberrypi, mais aussi sur Debian) « Raspberrypi imager » dispose d’un mode avancé. Pour y accéder, il faut appuyer simultanément sur <CTRl><SHIFT><X>. On peut alors choisir le nom de la machine, choisir d’activer ssh, choisir un mot de passe, configurer le wifi et les locales avant même l’installation sur la carte sd. Cela est très pratique avec des élèves, car cela évite de devoir passer par la phase de configuration post-installation.

Voilà. Cet utilitaire est vraiment très bien fait.

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.