Screen

Betrifft: Screen Hearth bellowsd

The kiosk browser

Screen is the industrial HMI-panel browser of ForgeIEC. A lean application that sits between the hardware display and the web HMI: it runs fullscreen, opens any HTTP HMI URL (typically Hearth, alternatively 3rd-party HMIs) and at the same time offers a built-in settings UI for device configuration (network, WireGuard, time zone, language).

Written in Rust with the Chromium Embedded Framework (CEF) and winit as window manager. Runs on X11, Wayland and Windows — on Linux amd64 + arm64 and on Windows x64.


What Screen does

AreaWhat Screen does
CEF integrationFull Chromium browser as an embedded window
Fullscreen + windowedDefault: borderless fullscreen; --windowed for test/debug
Kiosk mode--kiosk <URL> — no address bar, no tab switch, just the HMI
Settings UIIntegrated Rocket web server on port 8080 with Tera templates
D-Bus backendNetworkManager + timedated + localed via zbus
Local settingsSQLite store for device-specific configuration
WireGuardMulti-tunnel VPN management via NetworkManager (config import or key generation)
80+ languagesi18n with Project Fluent (incl. RTL: Arabic, Hebrew, Persian, Urdu)
DCP clientHTTP/WebSocket client for an external settings daemon

Typical deployment

flowchart LR
    Panel["HMI panel
(Touch-PC at the cabinet)"] Screen["Screen
(CEF kiosk)"] Hearth["Hearth
(HMI renderer)"] Bellows["bellowsd
(OPC-UA / Modbus)"] Anvild["anvild
(PLC runtime)"] Panel ---|"runs on"| Screen Screen ---|"HTTP"| Hearth Hearth ---|"OPC-UA / Modbus"| Bellows Bellows ---|"Anvil IPC"| Anvild

You have an HMI panel at the cabinet: Screen runs on it and is pure display (Chromium kiosk). The HMI is rendered by Hearth as an HTTP UI, fed via OPC-UA / Modbus from bellowsd, whose live values in turn come from anvild. The operator sees only the application — no Linux desktop, no accidentally- startable browser functions.


Operation modes

ModeWhen?How?
KioskProductive panel at a machinescreen --kiosk https://hmi.local — fullscreen, no exit through UI
FullscreenLike kiosk but with address bar for diagnosticsscreen (default)
WindowedTest, developmentscreen --windowed
Settings onlyFirst-time setup without HMIScreen opens http://localhost:8080 (built-in settings UI)

Settings UI

A Tera-templated web UI runs on port 8080 with:

  • Network — DHCP / static IP, multiple interfaces, VLAN tags
  • WireGuard — up to N simultaneous tunnels, key generation or config import (.conf)
  • Time zone — via timedated D-Bus, geo selection plus manual entry
  • Languagelocaled D-Bus, 80+ languages via Project Fluent
  • HMI URL — which URL is loaded after startup
  • Display — resolution, orientation (portrait / landscape)

Settings are persisted in a local SQLite database — survives reboots, readable via the automation-settings CLI for backup / provisioning.


Technical specs

AspectValue
LanguageRust
Browser engineChromium Embedded Framework (CEF) 146
Window managerwinit
Settings serverRocket + Tera
D-Bus stackzbus (NetworkManager + timedated + localed)
DatabaseSQLite
i18nProject Fluent, 80+ languages incl. RTL
Display serversX11, Wayland, Windows (Win32)
PlatformsLinux amd64 + arm64, Windows x64
LicenseAGPL-3.0

Source

RepositoryLink
GitHubgithub.com/Beerlesklopfer/screen Stars
Forgejogit.forgeiec.io/ForgeIEC/screen
APTsudo apt install forgeiec-screen

Screen — the industrial browser for the HMI panel.

blacksmith@forgeiec.io