Profils d'accessibilité
Les profils 🌳 umi (Unified Multimodal Input, saisie multimodale unifiée)
génèrent un poste de travail utilisable sans clavier ni souris. Il se
pilote par plusieurs moyens de saisie coordonnés entre eux : toucher, voix,
regard… L’objectif est l’accessibilité, notamment pour les personnes en
situation de handicap moteur.
Ils se composent de deux parties : un
profil d’hôte umi qui
déclare le matériel et la session, et un
profil d’utilisateur umi
qui fixe l’environnement de l’utilisateur.
Le principe
Section intitulée « Le principe »Aucun moyen de saisie ne remplace seul le clavier et la souris : chacun a ses limites (précision du regard, fatigue de la voix, amplitude du geste). Le poste UMI les combine pour qu’ils se complètent, et se règle selon les capacités de l’utilisateur.
| Moyen de saisie | Outil | Usage |
|---|---|---|
| Toucher | Écran tactile, clavier visuel Onboard | Désigner, cliquer, saisir du texte |
| Voix | Talon | Commandes vocales |
| Regard | Tobii Eye Tracker 5, piloté par Talon | Déplacer le pointeur |
Exemple de coordination : le regard place le pointeur, la voix ou le clic par temporisation valide, le clavier visuel saisit le texte.
Le matériel
Section intitulée « Le matériel »Chaque périphérique sert un moyen de saisie : n’équiper le poste que de ceux adaptés à l’utilisateur.
| Élément | Exigence |
|---|---|
| Traqueur oculaire | Tobii Eye Tracker 5 (USB, identifiant fabricant 2104) |
| Architecture | x86_64-linux uniquement (Talon ne fournit pas d’autre binaire) |
| Micro | Nécessaire pour les commandes vocales |
| Haut-parleurs | Retour sonore des frappes du clavier visuel |
| Écran | Un bon écran tactile pour le contrôle du bureau et des applications |
Mettre en place un poste
Section intitulée « Mettre en place un poste »-
Déclarer l’hôte et son utilisateur dans
etc/config.yaml, tous deux avec le profilumi:etc/config.yaml users:alice:uid: 1010name: "Alice"profile: "umi"groups: ["global"]hosts:- hostname: "umi-desktop"name: "Poste accessible"zone: "maison:2.3"profile: "umi"users: ["alice"]Sur l’hôte
umi, le profil d’utilisateur ajoute le compte aux groupesinputetuinput, sans lesquels Talon ne peut pas injecter d’événements. -
Activer l’ouverture de session automatique dans la configuration de la machine, si l’utilisateur ne peut pas utiliser de clavier pour s’identifier :
usr/machines/umi-desktop/configuration.nix darkone.host.umi.autoLoginUser = "alice"; -
Générer et déployer :
Fenêtre de terminal just generatejust apply umi-desktop -
Tester et configurer
Configurer l’hôte
Section intitulée « Configurer l’hôte »Options de darkone.host.umi, à poser dans usr/machines/<hôte>/configuration.nix.
| Option | Défaut | Rôle |
|---|---|---|
enable | activé par le profil | Active le profil d’hôte |
autoLoginUser | null | Compte umi ouvert au démarrage |
package | pkgs.talon | Paquet Talon, ou null pour l’installer à la main |
Paramétrer l’utilisateur
Section intitulée « Paramétrer l’utilisateur »Options de darkone.home.umi, à poser dans usr/users/<login>/default.nix.
| Option | Défaut | Rôle |
|---|---|---|
enable | activé par le profil | Active le profil d’utilisateur |
enableTalonAutostart | true | Lance Talon à l’ouverture de session |
communityScripts | null | Arbre talonhub/community déployé dans ~/.talon/user/community |
enableDwell | false | Clic par temporisation permanent |
enableTrackerAuto | true | Regard et clic suivent le traqueur |
gazeFilterSpeed | 1.0 | Réactivité du regard (celle de Talon) |
cursorFilterSpeed | 4.0 | Réactivité du pointeur (Talon : 2.0) |
enableGazeControl | true | Le pointeur suit le regard |
enableHeadControl | true | La tête affine le pointeur placé par le regard |
headSpeed | 5.0 | Sensibilité de la tête (Talon : 1) |
enableHeadJump | false | Un mouvement de tête ramène le pointeur au regard |
enableMouseJump | false | Bouger une souris vers le regard y ramène le pointeur |
enableGazeFocus | false | La fenêtre regardée prend le focus (expérimental) |
dwellTime | 1.6 | Délai du clic par temporisation, en secondes |
panelHeight | 64 | Hauteur du panneau Cinnamon, en pixels |
textScaling | 1.5 | Facteur d’agrandissement du texte (Cinnamon) |
enablePanel | true | Panneau imposé, réécrit à chaque déploiement |
enableMaximize | true | Fenêtres d’applications ouvertes maximisées (Cinnamon) |
panelLaunchers | Fichiers, Firefox | Lanceurs du panneau (fichiers .desktop) |
menuFavorites | Calibration, Calculatrice, Agenda, Paramètres | Favoris du menu, réécrits au déploiement |
enableRofiMenu | true | Grille d’applications plein écran |
rofiGridResolution | { columns = 6; rows = 4; } | Tuiles par page de la grille |
hiddenApps | Terminaux, doublons, manuel NixOS | Masquées de la grille et du menu |
enableStkWithMouse | false | SuperTuxKart à la souris |
SuperTuxKart à la souris
Section intitulée « SuperTuxKart à la souris »Avec enableStkWithMouse, l’utilisateur pilote
SuperTuxKart 🡕 avec sa seule souris, par exemple un
joystick adapté reconnu comme une souris (n-ABLER…). Hôte umi uniquement.
Le jeu est installé, son lanceur démarre aussi le convertisseur dnf-stk-mouse.
| Geste | Action dans le jeu |
|---|---|
| Joystick vers l’avant | Accélérer |
| Joystick vers l’arrière | Freiner, reculer |
| Joystick à gauche, à droite | Tourner |
| Clic gauche maintenu | Déraper |
| Double clic gauche | Utiliser l’objet (arme) |
| Clic droit maintenu | Nitro |
Le pointeur reste actif : les menus du jeu se pilotent à la souris, la course l’ignore. Les gestes n’agissent que lorsque la fenêtre du jeu est active, ailleurs la souris reste une souris.
Ce que le profil change
Section intitulée « Ce que le profil change »Le poste est volontairement dépouillé de tout ce qui suppose un clavier ou une souris.
| Changement | Raison |
|---|---|
| Session Cinnamon en X11 | Talon ne fonctionne (malheureusement) pas sous Wayland |
| Ouverture de session automatique | Aucun mot de passe saisissable |
| Verrouillage et veille désactivés | Un écran verrouillé est un cul-de-sac |
| Trousseau de clés sans mot de passe | Évite une invite impossible à satisfaire |
| Accessibilité active dès l’ouverture | Aucune invite d’activation (Onboard) |
| Curseur, texte, panneau et icônes agrandis | Précision limitée du regard (quelques dizaines de pixels) et du doigt |
| Fenêtres d’applications maximisées | Grandes cibles, panneau toujours accessible |
| Ouverture par simple clic (Nemo) | Un double clic par temporisation exige de changer de mode |
| Clavier visuel ancré en bas | Grandes cibles, prédiction de mots |
| Clavier visuel masqué au démarrage | Écran dégagé, affiché par son bouton |
| Thème sombre par défaut (Cinnamon) | Comme les sessions GNOME |
Le panneau
Section intitulée « Le panneau »Sous Cinnamon, enablePanel organise le panneau du bas pour le regard.
| Emplacement | Contenu |
|---|---|
| Gauche | Menu, grille, lanceurs, fenêtres ouvertes |
| Droite | Types de clic, zone pause, regard |
| Puis | Accessibilité, clavier visuel |
| Enfin | Icônes d’état (Talon, Nextcloud…), horloge |
Ni icône Bluetooth ni barre de coin (afficher le bureau). L’appairage passe par le Gestionnaire Bluetooth du menu.
Les types de clic (simple, simple unique, double, glisser, secondaire) et la zone pause n’apparaissent que si le clic par temporisation est actif. La zone pause laisse le regard explorer l’écran sans rien déclencher ; les types de clic se masquent pendant la pause.
Le clic simple unique (pastille orange « 1 ») clique une seule fois, puis met le clic par temporisation en pause. À la reprise, le clic simple se répète.
| Action sur la zone pause | Effet |
|---|---|
| Clic, clics actifs | Suspend le clic par temporisation |
| Pointeur posé 1,5 s, en pause | Réactive les clics (barre verte) |
| Clic souris, en pause | Réactive les clics |
Le bouton regard (œil) coupe le pilotage du pointeur par le regard : les
yeux ne déplacent plus rien, et le clic par temporisation passe en pause pour
laisser la main à la souris. Le rallumer à la souris, au toucher ou par
l’action Talon user.umi_gaze réactive aussi les clics. Il est rallumé à
chaque démarrage.
La grille d’applications
Section intitulée « La grille d’applications »Avec enableRofiMenu, le premier lanceur du panneau ouvre toutes les
applications en plein écran, par pages de grandes tuiles, sans barre de
défilement.
| Cible | Effet |
|---|---|
| Tuile survolée | Mise en surbrillance |
| Clic sur une tuile | Lance l’application, ferme la grille |
| ◀ ▶ (bords de l’écran) | Page précédente, suivante |
| Fermer | Ferme la grille |
Les panneaux de réglages restent dans le menu Cinnamon. hiddenApps masque
d’autres applications (fichiers .desktop), de la grille comme du menu.
rofiGridResolution règle le nombre de tuiles par page.
Calibrer le regard
Section intitulée « Calibrer le regard »Le favori Calibrer le regard, en tête du menu Cinnamon, lance la calibration
de Talon, sans passer par son menu dans la zone de notification. Il apparaît
avec enableTrackerAuto.
Recalibrer après un changement d’écran, de position du traqueur ou de l’utilisateur, ou d’éclairage.
Le traqueur se fixe sous l’écran principal, celui où Talon calibre. Le Tobii 5 suit un écran 16:9 de 27” au plus, à 45-95 cm : au-delà (téléviseur…), la calibration s’interrompt dès le premier point.
Régler le pointeur à chaud
Section intitulée « Régler le pointeur à chaud »Avec enableHeadControl, le regard amène le pointeur dans la zone visée et la
tête l’affine. Au-dessus de 1, headSpeed rend la tête plus sensible ; en
dessous, il atténue les mouvements de tête trop amples. Ces réglages
s’essaient sans redéploiement, depuis la console (REPL) de Talon, et sont
perdus au redémarrage de Talon.
-
Ouvrir la console de Talon de l’utilisateur, depuis un compte administrateur de l’hôte :
Fenêtre de terminal sudo -u alice env HOME=/home/alice /home/alice/.talon/.venv/bin/repl -
Lire les réglages appliqués :
print(actions.user.umi_tuning()) -
Essayer des valeurs, l’utilisateur au poste :
Commande Effet actions.tracking.control_head_toggle(True)Active la tête actions.user.umi_head_speed(5)Tête 5 fois plus sensible (défaut) actions.user.umi_head_speed(0.3)Tête 3 fois moins sensible actions.user.umi_head_speed(1)Sensibilité d’origine de Talon actions.user.umi_filter_speed(1, 4)Réactivité regard et pointeur (défaut) -
Reporter les valeurs retenues dans
usr/users/<login>/default.nix(enableHeadControl,headSpeed,gazeFilterSpeed,cursorFilterSpeed), puis déployer.
Les autres comptes de l’hôte
Section intitulée « Les autres comptes de l’hôte »Un compte ordinaire garde sa session GNOME Wayland, avec quelques différences héritées de l’hôte :
- Démarrage : la machine ouvre la session du compte UMI. Fermer celle-ci ou changer d’utilisateur pour ouvrir la sienne.
- Seahorse : absent, car inutilisable sans clavier.
su: ne transmet pas l’accès à l’écran, une invite (trousseau…) y bloquerait le compte UMI. Administrer par SSH ou depuis sa propre session.- Extinction : chaque service a 5 secondes pour s’arrêter.
Diagnostic
Section intitulée « Diagnostic »| Symptôme | Piste |
|---|---|
| Talon ne voit pas le traqueur | Rebrancher le traqueur, puis relancer Talon (règle udev appliquée au branchement) |
| Icône Talon absente du panneau | Rouvrir la session |
| Micrologiciel non initialisé | Repasser une fois par Tobii Experience sous Windows |
| Session ouverte sous GNOME | Vérifier le profil umi du compte et sa présence dans les users de l’hôte, puis redémarrer |
| Le pointeur clique tout seul | enableDwell activé sans traqueur, le désactiver |
| Fenêtre « Clic de survol », clics toujours simples, molette inopérante | Un démon mousetweaks tourne dans la session, lancé avant la mise à jour : rouvrir la session |
| Le pointeur vise toujours à côté du regard | Recalibrer |
| Calibration interrompue au premier point | Écran de plus de 27”, ou trop éloigné |
| Le pointeur s’arrête avant le point regardé | Augmenter gazeFilterSpeed et cursorFilterSpeed |
| Le pointeur dépasse ou tremble | Les diminuer |
| La tête déplace trop le pointeur | Baisser headSpeed, ou enableHeadControl à false |
| Le kart ne répond pas à la souris | Rétablir les touches par défaut du jeu, lire les messages du convertisseur (journalctl -b -g 'dnf-stk-mouse:') |
Le joystick n’est pas dans les souris lues (reading …) | Absent de lsusb : le brancher sur un autre port USB (connect-debounce failed dans dmesg) |
Un compte UMI peut-il choisir GNOME ?
Section intitulée « Un compte UMI peut-il choisir GNOME ? »Non sur un hôte umi : la session Cinnamon est réimposée à chaque
démarrage, car Talon exige X11.
Et sur un poste ordinaire ?
Section intitulée « Et sur un poste ordinaire ? »Le compte ouvre la session GNOME Wayland de l’hôte, avec le clavier visuel de GNOME, le curseur et le texte agrandis. Talon et Onboard, qui exigent X11, restent inactifs.