Reference

Configuration Reference

All config.json fields with types, defaults, and descriptions. All fields are optional.

Lookup order: CLI overrides config file, config file overrides defaults. See Configuration Sources.

Top-level fields

KeyTypeDefaultDescription
schema_versionint4Configuration format version; normally managed by automatic migration.
aliasstring""Device alias shown on the idle screen.
autorun_presetstring—Removed. Ignored on load and erased on save. Startup playback must be explicit.

network

{ "network": { "base_port": 18290, "enable_osc": true, "listen_address": "0.0.0.0", "advertise_address": "auto", "controller_ip_whitelist": [] } }
KeyTypeDefaultDescription
base_portint18290Base port for HTTP and OSC/UDP.
enable_oscbooltrueEnable the OSC UDP socket. Same source policy as other control transports.
listen_addressstring"0.0.0.0"Address used by HTTP, OSC/UDP, and Maintenance Remote Debug. Explicit values are respected.
advertise_addressstring"auto"Address shown in the QR code and local status views. Display-only; does not affect binding or authorization.
controller_ip_whiteliststring[][]Optional exact source IPs shared by HTTP, OSC, Maintenance, and Remote Debug. Empty adds no player-level source restriction.

window

{ "window": { "fullscreen": { "enabled": true, "mode": "borderless", "width": 0, "height": 0 }, "screen_index": 0, "always_on_top": true } }
KeyTypeDefaultDescription
fullscreen.enabledbooltrueStart in fullscreen. false = windowed.
fullscreen.modestring"borderless""borderless" (exhibition default) or "exclusive" (performance / KMS). Neither mode can block OS-level prompts.
screen_indexint0Target display. 0 = primary.
fullscreen.widthint0Exclusive-fullscreen target width. 0 keeps the desktop mode.
fullscreen.heightint0Exclusive-fullscreen target height. 0 keeps the desktop mode. Refresh rate always follows the display's current desktop mode.
always_on_topbooltrueKeep window above ordinary windows (applied when not in exclusive fullscreen).
inhibit_screensaverbool—Removed. Ignored on load and erased on save. The player always inhibits the screensaver, display sleep, DPMS, and console blanking.
fullscreen_refresh_ratefloat—Removed. Ignored on load and erased on save. Exclusive fullscreen follows the display's current refresh rate.

control

{ "control": { "media_root": "./assets", "load_timeout_sec": 30 } }

media_root is the directory used to resolve relative play_media / load sources. Putting files there does not start playback.

KeyTypeDefaultDescription
media_rootstring"./assets"Base directory for relative v1 playback sources. CLI: --media-root.
load_timeout_secint30Seconds before an accepted load fails with LOAD_TIMEOUT. CLI: --load-timeout.
freeze_exit_secint—Removed. Ignored on load and erased on save. The player does not self-exit because a frame is stale.

decode

{ "decode": { "hwdec_mode": "auto" } }

Hardware decode backend only. This is not a playlist and does not choose which file to play. Old playlist.hwdec_mode is copied here once, then the playlist object is erased.

KeyTypeDefaultDescription
hwdec_modestring"auto""auto", "auto-copy", "no", or "v4l2m2m" (Raspberry Pi). CLI: --hwdec-mode.

idle_screen

{ "idle_screen": { "image_path": "", "fill_mode": "fill" } }

Idle appearance follows RuntimeMode. Formal entry with an empty image_path is a black screen. Maintenance entry shows the local guide.

KeyTypeDefaultDescription
image_pathstring""Background image for Normal idle. Empty means black. CLI: --idle-image.
fill_modestring"fill""fill" (cover), "fit" (contain), or "stretch". Only used when image_path is set. CLI: --idle-fill-mode.

audio

{ "audio": { "output_device": "auto" } }
KeyTypeDefaultDescription
output_devicestring"auto"libmpv audio-device ID. "auto" follows the system default. CLI: --audio-output-device.

projection.mask

{ "projection": { "mask": { "enabled": false, "invert": false, "feather_px": 0.0, "points_norm": [] } } }

Machine geometry, applied at every start. Same class of setting as window.*.

KeyTypeDefaultDescription
enabledboolfalseEnable the mask. CLI: --mask-enabled.
invertboolfalseInvert mask area. CLI: --mask-invert.
feather_pxfloat0.0Edge feather in pixels. CLI: --mask-feather.
points_normfloat[][][]Polygon vertices [[x, y], ...]. Each value 0.0–1.0.

Overlays are not configuration. They are session content controlled by overlay_set, overlay_remove, and overlay_clear; list them with GET /api/extensions/overlays. They are cleared when the process exits and are not restored at startup.