Modo Quiosque com Raspberry Pi – Configuração 22

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 *

22 Comentários

  1. Artigo muito bom!! Parabéns!

    1. Olá,

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

      Abraço!
      Rosana – Equipe FilipeFlop

  2. Boa tarde,

    Efetuei o procedimento para demonstração de preços de produtos que estão em duas páginas HTML, mas as paginas não estão atualizando. Assim ele não muda os preços quando o HTML é atualizado na origem.

    Tem como fazer com que as páginas HTML também se atualizem?

    Edson Pereira da Silva
    1. Olá Edson,

      No script altere as seguinte linha
      xdotool keydown ctrl+Tab; xdotool keyup ctrl+Tab;
      para
      xdotool keydown ctrl+Tab; xdotool keydown ctrl+r; xdotool keyup ctrl+Tab; xdotool keyup ctrl+r;

      Abraço!
      Rosana – Equipe FilipeFlop

      1. Bom dia

        Ficou perfeito. Muito obrigado…

        Edson Pereira da Silva
        1. Olá Edson!

          Fico feliz que pude te ajudar!

          Abraço!
          Rosana – Equipe FilipeFlop

  3. Gostei muito parabéns, muito bom mesmo ja fiz os testes.
    Como seria para ligar o raspberry pi ele ele ja entrar no modo quiosque automático?
    Seria uma boa implementação, gostaria muito de saber.
    Abraço

    wislley toledo dos santos
    1. Olá,

      No final deste tutorial existem alguns comandos que você pode usar parar habilitar ou desabilitar o modo quiosque.
      Para que o modo quiosque inicie junto com a Raspberry, use o comando “sudo systemctl enable kiosk.service”. Depois, se reiniciar a Raspberry verá que o modo quiosque entra automaticamente.

      Abraço!
      Rosana – Equipe FilipeFlop

      1. Pior que ja fiz 2 vezes e mesmo assim não esta dando certo, não esta iniciando em modo kiosk, o que pode ser?

        wislley toledo dos santos
        1. Quando você usa o comando “sudo systemctl enable kiosk.service” qual mensagem aparece?

  4. Ótimo POST! Parabéns!
    Fiz o procedimento e deu tudo certo!! Vocês estão de Parabéns!

    Obrigado!!

    1. Olá, Marcos!

      Obrigado, e esperamos que continue sempre explorando!

      Abraços!
      Diogo – Equipe FilipeFlop

  5. Excelente artigo! Estava a algum tempo com dificuldades em relação a esse assunto, mas seguindo seu tutorial funcionou perfeitamente. Parabéns!

    1. Olá, Marcelo!

      Que bom que te ajudou!

      Abraços!
      Diogo – Equipe FilipeFlop

  6. Criei todo dos arquivos corretamente, até o processo de dar um enable no serviço deu certo, quanto mando o start nada acontece

    1. Olá, Fábio,

      Desative o serviço como descrito no final do post, depois, refaça o procedimento. Às vezes um simples passo passou despercebido.

      Abraços!
      Diogo – Equipe FilipeFlop

  7. Parabéns!!! Excelente post.
    No meu funcionou, porém tive que alterar o /usr/bin/chromium-browser para /usr/bin/chromium no arquivo kiosk.sh

    Adriano Ney Nascimento do Amaral
    1. Alex,

      Que bom que resolveu!

      Abraços!
      Diogo – Equipe FilipeFlop

  8. Muito bom! Funcionou legal.
    Porém, percebi que ao utilizar o alt+tab muda aplicação e Ctrl+shift+t ele abre um novo navegador sem o quiosque.
    Como faço para bloquear essas funções?
    Agradeço desde já.

    1. Taysa,

      A princípio você precisaria editar o arquivo “~/.config/openbox/lxde-rc.xml”
      Nele, basta procurar a linha com as teclas que você deseja bloquear e substituir por:
      false

      Faça um teste!

      Abraços!
      Diogo – Equipe FilipeFlop

  9. Olá, é possível utilizar o modo quiosque para exibir imagens invés de urls específicas?

    GABRIELA TRINDADE PIRES
    1. Gabriela,

      Com esse script não, você teria que adaptá-lo para suas necessidades.

      Abraços!
      Diogo – Equipe FilipeFlop