Repository navigation
Config and Theme
github-actions[bot] edited this page Oct 21, 2026
·
2 revisions
How the settings file is stored on a NebulaOS printer. The fields themselves are on Configuration.
- NebulaScreen reads
nebulascreen.jsonfrom the directory of its executable,/opt/nebulascreen/— part of the read-only squashfs image. - At boot, NebulaOS bind-mounts the persistent file
/usr/data/nebulaos/nebulascreen/nebulascreen.jsonover/opt/nebulascreen/nebulascreen.json, and the same file ontoconfig/nebulascreen/nebulascreen.jsonso Mainsail can show and edit it. Both boot slots (A/B) use the same data partition. - The first time, the file is seeded from the image's default (or copied once from a GuppyScreen-era
guppyconfig.json). - Because the target is a single-file bind mount, a save cannot rename a new file over it.
Config::save()first writes a complete copy tonebulascreen.json.savingnext to the persistent file, then rewrites the config in place; at the next start an interrupted save is completed from that copy or dropped. - If the file exists but cannot be read or parsed,
Config::init()uses the built-in defaults instead of crashing (ThemeConfig::init()does the same for themes). Covered bymake test-config-theme-parse-safety.
Themes are read-only files in /opt/nebulascreen/themes/; the chosen theme name is stored in the
config (theme).
See also: Integration with NebulaOS.
Get started
Get great prints
- Calibration guide (4 steps)
- Calibration walkthrough (A→Z)
- Bed tramming
- Load cell calibration (water bottle)
- Axis Twist Compensation
- Adaptive meshing + purge
- Square parts (Skew Correction)
- Quieter steppers (TMC Autotune)
Using the screen
Help
- Working on NebulaScreen
- Build from source
- Dev & simulator
- Architecture
- Configuration
- Releases & deployment
- Testing
- CI
- Contributing
- Publishing this wiki
NebulaOS