No artigo anterior vimos como colocar o Epiphany em modo kioski, trocando também o gerenciador de janelas padrão, LXDE, pelo matchbox-window-manager. Dessa vez vamos manter o LXDE e focar em colocar o Chromium em modo kioski.
Table of Contents
Chromium browser
O Chromium é um navegador criado pelo Google. Na documentação foi descrito que “Chromium” seria o nome do projeto, enquanto o produto final seria o Chrome. Daí temos o navegador google-chrome para arquiteturas x86, mas utilizando o código original, acabamos tendo forks com o nome Chromium mesmo, como é no caso do Raspberry.
O Chromium, assim como o Epiphany, conta com o mesmo plugin flash para suprir a necessidade nos casos de servidores que ainda o utilizam.
Autostart do LXDE
Utilizando o LXDE, uma forma simples de iniciar o browser é através do arquivo /home/pi/.config/lxsession/LXDE-pi/autostart. Mas invés de passar a chamada diretamente para ele, fiz um script onde posso adicionar mais interação, sendo necessário em alguns casos.
Nesse arquivo adicionei a linha:
@/home/pi/bin/browserStart.sh
Chromium em modo kioski
O Chromium tem alguns recursos extras que o difere da maioria dos browsers. Por conta disso, também não é o mais leve, mas pode ser necessário em casos específicos relacionados a compatibilidade.
Do mesmo modo que qualquer outro browser, quereremos evitar a escrita no SD, portanto precisamos redirecionar o cache do browser assim como fizemos no artigo anterior, apontando-o diretamente para o sistema de arquivos na memória RAM. Acontece que o Chromium tem parâmetros de linha de comando que nos permite definir tamanho de cache, diretório de cache e outras coisas mais. Assim sendo, o conteúdo do script de inicialização do browser ficou assim:
#!/bin/bash cp /home/pi/bin/Preferences /home/pi/.config/chromium/Default/ /usr/bin/chromium-browser --noerordialogs --disable-session-crashed-bubble --disable-infobars --disk-cache-dir=/dev/shm/chromium --disk-cache-size=400000000 --kiosk https://url.do.srv.com.br sleep 5 WID=$(xdotool search --onlyvisible --class chromium|head -1) xdotool windowactivate ${WID} key Alt+F11 sleep 1 key Alt+F11 WID=$(xdotool search --onlyvisible --class chromium|head -1) xdotool windowactivate ${WID} sleep 1 key Ctrl+F5 xdotool windowactivate ${WID} sleep 1 key Alt+F5
É, no Chromium foi dureza resolver um problema que provavelmente a maioria das pessoas não terá, mas a URL começa a ser carregada antes mesmo do browser renderizar a janela, e isso é péssimo. Se houver um javascript que renderiza algo dependendo do tamanho da janela, a renderização ficará esquisita, por isso dei umas “chacoalhadas” no browser para as coisas irem para seu devido lugar. Deixei no código de exemplo porque pode ser útil para mais alguém.
Uma outra forma de resolver um problema de renderização é abrir a URL após o browser ser devidamente carregado. Para isso, o xdotool também pode fazer o preenchimento do endereço que deve ser carregado, mas preferi assim mesmo.
Desabilitar restore session no Chromium
O Chromium tem outra característica que acaba sendo um problema. Quando o sistema ou a interface gráfica é interrompida abruptamente, uma caixa de diálogo de restaurar sessão é aberta. O problema é que quando se está em modo kioski tudo que se quer é que a URL específica abra sem delongas. Em um email trocado com os desenvolvedores, vi a recusa de um código que permitiria desabilitar esse diálogo por linha de comando para quem usar o modo kioski. Pela rispidez do desenvolvedor, decidi abandonar o browser, e foi a partir daí que fiz testes com diversos outros. Enfim, há quem o use por opção, por isso escrevi esse artigo.
Essa pode ser a solução para a questão do restaurador de sessão. Funcionou em alguns, mas não em outros Raspberry.
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences
Pelo browser tem uma opção que hipoteticamente deveria funcionar:
chrome://flags/#infinite-session-restore
Autoplay no Chromium
Há ainda mais um problema inconveniente; o autoplay precisa ser configurado. Abra o browser e digite:
chrome://flags/#autoplay-policy
Troque a opção para No user Gesture.
“Se tudo der certo e nada der errado”, a imagem de destaque deve ser o resultado. Vamos para o próximo browser, no próximo artigo – e espero que não prefira (ou não precise) usar o Chromium em modo kioski.
Revisão: Ricardo Amaral de Andrade
Artigos relacionados
Expansor de IO PCF8575 e bitwise
Factory defaults na RPi Pico
Laboratório Maker 12: Analisador lógico com a RP Pico