Modo Quiosque com Raspberry Pi – Configuração 2

O modo quiosque (kiosk mode) é um recurso que permite que apenas um aplicativo seja executado dentro de um sistema operacional, limitando a navegação do usuário por uma página web específica.

No modo quiosque a página é vista em tela cheia, não é possível acessar o menu do browser ou mudar a URL pela barra de endereços. Também não é possível clicar com o botão direito do mouse e usar o menu. Ou seja, o usuário tem a navegação limitada a uma página específica e só consegue ir para outras páginas caso a página que ele esteja usando possua um link que o direcione para tal.

O modo quiosque, por exemplo, pode bloquear um aplicativo de ponto de venda para que evitar que os clientes saiam do aplicativo e naveguem em outros aplicativos ou fechem o mesmo. Já em um ambiente de negócios, o modo quiosque pode fornecer uma aplicação para execução uma tarefa específica, melhorando a eficiência durante a execução da tarefa.

Nesse primeiro post será abordada a configuração do Modo Quiosque. No próximo post vamos mostrar como acessar remotamente seu Raspberry Pi Quiosque.

Instalação do Raspbian

Pra configurar Raspberry Pi como Modo Quiosque é necessário ter um sistema operacional já instalado. Nesse tutorial foi usado o Raspbian e o passo-a-passo da instalação do mesmo pode ser vista aqui. O download do sistema operacional usado nesse tutorial pode ser feito no site oficial da Raspberry Pi Foundation.

Preparando o Raspbian para o Modo Quiosque

Abra o Terminal (crtl+alt+t).

Antes de tudo é recomendável remover alguns pacotes que não são necessários no seu Raspberry Pi Quiosque. A remoção desses pacotes liberará espaço na memória e reduzirá o número de pacotes que serão atualizados sempre que seu Raspberry Pi for atualizado. Para isso, basta executar os seguintes comandos:

sudo apt-get purge wolfram-engine scratch scratch2 nuscratch sonic-pi idle3 -y
sudo apt-get purge smartsim java-common minecraft-pi libreoffice* -y

Agora que os pacotes foram removidos, é necessário executar os comandos de limpeza:

sudo apt-get clean
sudo apt-get autoremove -y

Depois de fazer a limpeza, é necessário verificar se o Raspbian está atualizado. Para isso, digite os seguintes comandos:

sudo apt-get update
sudo apt-get upgrade

Agora precisamos instalar o xdotool e o unclutter. O xdotool permite que o nosso script faça o pressionamento das teclas sem que ninguém esteja usando o dispositivo. E o unclutter permite esconder o mouse da tela.

sudo apt-get install xdotool unclutter sed

Para que não seja necessário fazer o login toda vez que seu Raspberry Pi Quiosque for iniciado, vamos habilitar a função autologin. Digite o seguinte comando:

sudo raspi-config

Selecione 3 Boot Options.

Autologin Modo Quiosque (3 Boot Options)

Selecione B1 Desktop/CLI.

Autologin Modo Quiosque (B1 Desktop/CLI)

Selecione B4 Desktop Autologin.

Autologin Modo Quiosque (B4 Desktop Autologin)

Agora o Raspbian está preparado para o Modo Quiosque!

Escrevendo o script para o Raspberry Pi Quiosque

Agora precisamos escrever o script para o Raspberry Pi Quiosque. Esse script será responsável por iniciar o Chromium e simular o acionamento das teclas. Para criar o script execute o seguinte comando:

nano /home/pi/kiosk.sh

Dentro desse arquivo, digite as linhas de código que seguem. Vamos explicar cada uma delas, para que você possa adaptar conforme sua necessidade. Essa primeira linha define como o interpretador de comandos vai executar o arquivo.

#!/bin/bash

Essa três linhas impedem que o gerenciador de energia desligue ou apague a tela.

xset s noblank
xset s off
xset -dpms

Essa linha executa o programa unclutter, anteriormente instalado. Essa aplicação esconde o mouse da tela sempre que o mesmo estiver ocioso por mais de 0,5 segundos. Você pode ajustar a tempo conforme deseja ou, se deseja esconder o mouse imediatamente, remova o -idle 0.5 do comando.

