Manual
do
Maker
.
com
O Raspberry já é utilizado como servidor de mídia em diversos lugares; elevadores, restaurantes, shopping centers, consultórios médicos etc. Um dos casos de uso é a INRADIO (visite o site para compreender a solução), que oferece o serviço de rádio interna personalizada. Não é apenas colocar um Raspberry para tocar mp3, é um serviço de streaming, onde os royalties são devidamente pagos, as playlists são personalizáveis e utilidades públicas ou comerciais são tocados entre determinados intervalos de música, conforme a personalização efetuada na programação. O Raspberry é o computador da ponta e não interativo fisicamente (pois o player tem "controle remoto" online), mas uma das características é rodar o browser em modo kioski - que é quando o browser ocupa toda a tela, como se não houvesse outro componente de um desktop. Decidi escrever a respeito, mostrando como fazê-lo em diversos modos, com diversos browsers, começando por esse artigo com Epiphany em modo kioski.
O Epiphany não é o navegador padrão do Raspberry Pi OS (ou, "Raspbian", antes da mudança de nome), mas está disponível no repositório de pacotes, assim como outros que disporei em artigos posteriores. Ele é um navegador leve, consegue executar flash (utilizando uma biblioteca, por padrão) e aparentemente consome menos do que o Chromium (do qual também escreverei posteriormente). O Epiphany é um browser do Gnome. Para quem não conhece o Gnome, trata-se de um desktop manager, cujo acrônimo significa "GNU Network Object Model Environment", sendo GNU mais um acrônimo - dessa vez, recursivo - que significa "GNU is Not Unix". Surgiu em idos de 1999, fazendo frente ao KDE. Mas encurtando a história, o Epiphany é um browser mais recente. Saber que faz parte do projeto GNOME subentende-se que foi programado em GTK. Projetos da base do KDE são programados em Qt. Essas são as informações relevantes relacionadas aos desktops manager.
Não é por fazer parte de um desktop que seja fundamental rodá-lo sobre ele, mas os programas feitos em GTK tem dependências menos significativas do que os feito em Qt - particularmente, para o KDE, que acaba tendo uma base de dependências grande e por fim, pode consumir recursos demasiados do sistemas para executar tarefas menos complexas.
Por padrão a maioria dos browsers fazem cache no diretório ~/.config, que é o home do usuário (/home/pi). O problema é que se estivermos usando o browser em um serviço de streaming, gravar nesse diretório destruirá rapidamente o SD. Mas existem diferentes soluções para esse problema.
Antes de executarmos o Epiphany em modo kioski, devemos acautelarmo-nos em relação ao cache. Onde gravar se não no SD? No melhor lugar possível; diretamente na memória RAM. Para isso, utilizaremos o recurso do Linux chamado ramfs, ou, "sistema de arquivos em memória RAM". Já escrevi sobre a utilização do ramfs de outro modo, nesse artigo. Agora vamos utilizar um recurso transparente, que é o dispositivo de sistema /dev/shm. Aqui não temos limitação de uso, o que pode ser negativo. Esgotar o shm significa esgotar a RAM do sistema. Se no seu caso for necessário mais cuidado com essa questão, utilize o recurso desse artigo.
Para executar o Epiphany em modo kioski e apontar o cache diretamente para /dev/shm, faça um script com o seguinte conteúdo:
#!/bin/bash
mkdir /dev/shm/epiphany
XDG_CACHE_HOME=/dev/shm/epiphany WEBKIT_DISABLE_TBS=1 epiphany-browser -a --profile /home/pi/.config/ https://url.do.servidor.com.br &
Se deseja evitar o desligamento da tela (quase sempre é desejado), adicione isso ao início do script:
xset -dpms
xset s off
xset s noblank
Depois, torne o script executável e execute-o:
chmod 750 seuScript.sh
./seuScript.sh
Dependendo da IDE que estiver utilizando, pode ser necessário forçar o fullscreen. Nesse caso, temos duas opções.
Esse é um programa para interagir com o servidor gráfico através da linha de comando. Considerando que exclusivamente o browser estará aberto e portanto, a janela em foco, podemos colocar o Epiphany em modo kioski no LXDE adicionando uma linha após a chamada do browser. Para instalar o recurso, utilize:
sudo apt-get -f install xautomation
E em seu script, adicione essa linha ao final:
xte "key F11" -x:0
A segunda opção é utilizar o xdotool, do qual já escrevi a respeito algumas vezes, como nesse artigo. O que precisaremos fazer é pegar o ID da janela, tornar a janela ativa e então executar o Alt+F11. Se optar por essa ferramenta, adicione essas linhas ao final do script:
WID=`xdotool search --onlivisible --class epiphany|head -n1`
xdotool windowactivate ${WID} sleep 2 key Alt+F11
Por padrão, o Raspberry utiliza LXDE como interface gráfica. Ele é leve, mas já experimentei componentes da barra de tarefas matando o sistema, como o wicd. Se fez a configuração de rede pelo wpa_supplicant (para o wifi) ou pelo /etc/network/interfaces (para ethernet), então não há razão para utilizar o LXDE, uma vez que tudo o que se deseja é ver o browser ocupando toda a tela. Se tiver essa opção, instale o Raspbian (ou Raspberry Pi OS) mínimo, então proceda como a seguir:
sudo apt-get update
sudo apt-get install epiphany-browser matchbox-window-manager xserver-xorg x11-xserver-utils unclutter xinit
Instalados os pacotes, devemos relacionar o pi com a tty. Podemos fazer:
gpasswd -a pi tty
sed -i '/^exit 0/c\chmod g+rw /dev/tty?\nexit 0' /etc/rc.local
Crie ou edite um dos arquivos; .bashrc ou .profile, então adicione:
if [ -z "${SSH_TTY}" ]; then
xinit ~/seuScript.sh
fi
Se você já tem um sistema e só pretende melhorá-lo, inicie fazendo um backup do cartão de memória, então siga daqui.
O servidor gráfico já estará em seu sistema, obviamente. Apenas instale o window manager dessa maneira:
sudo su
apt-get update
apt-get install -y matchbox-window-manager libmatchbox1
Precisaremos editar o arquivo de configuração do lightdm:
nano /etc/lightdm/lightdm.conf
E remover o comentário da user-session e autlogin-user, deixando-os assim:
user-session = matchbox-window-manager
autologin-user = pi
Tentei configurar o matchbox utilizando o update-alternatives:
sudo update-alternatives --config x-session-manager
Porém, se não estava entre as opções, então segui os processos descritos nesse artigo.
Configurando o autologin pela ferramenta de sistema, não obtive sucesso, mas você pode experimentar primeiro o programa raspi-config:
sudo raspi-config
Entre na opção 3:
Depois, escolha a opção B4:
Ainda em Boot Options, selecione a opção Wait for Network at Boot, para não iniciar o Epiphany em modo kioski antes de haver conectividade.
O script final deverá ficar assim:
#!/bin/bash
xset -dpms
xset s off
xset s noblank
export DISPLAY=:0
matchbox-window-manager -use_titlebar no &
export XDG_CACHE_HOME=/dev/shm/epiphany/
DISPLAY=:0 WEBKIT_DISABLE_TBS=1 epiphany-browser -a --profile /home/pi/.config/ https://url.do.servidor.com.br &
No arquivo /home/pi/.profile (o escolhido para execução única após a carga do sistema), adicionei essa linha ao final:
/home/pi/seuScript.sh
Criei também o arquivo .xinitrc com a execução do matchbox:
exec matchbox-window-manager
Não sei a razão, confesso, mas em uma das inicializações me apareceu o lxpanel. Procurei pela inicialização do LXDE, mas ele não foi inicializado, então, não faço ideia do que chamou o painel, uma vez que não está em nenhum arquivo do home do usuário. Então, entrei no diretório /usr/bin e fiz apenas isso:
sudo su
cd /usr/bin
mv lxpanel lxpanel-old
echo "exit 0" >lxpanel
chmod 755 lxpanel
No final, deve aparecer uma tela como a da imagem de destaque.
Agora vamos ao próximo browser; mas no próximo artigo!
Revisão: Ricardo Amaral de Andrade
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.