Screen

Affects: Screen Hearth

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<br/>(Touch-PC at the cabinet)"]
    Screen["Screen<br/>(CEF kiosk)"]
    Hearth["Hearth<br/>(HMI renderer)"]
    Anvil["Anvil bus<br/>(iceoryx2)"]
    Plc["forgeiec_plc<br/>(PLC cycle)"]

    Panel ---|"runs on"| Screen
    Screen ---|"HTTP"| Hearth
    Hearth ---|"reads"| Anvil
    Anvil ---|"process data"| Plc

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 (preview); Hearth reads the live values directly from the Anvil bus, where the PLC cycle publishes them. 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
  • Language β€” localed 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
LicenceAGPL-3.0-or-later

Source

RepositoryLink
Forgejossh://git@git.forgeiec.io/ForgeIEC/screen.git (not publicly browsable β€” access once your SSH public key is enabled)
APTsudo apt install forgeiec-screen-wayland

Screen β€” the industrial browser for the HMI panel.

blacksmith@forgeiec.io