{% extends "app_base.html" %} {% block title %}{{ frame.name or "Frame" }} ยท Configuration{% endblock %} {% block page_title %}{% include "_frame_name_edit.html" %}{% endblock %} {% block device_status %}{% include "_device_status_bar.html" %}{% endblock %} {% block tabs %}{% include "_frame_tabs.html" %}{% endblock %} {% block content %}

Display settings

Quiet hours times are interpreted in this timezone. The device may still wake once right at the start of quiet hours -- it can't know ahead of time -- but goes right back to sleep until they end.

Hold actions

Holding NEXT or BACK past this duration runs a frame-wide action instead of each widget's normal short-press binding (set per-widget in that widget's own config dialog). Not scoped to any widget -- e.g. cycling through your saved layouts.

Firmware update

{% if frame.device_board_variant %}Detected board: {{ frame.device_board_variant }} {% else %}Board not detected yet -- the frame reports it on its next check-in.{% endif %}

{% if frame.firmware_available_version %}Uploaded: v{{ frame.firmware_available_version }} -- the frame updates itself on its next wake if it's running something else.{% else %}No firmware uploaded yet.{% endif %}

Gitea repo: {{ frame.firmware_update_repo_url }}

While on, this frame installs whatever the repo above publishes next, with nobody reviewing it first -- only point it at a repo you trust.

Battery alerts

Sent once per discharge cycle to the frame owner's email (set in Settings) -- clear the field to disable. Needs SMTP configured by an admin.

Advanced configuration

Color-quantization values used for every widget except photos (which has its own separate settings below) -- approximations by default, since exact primaries aren't published. Tune them by comparing a rendered widget against the physical panel; different panel units can vary enough to be worth calibrating per frame.

{% set current_palette = frame.palette_rgb or default_palette_rgb %} {% set current_hex = palette_to_hex(current_palette) %} {% for label in palette_labels %} {% endfor %}
ColorHexRGB
{{ label }}

Image adjustments

1.00 is unchanged for color/ contrast. Dithering strength trades noise texture for smoother gradients as it goes down; 0 is a flat, un-dithered quantization. Use the preview below to compare.

Experimental: a community-measured starting point (not this specific panel) -- fills the table above, doesn't save by itself. Real Spectra 6 ink is duller than the idealized defaults; this may or may not match your actual unit. Compare against the physical panel before keeping it.

Theme

A curated visual style for widgets using the "modern" (experimental) render style -- font, corner radius, shadow, and header accent. Widgets rendered in the classic style are unaffected. Photos are unaffected too (see Photos configuration below).

Photos configuration

Palette and dithering used only by the photos widget, independent of Advanced configuration above -- lets you tune the rest of this frame's widgets (e.g. a "modern" HTML-rendered look) without changing what looks best for actual photographs, or vice versa.

{% set current_photo_palette = frame.photo_palette_rgb or default_palette_rgb %} {% set current_photo_hex = palette_to_hex(current_photo_palette) %} {% for label in palette_labels %} {% endfor %}
ColorHexRGB
{{ label }}

Preview

{% if photo_widget_id %}

The current photo (from this frame's photo widget), and exactly how it renders on the panel with this frame's saved settings above.

Now displaying

Original photo

How it will look on the frame

Rendered preview
{% else %}

This frame doesn't have a photo widget to preview against yet -- add one from the Layout tab.

{% endif %}
{% endblock %} {% block scripts %} {% endblock %}