By the end of this section, you will gain experience in the following topics:
- Understanding what a Kiosk image is and where it can be used.
- Automatically launching a graphical application on system startup after loading the Gemstone Kiosk image onto the card.
Review the example images.
Cezeri Flying Car Command Control Panel
Cezeri Flying Car Command Control Panel

TOGG End-to-End Driver Console
TOGG End-to-End Driver Console

Tesla Driver Console
Tesla Driver Console

SpaceX Dragon Capsule Command Control Panel
SpaceX Dragon Capsule Command Control Panel

1. Features
Linux systems offer multiple methods and graphical subsystems for running GUI applications. These methods differ in how they process and render visual content to the screen.- X11 (X Window System) is the traditional and most widely used windowing system; it operates on a client-server architecture and allows applications to be displayed over a network.
- Wayland is a modern protocol designed to replace X11, offering a simpler, performance-oriented structure with lower latency by communicating directly with the DRM/KMS kernel module.
- DirectFB is a lightweight graphics library often preferred in embedded systems, drawing directly to the framebuffer for fast graphics processing without complex layers like X11 or Wayland.
- LinuxFB is a simple method that accesses the Linux kernel’s framebuffer device directly, useful for low-resource systems but lacking advanced graphics features.
$HOME/.config/openbox/rc.xml
) to better suit kiosk needs.
2. Installation
As described in the Quick Start section, connect Gemstone to your computer, launch the Gemstone Imager application, and click on the Operating System section.


Todo: Kiosk GCS
3. Configuration
X11 clients use the
DISPLAY
environment variable to determine where to render the display. When connecting via serial
terminal or SSH, this variable must be set manually. Its format is <hostname>:<display server number>.<screen number>
.
If the display server runs locally, the hostname is omitted. Below is an example usage. In most cases, DISPLAY=:0.0
is
common.- Since the display server runs on the Gemstone card and we connect via SSH, the hostname is omitted.
- Modern systems typically run a single display server, so server number
0
is used. - Even with multiple monitors, modern systems often use a single virtual screen, so screen number
0
is used.
$HOME/kiosk.environment
file. The environment variables listed
in this file and their functions are shown in the table below.
Environment Variable | Default Value | Function |
---|---|---|
PATH | $HOME/bin:$PATH | Directories where applications will be searched |
LD_LIBRARY_PATH | /usr/local/qt6:$LD_LIBRARY_PATH | Directories where dynamic libraries (.so) will be searched |
KIOSK_RESOLUTION | 800x600 | Screen resolution |
KIOSK_REFRESH_RATE | 60 | Screen refresh rate |
KIOSK_LOG_PATH | $HOME/kiosk.log | Directory where application stdout and stderr will be logged |
KIOSK_LOG_MAX_SIZE_BYTES | 104857600 | Maximum size of the log file in bytes |
KIOSK_BIN | kiosk | Application to be executed |
$HOME/bin/kiosk
directory by default. To replace or update the application,
send the new application to this directory using scp
as shown below, then restart the Openbox session.
4. Architecture
The stages from powering on the Gemstone card to displaying the Kiosk application are listed below.- Systemd starts the
getty@tty1
service. This service automatically logs in thegemstone
user from the terminal named tty1. - The default shell of the
gemstone
user,/bin/bash
, is launched. - The
$HOME/.profile
script is executed by the Bash shell. This script contains thestartx
command, which launches Xserver, the display server for X11. If Xserver crashes for any reason, the status is logged in the systemd journal with thekiosk
tag, andstartx
is executed again. - The
$HOME/.xinitrc
script is executed by Xserver. This script contains theexec openbox-session
command, which launches the Openbox session. - The
$HOME/.config/openbox/autostart
script is executed by Openbox. This script launches the application defined by theKIOSK_BIN
environment variable. The stdout and stderr outputs of this application are logged to the file defined by theKIOSK_LOG_PATH
environment variable. If the Kiosk application crashes for any reason, the status is logged in the systemd journal with thekiosk
tag, and the application is restarted.