NeilClackandClaude Opus 4.6 df5e64d38a Fix text input on kiosk: add keycodeToChar fallback for email/license pages
The kiosk lacks an input method framework, so SDL2 never generates
TextInputEvent. The WiFi password page already had a keycodeToChar
fallback but email and license key pages did not — characters were
never appended to inputText. Also removes excessive debug logging
from the previous commit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 19:27:28 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00
2026-03-12 08:05:10 -05:00

RhemaWave

A Go-based fullscreen SDL2/OpenGL application for Linux kiosk systems. Displays proclamations with audio playback and animated visual patterns.

Development

Development uses Nix for a reproducible build environment.

nix develop                                # enter dev shell
go build -o bin/rhemawave rhemawave.go     # build
./bin/rhemawave                            # run
./dev_scripts/reset.sh                     # reset database (if needed)

Prerequisites

  • Nix with flakes enabled
  • A display server (X11/Wayland) and audio device for running the application

Architecture

  • Page-based UI — SDL2/OpenGL 3.3 fullscreen rendering with a page stack for navigation
  • Proclamation player — scrolling text display with synchronized audio playback
  • Startup validation — WiFi, TOS acceptance, email, license key checks
  • Singleton managers — ShaderManager, FontManager, Logger (initialized once via sync.Once)

Key Directories

bin/                          # build output (gitignored)
share/rhemawave/              # assets (fonts, shaders, proclamations, TOS)
internal/                     # Go source packages
packaging/                    # deployment configs (kiosk, updater, polkit)
dev_scripts/                  # developer utilities

Runtime Data

Stored in ~/.local/share/rhemawave/:

  • data.db — SQLite database (config, proclamations, logs)
  • log.txt — application log
  • license_key — license key file

Deployment

Deployed to kiosk hardware via NixOS-Anywhere. See packaging/ for kiosk system configs.

S
Description
Legacy Go implementation of Radiant Wave
Readme
36 MiB
Languages
Go 86.1%
Shell 4.9%
Python 4.5%
Nix 2.5%
HTML 1.4%
Other 0.6%