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.
Selecione B1 Desktop/CLI.
Selecione 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.makerhero.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.makerhero.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.makerhero.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.
Boa tarde,
Gostaria de saber o que precisar acrescentar ou mudar para que a pagina do chromium troque para outra pagina a cada 50 segundos, e que fique trocando entre duas paginas a cada 50 segundos.
Olá.
Favor entrar em contato conosco no [email protected].
Att.
Vitor Mattos.
MakerHero.
Olá, baixei a versão ‘Release date: February 21st 2023’ do Rasbian e identifiquei que esta versão vem com ‘nosuid’ para o diretório /home, de maneira que, se seguirmos o tutorial como está, não funciona.
A solução mais simples não é recomendada do ponto de vista da segurança (habilitar suid no home) então, apenas salvei o arquivo em /usr/local/bin e alterei os arquivos para tratarem o script neste local. Funcionou corretamente.
Se alguém já tiver seguido todo o tutorial e chegou no mesmo problema, os passos para adaptação são os seguintes:
1) Mova o arquivo para /usr/local/bin/:
mv kiosk.sh /usr/local/bin
2) Altere a linha “ExecStart” do arquivo de inicialização do serviço:
sudo vim.tiny /lib/systemd/system/kiosk.service
ExecStart=/bin/bash /usr/local/bin/kiosk.sh
3) Verifique se o arquivo abaixo também está correto quanto ao caminho do ‘kiosk.sh’ e nomes de usuário e grupo:
sudo vim.tiny /etc/systemd/system/graphical.target.wants/kiosk.service
4)Atualize o sistema referente à alteração:
sudo systemctl daemon-reload
5)Verifique se o servido ficou habilitado:
sudo systemctl is-enabled kiosk.service
6) Caso não esteja, habilite:
sudo systemctl enable kiosk.service
7)Reinicie o serviço para testar:
sudo systemctl status kiosk.service
8) Reinicie o Raspberry.
Se precisar parar o serviço em algum momento, utilize:
sudo systemctl stop kiosk.service
Saudações makers! ;D
Bom dia Jorge.
Muito obrigado por essa solução!
Att.
Vitor Mattos.
Suporte Técnico Maker Hero.
Configurei meu raspberry seguindo o tutorial acima, ocorre que minha tela precisaria enviar também notificação sonora, e não encontrei formas de conseguir ativar a função. Ao sair do modo kiosk, o navegador envia a notificar sonora sem problemas. Alguém já teve esse problema e encontrou alguma solução?
Olá Bruno,
Sobre isso, não saberei te informar ao certo.
Abraços,
Salvador de vidas este tutorial, muito obrigado mesmo!
Meu Rasp estar com 2 telas conectadas, tem como programar para projetar duas páginas do chromium, uma em cada tela??? Preciso muito deste HELP!!!
Olá Charles,
Acredito que este link aqui (em inglês) vai te ajudar: https://stackoverflow.com/questions/73618107/dual-screen-kiosk-leaves-second-screen-blank-raspberry-pi-4
Veja que o código falta o & como você respondeu no outro comentário e era exatamente a dúvida da pessoa nesse post.
Abraços!
Vinícius – Equipe MakerHero
Olá,
A abertura do chromium e paginas funcionou corretamente, porém o while não esta funcionando para trocar de páginas, colocando da mesma forma que o tutorial, consegue ajudar?
Estou utilizando o Raspberry 4
Tente colocar o “&” no final da linha abaixo:
/usr/bin/chromium-browser –noerrdialogs –disable-infobars –kiosk https://www.makerhero.com https://www.raspberrypi.org &
Estava com este mesmo problema e era porque tinha esquecido de colocar o E comercial no final do comando
Olá.
Favor entrar em contato conosco no [email protected].
Att.
Vitor Mattos.
MakerHero.
Olá, anted de mais nada parabenizo o autor deste tutorial, muito bom!
Gostaria de tirar uma dúvida, se é possível. Como DESATIVAR toda e qualquer outra função que não seja a de somente poder utilizar o Chromium? Basicamente preciso restringir o usuário a ter acesso somente de navegar na web e nada mais. Seria possível?
Olá Wagner,
Sem acesso a mais nada acho um pouco impraticável, mas talvez esse tutorial aqui (em inglês) esteja um pouco mais na linha do que precisas: https://die-antwort.eu/techblog/2017-12-setup-raspberry-pi-for-kiosk-mode/
Abraços!
Vinícius – Equipe MakerHero
Olá, sabe me informar se tem como configurar pra ficar em tela cheia ?
Olá Gabriel,
Com essas configurações o Chromium deve ficar em tela cheia já.
Abraços!
Vinícius – Equipe MakerHero
Quais configurações ?
As que estão no post para compor o script.
Abraços!
Vinícius – Equipe MakerHero
Olá, muito bom o tutorial, obrigado! Funcionou ok, como faço para deixar as setas de navegação ativas ?
Olá Caic,
No caso, as setas que queres deixar ativas são as de avançar e voltar?
Abraços!
Vinícius – Equipe MakerHero
Olá Vinicius!
Tenho esta mesma dúvida de como deixar ativas as setas de avançar e volta, poderia me ajudar?
Olá!
Encontrei este link aqui: https://github.com/jareware/chilipie-kiosk
Com esse aplicativo aparenta ser possível manter os botões de avançar e retroceder.
Abraços!
Vinícius – Equipe MakerHero
Olá, muito bom o tutorial, obrigado! Funcionou ok, mas na inicialização aparece a área de trabalho do raspberry por alguns segundos até que entre no navegador, teria como bloquear a interface do raspberry e somente mostrar quando o navegador estiver pronto?
Maicon,
Neste caso não há opção.
Abraços!
Diogo – Equipe MakerHero
Olá tudo bem , muito bom o tutorial!!
Gostaria de fazer uma coisa diferente, existe uma forma de eu abrir duas guias separadas do chrome automaticamente e que elas fiquem em meia tela ( igual quando aperta windows seta). Pois preciso colocar duas imagens de duas cameras em dois links diferentes, mas preciso que fique em meia tela. É possível faze esse processo dizendo ao raspian em limitando o chrome em quais pixels será delimitado?
Obrigado
Sensacional, Parabéns..
Me ajudou muito.
Uma dúvida, quando acaba a energia, o raspberry desliga e quando a energia volta, ele não inicia (porque a TV tá desligada), tenho que ligar a tv e depois reiniciar o raspberry, existe alguma forma de fazer ele iniciar (mesmo que eu não tenha vídeo)?
Grato
Parabéns man….
Funciona certinho…
Perfeito!
Parabéns pelo tutorial.
de vez em quando aparece uma janela do crhomium e refere que não é possivel actualizar.
como retirar essa janela
João,
Quando for dar os parâmetros ao Chromium, adicione este parâmetro: –check-for-update-interval=31536000 \
Abraços!
Diogo – Equipe MakerHero
Gostaria de saber como faço para reverter? Queria acessar o terminal mas tentei tudo quanto é atalho e não rolou!
A configuração funcionou parcialmente.
O raspberry inicia no modo quiosque, mas depois de um tempo ele desliga, precisa mexer no mouse para acender a tela.
Alguma sugestão?
Danilo,
Você pode tentar desativar essa função com o comando: setterm -powersave off -blank
Isso vai fazer com que nunca desative a tela. Todavia, para deixar permanente, você precisa adicionar isso no .bashrc
Abraços!
Diogo – Equipe MakerHero
Estou utilizando para exibir somente um site, funciona perfeitamente.
Depois de um tempo o sistema ligado, surge uma tela informando que deve ser atualizado o chrome, como posso fazer para que esta tela nao apareça?
Olá. Primeiramente gostaria de parabenizar pelo tutorial. muito bom e funciona.
Não tenho muito domínio, mas meu quiosque está rodando com um painel de chamada de fila, só que não consigo fazê-lo chamar o audio. no chromium normal ele executa sem problema.
Como faço, por favor, para que ele possa sair audio no modo kiosk?
Você encontrou solução para o envio de audio em modo kiosk?
Olá.
Depois de configurar em modo quiosque, como posso colocar um determinado programa no ecran para poder executá-lo apenas com o “enter” do teclado?
Rosana e se quisermos que no autorun esteja um ficheiro do libreoffice do Impress por exemplo. Ou seja, queremos que o impress seja aberto em fullscreen no raspeberry pi4, como fazer? Há pouca informação sobre o assunto 🙁
Olá a todos!
Eu segui todos os passos deste tutorial, diga-se de passagem muito bom o conteúdo, porém todas as vezes que inicializo a Raspberry aparece uma mensagem perguntando sobre restaurar a sessão anterior do Chromium.
Gostaria de saber se tem como resolver isso e qual é a forma de resolução.
Obrigado pela ajuda.
Ola, como faço para iniciar ja em modo Quiosque, sem que eu der o comando: sudo systemctl start kiosk.service ?
Boa tarde!
primeiro parabens! muito bom!
Aqui no meu ficou certo, mas coloquei mais paginas para abrir e so esta abrindo a primeira URL.
Coloquei o espaco e tudo mais preciso colocar algo mais?
Estava Faltando o ” & ” bi final, agora esta mudando. Mas a minha pagina pede login e senha para se logar, só ai depois ela entra, tem como se logar automático?
Olá Leonardo,
Já passei por uma situação parecida com a sua, onde a página solicitava login e senha para logar.
O que fiz foi criar um script usando o xdotool, para que fizesse o login. Deu super certo!
Abraço!
Rosana – Equipe MakerHero
Estou muito empolgado com a possibilidade de ensinar conceitos básicos de programação e eletrônica aos meus dois filhos Leo e Murilo (11 e 12 anos, respectivamente). Continuem ensinando e postando pessoal !!! Obrigado pelas valiosas contribuições. Comprei 3 kits básicos hoje para iniciar a jornada por aqui !
Mauro,
Ficas extremamente felizes e extasiados em saber que nosso conteúdo consegue ajudar de forma tão abrangente não importando as idades e pessoas! Obrigado, de verdade!
Abraços!
Diogo – Equipe MakerHero
Artigo top, parabéns!
Paulo,
Que bom que curtiu!
Abraços!
Diogo – Equipe MakerHero
Olá, é possível utilizar o modo quiosque para exibir imagens invés de urls específicas?
Gabriela,
Com esse script não, você teria que adaptá-lo para suas necessidades.
Abraços!
Diogo – Equipe MakerHero
Olá Gabriela, você pode instalar um servidor web no Raspberry e hospedar páginas em html com as imagens que deseja.
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á.
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 MakerHero
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
Alex,
Que bom que resolveu!
Abraços!
Diogo – Equipe MakerHero
Criei todo dos arquivos corretamente, até o processo de dar um enable no serviço deu certo, quanto mando o start nada acontece
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 MakerHero
Excelente artigo! Estava a algum tempo com dificuldades em relação a esse assunto, mas seguindo seu tutorial funcionou perfeitamente. Parabéns!
Olá, Marcelo!
Que bom que te ajudou!
Abraços!
Diogo – Equipe MakerHero
Ótimo POST! Parabéns!
Fiz o procedimento e deu tudo certo!! Vocês estão de Parabéns!
Obrigado!!
Olá, Marcos!
Obrigado, e esperamos que continue sempre explorando!
Abraços!
Diogo – Equipe MakerHero
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
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 MakerHero
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?
Quando você usa o comando “sudo systemctl enable kiosk.service” qual mensagem aparece?
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?
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 MakerHero
Bom dia
Ficou perfeito. Muito obrigado…
Olá Edson!
Fico feliz que pude te ajudar!
Abraço!
Rosana – Equipe MakerHero
Artigo muito bom!! Parabéns!
Olá,
Obrigada Pedro! Teus artigos também são ótimos 😀
Abraço!
Rosana – Equipe MakerHero