{"id":1723,"date":"2023-10-11T18:31:56","date_gmt":"2023-10-11T16:31:56","guid":{"rendered":"https:\/\/pila.fr\/wordpress\/?p=1723"},"modified":"2023-10-11T18:31:57","modified_gmt":"2023-10-11T16:31:57","slug":"une-application-kiosk-wayland-avec-weston","status":"publish","type":"post","link":"https:\/\/pila.fr\/wordpress\/archives\/1723","title":{"rendered":"Une application Kiosk Wayland, avec Weston"},"content":{"rendered":"\n<p>Cet article contient une synth\u00e8se de la proc\u00e9dure \u00e0 suivre pour ex\u00e9cuter une application en mode Kiosk sous Debian, en utilisant le compositeur Weston.<\/p>\n\n\n\n<p>Il existe le compositeur \u00ab\u00a0cage\u00a0\u00bb d\u00e9di\u00e9 \u00e0 ce r\u00f4le, mais son manque de flexibilit\u00e9 est vite limitant (il est notamment impossible de d\u00e9sactiver une sortie video).<\/p>\n\n\n\n<p>Le compositeur ainsi que l&rsquo;application sont ex\u00e9cut\u00e9s par un utilisateur \u00ab\u00a0kiosk\u00a0\u00bb avec des droits restreints, \u00e9vitant de compromettre toute la s\u00e9curit\u00e9 du syst\u00e8me en cas de crash du compositeur \/ retour au shell<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Installer weston et seatd<\/h2>\n\n\n\n<p>seatd arbitre l&rsquo;acc\u00e8s au mat\u00e9riel d&rsquo;entr\u00e9e \/ sortie ( \u00e9cran \/ clavier + souris ), et est n\u00e9cessaire \u00e0 l&rsquo;utilisation de weston.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># apt install tmux weston seatd  <\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2. Fichier de configuration weston.ini<\/h2>\n\n\n\n<p>On cr\u00e9\u00e9 le fichier weston.ini, que l&rsquo;on place dans le r\u00e9pertoire personnel de l&rsquo;utilisateur \u00ab\u00a0kiosk\u00a0\u00bb , avec pour contenu suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;core]\nbackend=drm-backend.so\nidle-time=0\n\n&#91;output]\nname=HDMI-A-1\nmode=1920x1080\ntransform=rotate-90\n\n&#91;output]\nname=eDP-1\nmode=off\n<\/code><\/pre>\n\n\n\n<p>Le bloc [core] sp\u00e9cifie l&rsquo;utilisation du pilote \u00ab\u00a0drm\u00a0\u00bb, qui prend directement la main sur la carte graphique sans passer par un autre compositeur, et d\u00e9sactive l&rsquo;\u00e9cran de veille.<\/p>\n\n\n\n<p>Les blocs [output] configurent les diff\u00e9rentes sorties video. Dans ce cas l&rsquo;une est d\u00e9sactiv\u00e9e, tandis que l&rsquo;autre est en mode portrait. Le nom des sorties provient du r\u00e9pertoire \/sys\/class\/drm.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Script de lancement<\/h2>\n\n\n\n<p>Cr\u00e9er le script start_kiosk.sh dans le r\u00e9pertoire personnel de l&rsquo;utilisateur \u00ab\u00a0kiosk\u00a0\u00bb. Son contenu est le suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\nweston --config \/home\/kiosk\/weston.ini &amp;\nsleep 5s # could be less\nexport WAYLAND_DISPLAY=wayland-1\nexport DISPLAY=:1\nexec \/home\/kiosk\/kiosk_app --platform wayland 2>log_kiosk.txt<\/code><\/pre>\n\n\n\n<p>Modifier la commande de lancement pour correspondre au chemin du fichier weston.ini<\/p>\n\n\n\n<p>La ligne \u00ab\u00a0sleep 5s\u00a0\u00bb pourrait \u00eatre modifi\u00e9e pour attendre une notification de d\u00e9marrage de weston. Des solutions existent utilisant systemd, mais je n&rsquo;ai pas trouv\u00e9 de solution simple adapt\u00e9e \u00e0 mon cas.<\/p>\n\n\n\n<p>Dans mon cas, j&rsquo;ex\u00e9cute une application Qt nomm\u00e9e \u00ab\u00a0kiosk_app\u00a0\u00bb, pour Qt il est n\u00e9cessaire de sp\u00e9cifier &#8211;platform wayland, sans quoi l&rsquo;application ne d\u00e9marre pas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Login automatique de l&rsquo;utilisateur \u00ab\u00a0kiosk\u00a0\u00bb<\/h2>\n\n\n\n<p>Cr\u00e9\u00e9 le fichier \/etc\/systemd\/system\/getty@tty1.service.d\/autologin.conf avec pour contenu<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Service]\nExecStart=\nExecStart=-\/sbin\/agetty -o '-p -f -- \\\\u' --noclear -a kiosk %I $TERM\nType=simple\nEnvironment=XDG_SESSION_TYPE=wayland<\/code><\/pre>\n\n\n\n<p>Il est n\u00e9cessaire d&rsquo;utiliser le tty1 plut\u00f4t que le traditionnel tty7 pour l&rsquo;interface graphique, car le changement de terminal automatique n&rsquo;est pas fiable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Conclusion<\/h2>\n\n\n\n<p>Cette approche permet le lancement d&rsquo;une application en mode kiosk, sans aucun bureau traditionnel install\u00e9. L&rsquo;utilisation de Wayland am\u00e9liore grandement la fluidit\u00e9, et garanti notamment l&rsquo;absence de \u00ab\u00a0tearing\u00a0\u00bb (affichage partiel de 2 images cons\u00e9cutives) qui est tr\u00e8s visible voire d\u00e9rangeant lors de la lecture de video avec X11.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article contient une synth\u00e8se de la proc\u00e9dure \u00e0 suivre pour ex\u00e9cuter une application en mode Kiosk sous Debian, en utilisant le compositeur Weston. Il existe le compositeur \u00ab\u00a0cage\u00a0\u00bb d\u00e9di\u00e9 \u00e0 ce r\u00f4le, mais son manque de flexibilit\u00e9 est vite limitant (il est notamment impossible de d\u00e9sactiver une sortie video). Le compositeur ainsi que l&rsquo;application &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/pila.fr\/wordpress\/archives\/1723\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69],"tags":[189,188],"class_list":["post-1723","post","type-post","status-publish","format-standard","hentry","category-linux-2","tag-kiosk","tag-wayland","item-wrap"],"_links":{"self":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/1723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=1723"}],"version-history":[{"count":2,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/1723\/revisions"}],"predecessor-version":[{"id":1725,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/1723\/revisions\/1725"}],"wp:attachment":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=1723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/categories?post=1723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/tags?post=1723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}