unclutter -idle 0.5 -root &

Essas duas linhas de script são responsáveis por limpar qualquer mensagem que aparecer na barra de aviso do Chromium.

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

Esta linha entrega ao Chromium nossos parâmetros.

/usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk https://www.filipeflop.com https://www.raspberrypi.org

Vamos passar por cada um desses parâmetros para que você saiba para que servem e como modificá-los. Esse comando informa ao Chromium que ele não deve exibir nenhuma mensagem de erro para o usuário final.

--noerrdialogs

Esse comando impede que o Chromium exiba sua barra de informações para o usuário final.

--disable-infobars

Essa opção coloca o Chromium em modo quiosque, fazendo assim que o acesso fique limitado.

--kiosk

Estas são as duas páginas web que o script abrirá, cada uma será aberta em uma nova guia. Você pode adicionar outras páginas web, basta separar cada uma delas com um espaço.

https://www.filipeflop.com https://www.raspberrypi.org

Essas linhas repetem o comando usando xdotool, também instalado anteriormente. No caso o loop imita o pressionamento das teclas ctrl+tab, fazendo o Chromium mudar para a próxima guia. Depois que o xdotool executa o pressionamento das teclas, ele coloca o loop em suspensão por 20 segundos. Você você alterar o tempo de espera se achar necessário.

while true; do
xdotool keydown ctrl+Tab; xdotool keyup ctrl+Tab;
sleep 20
done

No final, você terá um script parecido com esse:

#!/bin/bash

xset s noblank
xset s off
xset -dpms

unclutter -idle 0.5 -root &

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

/usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk https://www.filipeflop.com https://www.raspberrypi.org &

while true; do
xdotool keydown ctrl+Tab; xdotool keyup ctrl+Tab;
sleep 20
done

Salve o arquivo pressionando as teclas crtl+x, em seguida y e depois enter.

Iniciando o Raspberry Pi Quiosque

Para que o nosso Raspberry Pi Quiosque inicie na inicialização, precisaremos criar um arquivo de serviço executando o comando abaixo. Este arquivo de serviço informará ao sistema operacional qual arquivo queremos que seja executado e também  informará como queremos que a interface gráfica esteja disponível antes de iniciar o software.

sudo nano /lib/systemd/system/kiosk.service

Dentro do nosso arquivo de serviço de kiosk, insira as seguintes linhas de texto. Essas linhas definem nosso serviço de kiosk e também indicam que queremos executar nosso script kiosk.sh.

[Unit]
Description=Chromium Kiosk
Wants=graphical.target
After=graphical.target

[Service]
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/pi/.Xauthority
Type=simple
ExecStart=/bin/bash /home/pi/kiosk.sh
Restart=on-abort
User=pi
Group=pi

[Install]
WantedBy=graphical.target

Salve o arquivo pressionando as teclas crtl+x, em seguida y e depois enter. Agora que criamos o arquivo de serviço para o nosso Raspberry Pi Quiosque, podemos ativá-lo executando o seguinte comando:

sudo systemctl enable kiosk.service

Para iniciar o Modo Quiosque use o seguinte comando:

sudo systemctl start kiosk.service

Pronto, seu Raspberry Pi Quiosque está funcionando!

Caso você deseje parar o Modo Quiosque, abra o terminal (crtl+alt+t) e execute o seguinte comando:

sudo systemctl stop kiosk.service

E se quiser desabilitar o Modo Quiosque, execute o comando a seguir:

sudo systemctl disable kiosk.service

São várias as aplicações do Modo Quiosque. No próximo post iremos abordar quais as maneiras de acessar o Raspberry Pi Quiosque remotamente.

Gostou? Ajude nosso blog a ficar cada vez melhor deixando seu comentário logo abaixo. E se quiser postar seu projeto, acesse nosso fórum.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2 Comentários

  1. Artigo muito bom!! Parabéns!

    1. Olá,

      Obrigada Pedro! Teus artigos também são ótimos 😀

      Abraço!
      Rosana – Equipe FilipeFlop