How to Set Up Kiosk Mode for Test Stations
Kiosk mode locks a test station's display to the operator interface. The operator sees only the test UI. No address bar, no taskbar, no desktop, no way to accidentally close the browser or open other applications. This guide covers how to set up kiosk mode on Windows and Linux for manufacturing test stations.
Why Kiosk Mode
| Problem | Kiosk Mode Solves It |
|---|---|
| Operator closes the browser | Browser restarts automatically |
| Operator navigates away from the test UI | Address bar is hidden |
| Operator opens other applications | Taskbar is hidden, Alt+Tab is disabled |
| Station boots to a desktop | Browser opens automatically on startup |
| Display is hard to read at arm's length | Browser zoom is preset to 150% |
Kiosk mode turns a general-purpose PC into a dedicated test terminal.
Prerequisites
- Chrome or Chromium installed on the station PC
- TofuPilot streaming URL for the station
- Admin access to the station PC
Step 1: Launch Chrome in Kiosk Mode
Windows
Create a shortcut or batch script that launches Chrome in kiosk mode pointing to the TofuPilot streaming URL.
@echo off
REM Launch Chrome in kiosk mode for operator UI
start "" "C:\Program Files\Google\Chrome\Application\chrome.exe" ^
--kiosk ^
--disable-pinch ^
--overscroll-history-navigation=0 ^
--noerrdialogs ^
--disable-translate ^
--no-first-run ^
--fast ^
--fast-start ^
--disable-features=TranslateUI ^
--disk-cache-dir=nul ^
"https://tofupilot.app/streaming/your-station-room-id"Linux
Create a shell script for kiosk mode on Linux stations.
#!/bin/bash
# Launch Chromium in kiosk mode for operator UI
chromium-browser \
--kiosk \
--disable-pinch \
--overscroll-history-navigation=0 \
--noerrdialogs \
--disable-translate \
--no-first-run \
--disable-features=TranslateUI \
"https://tofupilot.app/streaming/your-station-room-id"Step 2: Auto-Start on Boot
Windows
Place the batch script in the Startup folder:
C:\Users\<operator>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
Or create a scheduled task that runs the script at logon.
Linux (systemd)
Create a systemd service that starts the browser after the display server is ready.
[Unit]
Description=Operator UI Kiosk
After=graphical.target
[Service]
Type=simple
User=operator
Environment=DISPLAY=:0
ExecStart=/home/operator/start_operator_ui.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=graphical.targetEnable the service:
sudo systemctl enable operator-ui.serviceThe Restart=on-failure setting means the browser relaunches automatically if it crashes or gets closed.
Step 3: Configure the Display
| Setting | Value | How |
|---|---|---|
| Browser zoom | 125-150% | Set in Chrome settings or via --force-device-scale-factor=1.5 flag |
| Screen timeout | Never | Disable sleep/screensaver in OS power settings |
| Screen rotation | Landscape | Match the UI layout |
| Resolution | Native | Don't downscale, the UI is responsive |
Step 4: Set Up Barcode Scanner
Most USB barcode scanners work as HID keyboard devices. When the operator scans a barcode, the characters are typed into the active input field.
| Setting | Recommendation |
|---|---|
| Scanner mode | USB HID Keyboard (default on most scanners) |
| Suffix | Configure the scanner to send Enter after each scan |
| Prefix | None (or configure to match your serial format) |
| Focus | The TofuPilot operator UI auto-focuses the serial input field |
The workflow becomes: operator scans barcode, Enter is sent automatically, test starts. No clicking, no typing.
Step 5: Lock Down the Station
Disable Keyboard Shortcuts (Windows)
Use Group Policy or a third-party tool to disable:
| Shortcut | Why |
|---|---|
| Alt+Tab | Prevents switching away from the operator UI |
| Alt+F4 | Prevents closing the browser |
| Ctrl+W | Prevents closing the tab |
| Windows key | Prevents opening the Start menu |
Disable Keyboard Shortcuts (Linux)
Configure the window manager to ignore these shortcuts, or run Chrome in a minimal window manager (like Openbox) that doesn't bind them.
Troubleshooting
| Issue | Fix |
|---|---|
| Browser shows "No internet" on boot | The browser starts before the network is ready. Add a 10-second delay to the startup script, or use Restart=on-failure in systemd. |
| Screen goes black after inactivity | Disable screen timeout in OS power settings and screensaver. |
| Scanner types into the wrong field | The TofuPilot UI auto-focuses the serial input. If focus is lost, clicking anywhere on the page restores it. |
| Browser updates break kiosk mode | Pin the Chrome/Chromium version or disable auto-updates on station PCs. |