发布于 2026-01-06 2 阅读
0

如何在树莓派上设置 Smashing 控制面板

如何在树莓派上设置 Smashing 控制面板

我们将使用DietPi作为操作系统,因为它能自动完成大部分设置。虽然有 64 位版本,但截至撰写本文时,我还没能在上面安装 Chromium 浏览器。

要安装 DietPi,您可以按照他们的指南进行操作。我使用RPi Imager进行刷机。

你现在应该在这里:
备选

首轮

输入Software Optimised,选择Chromium(使用方向键和空格键),然后按回车键。

之后,前往DietPi-Config-> Display Options->Display Resolution并选择当前屏幕分辨率。

之后,返回直到看到AutoStart OptionsChromium按回车键选择,您可以保留 URL 不变,并确保用户设置为root。选择 完全返回上一级菜单Exit

然后前往Software Additional并选择Build-EssentialsGitNode.JS和您选择的编辑器。按回车键退出。(按 Esc 键将清除您的设置)最后

,选择并重启。Install

设置 Chromium

在某些情况下,Chromium 的窗口大小可能小于屏幕分辨率。例如:
小型镀铬窗口

要解决这个问题,我们需要编辑文件中的这些变量,/boot/dietpi.txt并将它们设置为适合您的分辨率:

SOFTWARE_CHROMIUM_RES_X=1280
SOFTWARE_CHROMIUM_RES_Y=720
Enter fullscreen mode Exit fullscreen mode

之后,我们需要修改 Chromium 的自动启动脚本来修复一些明显的错误。脚本可以在这里找到。/var/lib/dietpi/dietpi-software/installed/chromium-autostart.sh

CHROMIUM_OPTS="--kiosk --test-type --window-size=$RES_X,$RES_Y --start-fullscreen --start-maximized --window-position=0,0"
Enter fullscreen mode Exit fullscreen mode

将以下选项添加到此变量中:

  • --no-default-browser-check禁用默认浏览器检查。这对于需要避免显示默认浏览器信息栏的 UI/浏览器测试非常有用。
  • --disable-component-update禁用 Chromium 更新提示或提示 Chromium 无法更新的弹出窗口。
  • --no-first-run跳过首次运行任务,无论是否真的是首次运行。

更多关于命令行开关的信息请点击这里

就在之前:

xinit $FP_CHROMIUM $CHROMIUM_OPTS
Enter fullscreen mode Exit fullscreen mode

添加以下命令:

sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences
Enter fullscreen mode Exit fullscreen mode

这些设置会修改本地 Chromium 设置exited_cleanly,告诉 Chromium 它总是按预期退出。由于这是 Raspberry Pi,Chromium 可能会直接关闭,我们不希望看到“恢复之前的会话”弹出窗口。

最后,你应该得到一个类似这样的文件。

#!/bin/bash
# Autostart run script for Kiosk mode, based on @AYapejian https://github.com/MichaIng/DietPi/issues/1737#issue-318697621
# - Please see /root/.chromium-browser.init (and /etc/chromium.d/custom_flags) for additional egl/gl init options

# Command line switches https://peter.sh/experiments/chromium-command-line-switches/
# --test-type gets rid of some of the chromium warnings that you may or may not care about in kiosk on a LAN
# --pull-to-refresh=1
# --ash-host-window-bounds="400,300"

# Resolution to use for kiosk mode should ideally match current system resolution
RES_X=$(sed -n '/^[[:blank:]]*SOFTWARE_CHROMIUM_RES_X=/{s/^[^=]*=//p;q}' /boot/dietpi.txt)
RES_Y=$(sed -n '/^[[:blank:]]*SOFTWARE_CHROMIUM_RES_Y=/{s/^[^=]*=//p;q}' /boot/dietpi.txt)

CHROMIUM_OPTS="--kiosk --test-type --no-default-browser-check --no-first-run --disable-component-update --window-size=$RES_X,$RES_Y --start-fullscreen --start-maximized --window-position=0,0"
# If you want tablet mode, uncomment the next line.
#CHROMIUM_OPTS+=' --force-tablet-mode --tablet-ui'

# Add URL for the first run:
URL=$(sed -n '/^[[:blank:]]*SOFTWARE_CHROMIUM_AUTOSTART_URL=/{s/^[^=]*=//p;q}' /boot/dietpi.txt)
CHROMIUM_OPTS+=" --homepage $URL"

# Find absolute file path location of Chromium binary.
FP_CHROMIUM=$(command -v chromium)
if [[ ! $FP_CHROMIUM ]]; then

        # Assume RPi
        FP_CHROMIUM="$(command -v chromium-browser)"

fi

sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences

xinit $FP_CHROMIUM $CHROMIUM_OPTS
Enter fullscreen mode Exit fullscreen mode

设置粉碎

Smashing是一个基于 Sinatra 的框架,可用于构建美观的仪表盘。(摘自其文档)

以该用户身份登录dietpi(这是默认用户),然后执行以下步骤:

# Install ruby
sudo apt install ruby-dev
# Install gems
sudo gem install smashing bundler
# Generate sample project
smashing new sample_dashboard
cd sample_dashboard
# Install dependencies
bundle install
# Run
smashing start
Enter fullscreen mode Exit fullscreen mode

现在你应该可以通过本地主机连接到它,或者使用树莓派的局域网地址连接到 3030 端口,它应该看起来像这样:
粉碎仪表盘

既然我们知道它有效,我们就需要设置自动启动仪表板的服务,并告诉 Chromium 在启动时加载我们的链接。

smashing.service创建一个名为`in path` 的文件,/etc/systemd/system内容如下:

[Unit]
Description=Start Smashing Dashboard
Before=graphical.target
After=network.target remote-fs.target

[Service]
Type=exec
Restart=always
RestartSec=60
TimeoutSec=5min
KillMode=control-group
GuessMainPID=no
User=dietpi
Group=dietpi
WorkingDirectory=/home/dietpi/sample_dashboard
ExecStart=/usr/local/bin/smashing start
#ExecStop=/usr/local/bin/smashing stop
PrivateTmp=true
PrivateDevices=true
ProtectSystem=full
MountFlags=private
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

请务必将路径更改WorkingDirectory为您的仪表板所在的路径。

更多服务选项信息请点击此处。

之后执行:

# Reload the Daemon to see our changes
sudo systemctl daemon-reload
# Start smashing on boot
sudo systemctl enable smashing
Enter fullscreen mode Exit fullscreen mode

要修改 Chromium 加载的链接,我们可以通过应用程序在 TUI 中进行修改dietpi-config,或者修改变量SOFTWARE_CHROMIUM_AUTOSTART_URL并将/boot/dietpi.txt其设置为http://localhost:3030

现在重启,它应该会在启动时自动全屏加载仪表盘,最终结果如下:备选

关于 Smashing 的更多信息请点击这里。如果

您想更好地控制 Smashing 服务的性能,可以使用 DietPi。DietPi 提供了许多工具,可以极大地改善您使用 Raspberry Pi 的体验,我建议您深入了解一下。dietpi-services

文章来源:https://dev.to/sweet human/how-to-set-up-a-smashing-dashboard-on-your-raspberry-pi-2h70