Kiosk HOWTO Gene Wilburn, ITS Dept, Royal Ontario Museum v1.0, October 1999 _________________________________________________________________ _Ce document se veut un guide pour la mise en place d'une borne interactive de type www utilisant Linux, X11R6, Fvwm2, Navigator 4.X et une boule de pointage. Il met en relief les méthodes employées pour la galerie sur la biodiversité au Royal Ontario Museum à Toronto._ _________________________________________________________________ 1. Introduction Les bornes d'affichage d'informations rendent service dans les bibliothèques, les expositions, les musées, les établissements d'enseignement, les bureaux d'accueil municipaux, les points d'informations, les conférences, les galeries marchandes, les aéroports, bref, tout endroit où l'on désire un accès facile à l'information. Les bornes sont généralement munies d'écrans tactiles ou de dispositifs de pointage de type boule pour que les gens puissent accéder à un contenu attractif et tenu à jour. Les bornes peuvent être créées de différentes façons, depuis des solutions onéreuses à base de logiciel propriétaire jusqu'aux systèmes open source reposant sur le format HTML. Une approche de type butineur est particulièrement intéressante en raison de son caractère multimédia intrinsèque. Le format HTML marie le texte, le graphisme, le son et tous les médias en flux dans un format portable. Linux fournit une plate-forme souple pour le déploiement de bornes. L'installation de Linux est économique et offre de nombreuses possibilités, qu'il s'agisse de stations sans disque ou de serveurs www couplés à des bases de données. L'adaptabilité du système d'exploitation sous-jacent permet de gérer à distance, que ce soit par le téléphone ou par un autre lien réseau, une borne Linux correctement configurée. Ce HOWTO présente une méthode d'installation de Linux en tant que borne interactive autonome qui utilise Netscape Navigator 4.X et Fvwm2 sur un système Red Hat 6.x. Il est issu de l'expérience de création d'un système de ce type que j'ai mis en place dans la _galerie sur la biodiversité_ au Royal Ontario Museum ( http://www.rom.on.ca) à Toronto au Canada. La borne à laquelle ce document fait référence inclut une boule de pointage plutôt qu'un écran tactile plus onéreux. Il existe bien d'autres façons de créer une borne Linux mais celle-ci s'est avérée fiable pour nous et peut servir de point de départ à vos propres projets. 1.1 Droits de propriété, licence et conditions d'usage Copyright (c) 1999 par Gene Wilburn. La distribution de ce document doit se conformer aux termes de la licence LDP tels que définis à l'adresse : sunsite.unc.edu/LDP/COPYRIGHT.html. 1.2 Remerciements Notre borne Linux s'inspire fortement des travaux effectués par la ville de Charlotte en Caroline du Nord pour son site www municipal _Charlotte's Web_ (cf http://www.charweb.org/webinfo/kiosk/). Le projet de borne de Charlotte qui repose sur un écran tactile a été mis en place en 1996 à partir d'une distribution Slackware, de Fvwm et de Netscape Navigator 2.X. Les webmestres de Charlotte ont réalisé une borne très pratique et ont publié le détail de leur installation sur le site. Ce HOWTO constitue d'une certaine façon une mise à jour de leur travail, modifiant certains points pour travailler avec une Red Hat 6.X, Fvwm2, Netscape Navigator 4.X et un dispositif de pointage sur mesure. J'ai collaboré avec Debra Luneau (debral@rom.on.ca), administrateur web du Royal Ontario Museum, à la mise au point des canevas sous Netscape. Les exemples fournis sur notre site sont le fruit de son travail. Nous les utilisons tels quels dans la galerie sur la biodiversité. La section sur la biodiversité de l'Ontario de la version ROM du site a été créée par Hopscotch Interactive (www.hopscotch.ca). L'application originelle sous forme de fichiers de base de données à plat a été convertie en un système utilisant MySQL par Gord Howells (gordonh@rom.on.ca), concepteur et développeur de la base de donnée ROM. Une version hors-borne de ce modèle réduit de site est consultable à l'adresse http://www.rom.on.ca/ontario/. 2. Survol de l'installation L'installation de Linux en tant que borne est semblable à celle d'une station de travail graphique à quelques détails près. S'il s'agit d'un poste autonome, il doit démarrer directement en mode borne. De plus, l'environnement de navigation doit être modifié pour désactiver les écrans de dialogue standard et supprimer les parties du butineur qui conduiraient à des interactions inopportunes (cf. la barre de navigation de Netscape). En principe, un site web sur borne interactive doit se suffire à lui-même. Les utilisateurs se déplacent au sein du site au moyen d'un dispositif de pointage. Il peut s'agir d'un écran tactile, d'une boule ou d'une souris. La robustesse des souris mises à disposition du public est problématique. Une borne Linux peut être directement connectée à un site-mère via un réseau local ou une liaison PPP et récupérer les pages à la demande. Elle peut également contenir l'intégralité du site web et exécuter elle-même Apache et les scripts CGI associés. 3. Mise en place d'un environnement de type borne 3.1 FVWM2 FVWM2 (FVWM, version 2 -- www.fvwm.org) fournit un gestionnaire de fenêtres pour X souple, fiable et léger qui s'avère très pratique à configurer pour un environnement de borne. On modifiera certaines options par défaut dans le system.fvwm2rc tels les écrans virtuels, les barres de menu, les menus de sortie, etc. pour ne conserver qu'un cadre FVWM minimal. La borne étant autonome, la modification des préférences globales ne gênera en rien. On profite également des propriétés d'objets positionnables pour mettre en place des bitmaps X Window (fichiers xpm) qui vont recouvrir les parties de Netscape auxquelles vous souhaitez interdire l'accès. Le fichier à modifier se trouve en /etc/X11/fvwm2/system.fvwm2rc (du moins si vous avez installé une distribution Red Hat). Vous devrez partir à la recherche des sections décrites ci-dessous dans ce fichier. /etc/X11/fvwm2/system.fvwm2rc Dans le fichier /etc/X11/fvwm2/system.fvwm2rc changez : DeskTopSize 2X2 en DeskTopSize 1X1 Les bureaux virtuels disparaissent. Dans la section Default Styles, changez ensuite : Style "*" BorderWidth 7, HandleWidth 7 en Style "*" BorderWidth 0, HandleWidth 0, notitle, nohandles La plupart des contrôles usuels des fenêtres sont désactivés. Ajoutez les deux lignes suivantes à la section Default Styles : Style "xdaliclock" StaysOnTop Style "sxpm" StaysOnTop La section Default Styles devrait prendre l'allure suivante : # default Styles: #Style "*" BorderWidth 7, HandleWidth 7 Style "*" BorderWidth 0, HandleWidth 0, notitle, nohandles Style "*" Icon unknown1.xpm, Color lightgrey/dimgrey Style "*" MWMFunctions, MWMDecor, HintOverride Style "*" DecorateTransient, NoPPosition Style "*" IconBox 0 -10 -280 -1 Style "*" FocusFollowsMouse Style "*" RandomPlacement, SmartPlacement Style "xdaliclock" StaysOnTop Style "sxpm" StaysOnTop Vous pouvez recouvrir certaines parties de Netscape Navigator avec les programmes xdaliclock et sxpm. La formule magique réside dans l'attribut ``StaysOnTop''. Cherchez ensuite les quatre lignes suivantes et commentez-les : #AddToFunc InitFunction "I" Module FvwmButtons #+ "I" exec xsetroot -mod 2 2 -fg \#554055 -bg \#705070 #AddToFunc RestartFunction "I" Module FvwmButtons #+ "I" exec xsetroot -mod 2 2 -fg \#554055 -bg \#705070 La mise en commentaire élimine l'exécuteur de tâches de Fvwm2, en accord avec le souhait d'un environnement aussi simple que possible. 3.2 Netscape Navigator Netscape Navigator est un meilleur choix pour une borne interactive que Netscape Communicator. Il est plus simple, il y a moins d'objets à cacher. Sous Windows(R) de Microsoft(TM), Netscape Navigator offre un mode de fonctionnement de type borne qui élimine la plupart des options de contrôle mais il n'existe à notre connaissance aucune possibilité de ce genre pour la version Unix à l'instant où nous écrivons ces lignes. La version Unix peut cependant être invoquée avec un argument -geometry qui nous permet de toujours l'afficher en plein écran. Cela fait partie de notre stratégie pour une borne reposant sur Netscape. À vous de décider de la résolution de la borne. Pour des moniteurs de 19 à 20 pouces, 640x480 nous paraît trop gros, 1024x768 trop petit et 800x600 correct pour le public (vous en jugerez peut-être différemment). Une fois la résolution fixée, vous êtes prêt à configurer Navigator. Par la suite, nous travaillerons en 800 par 600. À vous de procéder aux ajustements nécessaires si votre résolution diffère. _Note:_ Navigator sera exécuté par root pendant le démarrage. Il faut donc procéder à toutes les opérations depuis le compte root dans le répertoire /root/.netscape. Exécutez Netscape et cliquez sur le menu Edit, Preferences. Dans la rubrique Appearance, activez ``Show Toolbar as Text Only''. Dans Appearance, Fonts, réglez la taille des polices fixed- et variable-width à au moins 14pt sans quoi la zone d'affichage sera trop petite pour une lecture agréable. Entrez dans Preferences, Navigator l'URL de la page d'accueil de votre borne. Si vous utilisez Apache ou un autre serveur web en local, http://localhost/ donne accès au sommet de l'arborescence. Vous pouvez compléter afin de démarrer plus profondément. Sauvegardez ces choix puis cliquez sur View dans la barre de menu de Navigator. Désactivez Personal Toolbar et Location Bar. L'interface ressemble nettement plus à celle d'une borne, non ? Vos choix seront sauvegardés à la sortie de Navigator. 3.3 Recouvrement de Navigator Examinez de près votre écran Navigator et vous remarquerez quatre zones qui doivent être recouvertes et protégées des sélection à la souris ou à la boule : 1. la barre de menu en haut ; 2. le sélectionneur sur le côté gauche de la barre de navigation ; 3. tout ce qui figure à droite de Home dans la barre de navigation ; 4. le contrôle de sécurité dans le coin inférieur gauche de Navigator. Voici un schéma des zones à masquer : +---------------------------------------+ | # 1 Toolbar | +--+------------+-----------------------+ |#2| | #3 Navbar | +--+ +-----------------------+ | | | | | | | | | | | | | | | | | | | | +--------+ | |#4 Key | | +---------------------------------------+ Pour les zones supérieures (#1-3), on aura recours à trois images. Pour le contrôle de sécurité (#4), on emploiera xdaliclock. Création des masques L'approche la plus facile pour les zones #1-3 consiste à récupérer une copie d'écran de Navigator en 800 par 600 et à découper les parties adéquates. Je me suis servi de GIMP. Vous pouvez reprendre le graphisme d'origine, changer les couleurs ou mettre votre propre logo. Sauvegardez les images en tant que : 1. topbar.xpm 2. navleft.xpm 3. navright.xpm Le système X Window utilise xpm comme format natif. Servez-vous du programme _sxpm_ pour les placer sur l'écran. La mise au point des masques avec le nombre exact de pixels au bon endroit nécessitera plusieurs essais. Afin de vous aider, les fichiers xpm que nous avons créés et nos fichiers de configuration sont disponibles sur le site suivant : http://www.rom.on.ca/kiosk/HOWTO/. Télécharger nos fichiers et vous en servir comme point de départ sera sûrement le plus simple. 3.4 /root/kiosk.xinitrc De même que vous créeriez normalement un fichier .xinitrc pour votre usage personnel, vous devez mettre en place un fichier d'initialisation de session X pour votre application. Le script suivant offre différentes fonctionnalités : * initialisation de l'économiseur d'écran (optionnel) ; * placement d'un bitmap sur la barre de menu de Navigator (topnav.xpm) ; * placement d'un bitmap sur l'activateur de barre de navigation (navleft.xpm) ; * placement d'un bitmap sur le reste de la barre de navigation (navright.xpm) ; * placement d'un xdaliclock sur la clef de sécurité de Navigator (adapté à une résolution 800 par 600) ; * démarrage de Netscape et boucle de vérification de sa présence pour l'exécuter à nouveau s'il disparaît ; Il s'agit du fichier principal de fonctionnement de la borne. _________________________________________________________________ #!/bin/sh # kiosk.xinitrc -- Script d'initialisation de session X (borne interactive) # Demarrage de l'economiseur d'ecran /usr/X11R6/bin/xscreensaver-command -exit /usr/X11R6/bin/xscreensaver & # Recouvrement de Navigator (#1) sxpm /root/navtop.xpm & # Recouvrement des petites zones dans le selecteur de la barre d'outils (#2) sxpm -g +0+23 /root/navleft.xpm & # Recouvrement de la zone a gauche du bouton Home (#3) ####### ce n'est pas a _ droite_ du bouton Home ? ##### sxpm -g +275+23 /root/navright.xpm & # xdaliclock sur le cadenas de securite (#4) /usr/X11R6/bin/xdaliclock -g 38x20+0+578 -font fixed -noseconds \ -bg gray -fg black & sleep 2 # Demarrage de fvwm2 fvwm2 & # Redemarrage de Netscape s'il s'arrete while true ; do if [ -f /.netscape/lock] ; then rm /.netscape/lock fi /usr/bin/netscape -geometry 800x600 done # On ne passera jamais ici _________________________________________________________________ 3.5 /root/xkiosk Vous pouvez à présent tester la configuration de votre borne. Puisque vous allez le faire à répétition, ainsi que depuis un script d'initialisation, créez le script /root/xkiosk suivant : _________________________________________________________________ /usr/X11R6/bin/xinit /root/kiosk.xinitrc -- /usr/X11R6/bin/X \ -xf86config /root/kiosk.XF86Config bc _________________________________________________________________ N'oubliez pas le chmod ug+x. 4. Initialisation de la borne Dans des conditions normales (en tant que borne donc), Linux devrait démarrer directement en mode borne. En cas de coupure de courant, de redémarrage accidentel ou planifié, vous devez donc configurer le système pour qu'il en soit ainsi. Nous avons choisi le niveau de fonctionnement 4, d'habitude inutilisé, pour notre borne. Voici les modifications apportées au fichier /etc/inittab : 4.1 Modification du fichier /etc/inittab _________________________________________________________________ # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - Kiosk mode # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:4:initdefault: _________________________________________________________________ 4.2 Script /etc/rc.d/rc.4/S99xkiosk Afin de démarrer la borne après tout le reste -- dans notre cas Apache et MySQL --, créez un fichier /etc/rc.d/rc.4/S99xkiosk : _________________________________________________________________ #!/bin/bash # # S99xkiosk Initialization de la borne en runlevel 4 # # Author: Gene Wilburn # # Affichage d'un message dans la console echo "Starting up the X Window Kiosk ... " if [ -f /.netscape/lock] ; then rm /.netscape/lock fi # Enregistrement de l'activite de X echo %%%%%%%%%%%%%Reboot%%%%%%%%%% >> /var/log/xlog /root/xkiosk # On ne devrait se retrouver ici qu'apres un Ctrl-Backspace /sbin/shutdown -r now # Fini _________________________________________________________________ Une fois ce fichier créé (et chmodifié) et inittab modifié, Linux démarrera directement en mode borne. Telnet et ftp sont désactivés. On installe ssh pour la maintenance de la borne à distance avec ssh et scp. 4.3 Démarrage normal de la console On souhaite parfois, notamment lors des tests, disposer d'une console où travailler comme en niveau d'init 3. Pour ce faire, appuyez sur _Ctrl-Backspace_ afin de redémarrer le système. Lorsque l'invite LILO: apparaît, tapez : LILO: linux init 3 et enregistrez-vous comme d'habitude. 5. Considérations diverses 5.1 Économiseurs d'écran Selon le déploiement prévu de la borne, on ne désire pas nécessairement que l'économiseur affiche toutes ses images disponibles par défaut. Pour la galerie sur la biodiversité, nous ne voulions que les images fractales animées qui évoquaient les sciences de la vie. Après un test de plusieurs économiseurs, nous avons décidé d'utiliser deux thèmes aléatoirement : _coral_ et _forest_. On restreint xscreensaver avec un fichier .xscreensaver dans le système de fichier racine (/) qui contient les directives suivantes : /.xscreensaver _________________________________________________________________ programs: \ coral -root \n\ forest -root \n _________________________________________________________________ 5.2 Fichiers de son Notre borne est munie d'une carte Sound Blaster AWE64 et de haut parleurs. Nous avons choisi cette carte pour son bon fonctionnement sous Linux. La base de données MySQL qui pilote la galerie sur la biodiversité contient une collection de fichiers-sons que le visiteur peut écouter. Parmi ceux-ci figure un quiz des chants d'oiseaux. Netscape sous Linux reste primaire sur une borne interactive pour certains aspects multimédias par rapport à ce dont on dispose avec Windows ou sur un Mac. Pour activer le son, nous avons déployé un plugin Netscape écrit par Caolan McNamara ( http://skynet.csn.ul.ie/~caolan/docs/XSwallow.html) nommé Xswallow. Tous les plugins son que nous avons testés ouvrent une page web distincte lorsque le fichier est joué (à moins que le fichier-son ne soit incorporé). Parmi tous les candidats, Xswallow fonctionne le mieux et dispose de la page d'affichage la plus propre. Bien que la présence d'une page supplémentaire manque d'élégance, nous avons décidé que la stabilité de Linux valait largement quelques clics pour retourner à la page précédente. Autre problème : lorsqu'un son est demandé, la page d'Xswallow affiche ``Click to Abort Swallow of type audio/basic''. En cas de clic, on se retrouve avec une page blanche. J'ai légèrement modifié le code source du fichier UnixShell.c d'origine : char *text2 = "Click to Abort Swallow"; est devenu char *text2 = "Click BACK Button to return from playing file"; La phrase ``of type audio/basic'' est due à Netscape et non à Xswallow. Après recompilation, j'ai ajouté le plugin à Netscape. Un dernier mot concernant les fichiers-sons : nous avons reçu à l'origine un mélange de fichiers .au et .wav. L'expérience a plaidé en faveur des .au en terme de stabilité et nous avons converti tous les fichiers à ce format. 5.3 Billes de pointage Ne disposant pas d'un budget suffisant pour l'achat d'écrans tactiles, nous avons retenu une boule de pointage pour l'orientation dans la borne (pas de clavier). Notre collègue Andy Rauer du Ontario Science Center à Toronto nous a donné des informations sur l'emploi de composants industriels disponibles chez Happ Controls Inc., Elk Grove Village, Illinois http://www.happcontrols.com/ (check under their Interactives####### à traduire, non ? #### section). ####### Nous avions besoin de désactiver l'action de l'équivalent du bouton droit de la souris qui déclenche l'apparition de fenêtres de dialogue avec Netscape Navigator. En construisant notre propre dispositif, nous avons été capables d'effectuer exactement les connexions voulues : un contrôle avec deux boutons équivalents au clic gauche. Les boutons se trouvent des deux côtés du dispositif et sont adaptés aussi bien aux gauchers qu'aux droitiers. Les personnes chargées de la conception des bornes ont inclus nos éléments tels quels. Pour notre borne, nous avons choisi les composants suivants (qui sont capables de résister aux termites) : * une boule de 2 fois 1/4 de pouce Atari (rouge) ; * un kit d'interfaçage IBM (compatible avec le protocole souris série Microsoft) ; * des boutons poussoirs lumineux (rouges). Nous avons acheté un boîtier Hammond Manufacturing en plastique (cat no. 1591ABK) chez un revendeur d'électronique local pour héberger l'ensemble. En prévision de bornes supplémentaires et de défaillances, nous avons commandé quatre ensembles supplémentaires. 5.4 Création et mise au point des pages HTML pour les bornes Dans le meilleur des mondes possibles (?), vous partiriez de zéro pour réaliser les pages HTML de votre borne. En gardant à l'esprit que la consultation d'une borne interactive diffère de celle de pages sur le web depuis une station individuelle, les indications suivantes vous donneront quelques points de repère : * les passages textuels doivent rester courts et employer de grandes polices ; * évitez les écrans qui nécessitent un ascenseur ; * mettez des images colorées de grande taille sur chaque page ; * rendez disponibles des balises de navigation entre les pages lorsque c'est possible ; * interdisez-vous le clavier : tout se fait en cliquant ; * limitez-vous à des échantillons sonores de courte durée, inclus si possible dans la page ; * le style doit être concis et énergique, vous disserterez ailleurs. Malheureusement, vous hériterez parfois de pages conçues dans une optique davantage web que borne. Dans ce cas, une reprise complète des pages risque de consommer trop de temps. Lors du développement de pages web, suivez les instructions suivantes : * ôtez tous les HREF externes, notamment les MAILTO ; * supprimez l'inutile, les logos, etc. des pages ; * vérifiez la taille des polices et augmentez-la au besoin ; * éliminez les gifs animés sans rapport direct avec la page en cours de consultation ; * éliminez purement et simplement les gifs animés ; * simplifiez l'organisation de chaque page ; * jetez un oeil du côté des SSI pour faciliter l'orientation ou fournir un cadre uniforme aux pages. 6. Projets Nos tentatives précédentes à base d'ordinateurs sous Windows(R) n'avaient pas été satisfaisantes. Les unités se révélaient instables et se bloquaient fréquemment. L'utilisation de Linux a permis l'émergence d'une borne fiable et robuste dans un environnement ouvert au public et nous a incité à entrevoir d'autres possibilités. 6.1 Bornes distantes Parmi les objectifs futurs, figure le déploiement de bornes à travers Toronto. Les gens pourraient consulter des informations sur le site et, nous l'espérons, être suffisamment intéressés pour aller finalement consulter le site ROM lui-même. Nous envisageons des lieux tels les conventions, les expositions, les galeries commerciales, ou tout événement particulier. Nous songeons aussi à des sites plus éloignés comme les bibliothèques publiques. Pour ce projet, nous pensons avoir recours à des systèmes Linux munis de modems qui contacteraient le site-mère pour mettre à jour quotidiennement les fichiers et qui pourraient être appelés pour des opérations de maintenance. 6.2 Écrans tactiles Quand le prix de cette technique aura diminué, nous souhaitons essayer des écrans plats pour les bornes. L'emploi d'écrans plats et de pc de petite taille devrait permettre la mise en oeuvre de bornes très discrètes. 6.3 Claviers Nous serons sûrement amenés à déployer des bornes munies de claviers. Un nouveau défi en matière d'inhibition de combinaisons de touches ! Si quelqu'un souhaite apporter une contribution à ce sujet ou à tout autre aspect du Kiosk-HOWTO, qu'il m'envoie un courrier électronique à genew@rom.on.ca ou à njo@interlog.com. 6.4 Collaboration Toute collaboration avec d'autres développeurs de bornes pour étendre le Kiosk-HOWTO sera la bienvenue. Comme on dit avec Perl : ``Il existe plusieurs façons de faire.''