对于本树莓派 Kiosk 教程,我们将向您展示如何使用流行的 Web 浏览器 Chromium 将 Pi 设置为 Kiosk 。
我们使用 Chromium ,因为它是最受支持的 Web 浏览器之一,并公开支持以信息亭模式运行的功能。
通过按键进行控制也很容易,我们可以使用在本指南中安装的 xdotool 进行模拟。
本指南将为您提供有关如何使用自动登录任务和简单的 bash 脚本执行大量任务的好主意。
请注意,要完成本教程,您将需要运行 Raspbian 的完整版本,因为它依赖于随附的 GUI 才能正常运行。
设备清单
下面列出了我们在此树莓派 Kiosk 教程中使用的所有设备的完整列表。
推荐的
树莓派 2、 3 、 4 或更高版本
Micro SD 卡
电源
电视或 * 显示器
HDMI 线
以太网线或 * WiFi 加密狗
可选的
- 树莓派外壳
视频
在此视频中,我们向您展示了如何设置树莓派以充当 Chromium 供电亭的过程,并向您展示如何使其在启动时启动。
如果您希望获得书面更详尽的解释,请查看下面的书面指南。
Adblock 阻止了视频?订阅我们的无广告服务,为我们提供支持。
设置树莓派信息亭
1 在开始本教程之前,我们将首先删除一些树莓派服务亭不需要的软件包。
删除这些软件包将释放一些急需的内存,并减少每次更新树莓派时将要更新的软件包的数量。
为此,只需在树莓派上运行以下三个命令。我们将它们分为三个不同的命令,以使它们更易于复制和写出。
sudo apt-get purge wolfram引擎从头开始 scratch2 nuscratch声波-pi idle3 -y
sudo apt -get清除 smartsim java-常见的 minecraft -pi libreoffice * -y
2 现在,我们已经从树莓派信息亭中删除了许多软件包,我们将需要运行一些清理命令。
要删除任何不必要的延迟包并清理所获取包的本地存储库,请在树莓派上运行以下两个命令。
sudo apt-get clean
sudo apt-get autoremove -y
3 现在,我们已经删除了大部分不必要的应用程序,我们现在必须确保我们的 Raspbian 安装是最新的。另外,请确保您已启用 SSH ,因为如果以后需要编辑任何文件,这将非常方便。
我们可以在树莓派的终端中使用以下两个命令将所有软件包更新为最新版本。
sudo apt-get update
sudo apt-get upgrade
4 我们现在还需要安装 xdotool 。此工具将允许我们的 bash 脚本执行按键操作,而无需任何人在设备上。我们还安装了 unclutter 软件包,这将使我们能够从显示中隐藏鼠标。
只需在树莓派上运行以下命令即可安装该软件包。
sudo apt-get install xdotool整齐 sed
5 现在已经安装了这些软件包,我们现在可以进入本教程的下一阶段。那就是将 Raspbian''设置为
自动登录’’给我们的用户。每次必须要登录信息亭时,这会很烦人。
桌面自动登录是默认行为,但是如果由于某些原因而更改了桌面自动登录,请按照以下几个步骤将其切换回原来的状态。否则,请跳至本教程的” 步骤 6 “。
5a。在树莓派上运行以下命令以加载 Raspi -config 工具。我们将使用此工具启用自动登录。
sudo raspi-config
5b。现在在工具中转到 3 引导选项 -> B1 桌面 / CLI -> B4 桌面自动登录
5c。现在应该启用桌面自动登录,您可以安全地退出 raspi-config 工具。
6 现在我们已经启用了桌面自动登录功能,我们需要继续编写 kiosk.sh 脚本。
编写树莓派信息亭脚本该信息亭脚本将处理我们树莓派信息亭的大部分工作,包括启动 Chromium 本身以及模拟按键。
通过在树莓派上运行以下命令,开始编写我们的信息亭 bash 脚本。
vim /home/pi/kiosk.sh
1 在此文件中,输入以下代码行,我们将解释脚本的重要部分,以便您可以更好地满足您的需要。
#!/bin/bash
第一行定义了命令行解释器 (CLI) 尝试并执行此文件时应使用的内容。对于不需要每次运行脚本都需要指定特定应用程序的情况,这很有用。
xset的空白
xset关闭
xset -dpms
这三行非常重要,因为它们可以帮助我们阻止树莓派的显示电源管理系统启动或关闭屏幕。
基本上,这三个命令将当前的 xsession 设置为不清空屏幕保护程序,然后完全禁用屏幕保护程序。第三行禁用了整个” 显示电源管理系统”,这意味着桌面界面绝不能让屏幕空白。
整洁-空闲 0 .5-根&
该行运行我们之前安装的名为”unclutter “的程序。只要空闲时间超过 0.5 秒,此应用程序就会在显示屏上隐藏鼠标,即使它在根背景上,也会将其删除。
您可以将空闲计时器调整为所需的秒数,每个小数点后的位置仅占几分之一秒。
如果您想立即删除鼠标,请从命令中删除 -idle 0.5 。
sed -i's /"exited_cleanly":false /"exited_cleanly":true /'/home/pi/.config/chromium/Default/Preferences
sed -i's /"exit_type":"崩溃"/"exit_type":"普通"/'/home/pi/.config/chromium/Default/Preferences
脚本的这两行使用 sed 搜索 Chromium 首选项文件,并清除所有将使警告栏出现的标志,这是您真正不想在树莓派 Kiosk 上发生的行为。
如果 Chromium 曾经崩溃或突然关闭,上面的几行将确保您不必按住鼠标和键盘即可清除通常在浏览器顶部显示的警告栏。
/usr/bin/chromium-browser –noerrdialogs –disable-infobars –kiosk https://pimylifeup.com https://www.adafruit.com&
该行使用我们的参数启动 Chromium 。我们将遍历每个参数,以便您知道可以修改的内容以及如何对其进行修改。
- 亭
此标志将 Chromium 设置为在信息亭模式下运行,将其锁定为一组特定的功能,并且仅允许有限地访问 Web 浏览器和任何其他 OS 功能。
Chromium 的信息亭功能可以完全控制屏幕,将 Chromium 最大化到整个屏幕尺寸,并阻止用户输入被操作系统接受,从而有效地将最终用户困在沙箱中。
--noerrdialogs
此选项告诉 Chromium ,它不应向最终用户显示任何错误对话框。
如果您不希望最终用户知道 Chromium 是否存在任何问题或出现问题,这一点至关重要,这与我们的代码一起清除了” exited \ _cleanly “和” exit \ _type “在代码的前面。
--disable-infobars
我们使用它来禁止 Chromium 向最终用户显示其信息栏。
Chromium 可以使用信息栏来通知他们某些事情,例如 Chromium 不是其默认的 Web 浏览器。当然,由于我们将其用作信息亭,因此我们不需要用户知道 Chromium 可能希望显示的任何信息。
https://pimylifeup.com https://www.adafruit.com
这是脚本将打开的两个网页,每个网页都将在新选项卡中打开。您可以通过使用空格将每个网页 / 标签添加到此列表中来添加其他网页 / 标签。
虽然是真的做
xdotool keydown ctrl + Tab; xdotool keyup ctrl + Tab;
睡觉 15
完成
这些行运行一个非常简单的无限 while 循环,该循环使用 xdotool 模仿 Ctrl + Tab 。将 Chromium 切换到下一个标签。
在 xdotool 执行完按键之后,它将使循环休眠 15 秒钟。要更改循环在再次执行 xdotool 命令之前的睡眠时间,只需更改 sleep 15 命令。
您也可以使用此方法来添加屏幕刷新,这在您要显示实时比分时可能很重要。用于此的命令应类似于下面显示的内容。
xdotool keydown ctrl + r; xdotool keyup ctrl + r;
2 输入树莓派信息亭脚本的所有代码后,它的外观应与下面显示的相似。
#!/bin/bash
xset的空白
xset关闭
xset -dpms
混乱-空闲 0 .5-根&sed -i's /"exited_cleanly":false /"exited_cleanly":true /'/home/pi/.config/chromium/Default/Preferences sed -i's /"exit_type":"Crashed"/"exit_type":"普通"/'/home/pi/.config/chromium/默认/首选项
/usr/bin/chromium-browser –noerrdialogs –disable-infobars –kiosk https://pimylifeup.com https://www.adafruit.com&
虽然是真的做
xdotool keydown ctrl + Tab; xdotool keyup ctrl + Tab;
睡觉 10
完成
3 确定一切正确后,请按 CTRL + X ,然后按 Y ,最后按 ENTER 保存文件。
设置树莓派信息亭以在启动时启动
1 在开始之前,我们需要首先使用以下命令来计算当前的显示值。
此值用于操作系统了解将 Chromium 信息亭显示到哪个屏幕,如果没有该值,信息亭将无法加载或加载到错误的屏幕上。
运行以下命令以回显” $ DISPLAY “系统变量的值。
echo $ DISPLAY
确保记住该值,因为您可能需要在本节的” 步骤 3 “中使用它。
2 要使我们的树莓派信息亭在启动时启动,我们需要继续并通过运行以下命令来创建服务文件。
此服务文件将在启动软件之前告诉操作系统我们要执行什么文件以及我们希望 GUI 可用。
sudovim/lib/systemd/system/kiosk.service
3 在我们的信息亭服务文件中,输入以下文本行。
这些行将定义我们的服务亭服务,并希望在系统加载到操作系统中时运行 kiosk .sh 脚本。
输入这些行时,您可能需要修改” Environment = DISPLAY =:” 行,将” 0 “替换为您从在” 第一步” 中使用的命令中检索到的值本节的内容。
[单元]
描述=铬亭
想要= graphical.target
之后=图形目标
[服务]
环境=显示=:0.0
环境= XAUTHORITY =/home/pi/.Xauthority
类型=简单
ExecStart =/bin/bash /home/pi/kiosk.sh
重新启动=中止
用户= pi
组= pi
[安装]
WantedBy = graphical.target
将所有内容输入文件后,请依次按 CTRL + X 和 Y ,然后按 ENTER 键保存文件。
4 现在,我们已经为树莓派信息亭创建了服务文件,我们可以继续并通过运行以下命令启用它。
通过启用该服务,我们将允许我们的 Chromium Kiosk 在启动时自动启动,并使 systemd 可以由服务管理器对其进行监视。
sudo systemctl启用 kiosk .service
5 启用了 Kiosk 服务后,您可以选择重新启动树莓派或通过运行以下命令立即启动该服务。
sudo systemctl启动 kiosk .service
6 如果您想查看树莓派 Kiosk 服务的状态,可以运行以下命令。
此命令将返回有关服务的各种信息,包括以前从软件返回的行,这些行可以帮助您调试服务失败时出现的问题。
sudo systemctl状态信息亭
如果此命令的状态显示为” 活动:活动 (运行)”,则一切现在都应正常工作,并且树莓派 Chromium 信息亭应已启动并正常运行。
7 现在,一切正常并正常运行,如果出于任何原因要停止服务运行,则可以使用以下命令。
sudo systemctl停止 kiosk .service
通过停止信息亭服务,服务管理器将终止与之关联的所有进程。此命令将阻止我们的 kiosk .sh 脚本运行,同时终止打开的 Chromium 浏览器。
8 最后,如果您想禁用信息亭,则可以使用以下命令。
sudo systemctl禁用 kiosk .service
该命令将停止 Kiosk 服务在引导时运行,直到您重新启用它为止。
在树莓派信息亭上执行分辨率
1 您可能想做的一件事是强制执行树莓派将要使用的分辨率。设置分辨率可能非常方便,因为树莓派的内置检测有时可能有点麻烦。
要开始设置分辨率,我们必须首先通过运行以下命令来加载树莓派配置工具。
sudo raspi-config
2 在配置工具中,您将要转到” 7 Advanced Options “开始。
3 现在我们位于” 高级选项” 部分,您应该会看到一个标有” A5 分辨率” 的选项,请选择该选项。
4 在此处找到并选择最适合您的屏幕的分辨率,然后按 ENTER 。5 现在设置好分辨率后,您将需要重新启动树莓派。为此,请先退出配置工具,方法是按 ESC ,然后在树莓派的终端中输入以下命令。
sudo reboot
6 您的树莓派现在应该重新启动并以指定的分辨率运行。
您可以通过多种方式扩展本教程。例如,您可以在树莓派上设置一个 Web 服务器并让其提供要在自助服务终端上显示的本地网页。
如果您想要比赛的结果或基本上想要显示的任何其他类型的信息,这是完美的选择。
现在,您应该已经将树莓派成功引导到 Chromium 的 Kiosk 模式。如果您对此树莓派服务亭教程有任何疑问,或者想发表反馈意见,请与我联系。