Raspberry Pi 4B にキオスクモードにてサイネージにする
Table of contents
弊宅では、大量にあるサーバーとネットワーク機器を Zabbix で管理しておりダッシュボードである程度 宅内の状況を確認出来るようにしている。
かなり前に導入したが、 Chromium の自動起動は設定しなかったため設定する事にする
今回は、下記の設定を合わせてした。
- 自動で Chromium を起動する
- 15分に一回画面をリロードする
- マウスカーソルを消す
自動で Chromium を起動する
autostart とやらで昔はできたらしいが今はできないため systemd で起動する
--noerrdialogs
: エラーダイアログをすべて抑制します。--disable-background-mode
: バックグラウンド機能を止める--start-maximized
: 起動時に最大化した状態で起動する--app=
: app モードにする--kiosk
: これを設定すると CPU使用率などが確認できなくなったため外したRuntimeMaxSec=
で指定秒数でプロセスが再起動されるので実現できる今回は15分とした
Ref: 起動オプション - Google Chrome まとめWiki
/etc/systemd/system/chromium-autorun.service
[Unit]
Description=Chromium Autorun
[Service]
Type=simple
Environment=DISPLAY=:0.0
Environment=XAUTHORITY= ~/.Xauthority
ExecStartPre=rm -rf ~/.config/chromiumu/Singleton*
ExecStart=/usr/bin/chromium-browser \
--noerrdialogs \
--disable-background-mode \
--start-maximized \
--app=https://google.co.jp/
Restart=always
RuntimeMaxSec=900
User=pi
Group=pi
[Install]
WantedBy=user@.service
systemctl daemon-reload
systemctl start chromium-autorun.service
systemctl enable chromium-autorun.service
systemctl is-enabled chromium-autorun.service
マウスカーソルを消す
unclutter
を利用する
sudo apt install unclutter
マウスの動きが2秒間アイドル状態になったらカーソル表示を消す
/etc/systemd/system/unclutter.service
[Unit]
Description=unclutter daemon to hide mouse pointer
Requires=lightdm.service
After=lightdm.service
[Service]
Environment=DISPLAY=:0.0
Environment=XAUTHORITY=~/.Xauthority
Type=simple
ExecStart=/usr/bin/unclutter -idle 2 -jitter 3
Restart=always
User=pi
Group=pi
[Install]
WantedBy=mystuff.target
systemctl daemon-reload
systemctl start unclutter.service
systemctl enable unclutter.service
systemctl is-enabled unclutter.service
2021/06/16
リロードのタイミングで画面がちらつくのが気になるので変更
/etc/systemd/system/chromium-autorun.service
[Unit]
Description=Chromium Autorun
[Service]
Type=simple
Environment=DISPLAY=:0.0
Environment=XAUTHORITY=~/.Xauthority
ExecStartPre=rm -rf ~/.config/chromiumu/Singleton*
ExecStart=/usr/bin/chromium-browser \
--noerrdialogs \
--disable-background-mode \
--start-maximized \
--app=https://google.co.jp/
Restart=always
#RuntimeMaxSec=86400
User=pi
Group=pi
[Install]
WantedBy=user@.service
systemctl daemon-reload
systemctl stop chromium-autorun.service
systemctl disable chromium-autorun.service
systemctl start chromium-autorun.service
systemctl enable chromium-autorun.service
systemctl is-enabled chromium-autorun.service
xdotool で F5 するように変更
インストール
apt install xdotool
- cli でテストしてみる
export DISPLAY=:0.0
WID=$(xdotool search --onlyvisible --class chromium|head -1)
xdotool windowactivate ${WID}
xdotool key ctrl+F5
- アクティブウィンドウIDを取得する
xdotool getactivewindow
- ウィンドウ名を取得
xdotool getactivewindow --onlyvisible --class chromium | xargs -L1 xdotool getwindowname
/etc/systemd/system/chromium-reload.sh
#!/usr/bin/env bash
set -eu
ACTWIN=$(xdotool getactivewindow | xargs -L1 xdotool getwindowname)
if [[ "${ACTWIN}" == *$1* ]]; then
#echo 'FOUND!!!'
xdotool key ctrl+F5
fi
chmod +x /etc/systemd/system/chromium-reload.sh
/etc/systemd/system/chromium-reload.service
[Unit]
Description=Scheduled chromium reload
[Service]
Type=simple
Environment=DISPLAY=:0.0
Environment=XAUTHORITY=~/.Xauthority
ExecStart=/etc/systemd/system/chromium-reload.sh "zabbix"
User=pi
Group=pi
[Install]
WantedBy=user@.service
systemctl daemon-reload
systemctl stop chromium-reload.service
systemctl disabled chromium-reload.service
systemctl start chromium-reload.service
systemctl enable chromium-reload.service
/etc/systemd/system/chromium-reload.timer
[Unit]
Description=Scheduled chromium reload
[Timer]
Unit=chromium-reload.service
OnUnitActiveSec=15min
[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl stop chromium-reload.timer
systemctl disabled chromium-reload.timer
systemctl start chromium-reload.timer
systemctl enable chromium-reload.timer
timer が稼働するかはここで確認出来る
root@raspberrypi:~# systemctl status chromium-reload.timer
● chromium-reload.timer - Scheduled chromium reload
Loaded: loaded (/etc/systemd/system/chromium-reload.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Wed 2021-06-16 22:34:09 JST; 2min 19s ago
Trigger: Wed 2021-06-16 22:49:50 JST; 13min left