Files
cuframes-composer/docker/templates.json
T
gx f8e27b9e85 Phase 10/11 WIP — pool + motion-mode + 8×8 templates (rolled back)
Объединённое состояние работ:
  - Phase 10: source pool, motion-driven layout, Frigate motion_pulse,
    zone-filter в pool, --source / --motion-mode CLI
  - Phase 11 Steps 1-3c: 8×8 микро-сетка, JSON templates с asymmetric
    layouts (tpl_1/3/4/5/6/7/8), reload через ZMQ, auto-labels per camera

В прод отдеплоено и откачено: используем gx/cuframes-composer:0.10 как
baseline. Phase 11 продолжится в branch phase11b-cpp как C++ refactor
с ООП-моделью Cell/Layout/Decoration.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 21:24:23 +01:00

91 lines
4.6 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"version": 1,
"grid_cols": 8,
"grid_rows": 8,
"_doc": "Layout-templates для cfc-grid auto-layout. Координаты в микроячейках 8×8 (output 1920×1080 → каждая микроячейка 240×135 px, 16:9). Квадраты N×N микроячеек тоже 16:9. role=camera — заполняется из активных камер по priority. role=widget — placeholder.",
"templates": [
{
"name": "tpl_1",
"_desc": "1 камера во весь экран.",
"cells": [
{"col": 0, "row": 0, "cs": 8, "rs": 8, "role": "camera", "order": 0}
]
},
{
"name": "tpl_3",
"_desc": "Главная 1440×810 слева + 2 превью 480×270 справа стопкой, остаток — виджеты.",
"cells": [
{"col": 0, "row": 0, "cs": 6, "rs": 6, "role": "camera", "order": 0},
{"col": 6, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
{"col": 6, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 2},
{"col": 6, "row": 4, "cs": 2, "rs": 4, "role": "widget", "widget": "temp_chart"},
{"col": 0, "row": 6, "cs": 6, "rs": 2, "role": "widget", "widget": "ha_chat"}
]
},
{
"name": "tpl_4",
"_desc": "Quad 2×2: 4 камеры 960×540. order=0 — top-left (главная).",
"cells": [
{"col": 0, "row": 0, "cs": 4, "rs": 4, "role": "camera", "order": 0},
{"col": 4, "row": 0, "cs": 4, "rs": 4, "role": "camera", "order": 1},
{"col": 0, "row": 4, "cs": 4, "rs": 4, "role": "camera", "order": 2},
{"col": 4, "row": 4, "cs": 4, "rs": 4, "role": "camera", "order": 3}
]
},
{
"name": "tpl_5",
"_desc": "1 главная + 4 превью справа стопкой, нижняя полоса — виджет.",
"cells": [
{"col": 0, "row": 0, "cs": 6, "rs": 6, "role": "camera", "order": 0},
{"col": 6, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
{"col": 6, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 2},
{"col": 6, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 3},
{"col": 6, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 4},
{"col": 0, "row": 6, "cs": 6, "rs": 2, "role": "widget", "widget": "ha_chat"}
]
},
{
"name": "tpl_6",
"_desc": "1 главная + 3 правые + 2 нижние, остаток — виджет.",
"cells": [
{"col": 0, "row": 0, "cs": 6, "rs": 6, "role": "camera", "order": 0},
{"col": 6, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
{"col": 6, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 2},
{"col": 6, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 3},
{"col": 0, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 4},
{"col": 2, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 5},
{"col": 4, "row": 6, "cs": 4, "rs": 2, "role": "widget", "widget": "info"}
]
},
{
"name": "tpl_7",
"_desc": "1 главная + 3 правые + 3 нижние, угол — виджет.",
"cells": [
{"col": 0, "row": 0, "cs": 6, "rs": 6, "role": "camera", "order": 0},
{"col": 6, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
{"col": 6, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 2},
{"col": 6, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 3},
{"col": 0, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 4},
{"col": 2, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 5},
{"col": 4, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 6},
{"col": 6, "row": 6, "cs": 2, "rs": 2, "role": "widget", "widget": "ha_chat"}
]
},
{
"name": "tpl_8",
"_desc": "1+3+4 — главная + 3 правые + полная нижняя строка.",
"cells": [
{"col": 0, "row": 0, "cs": 6, "rs": 6, "role": "camera", "order": 0},
{"col": 6, "row": 0, "cs": 2, "rs": 2, "role": "camera", "order": 1},
{"col": 6, "row": 2, "cs": 2, "rs": 2, "role": "camera", "order": 2},
{"col": 6, "row": 4, "cs": 2, "rs": 2, "role": "camera", "order": 3},
{"col": 0, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 4},
{"col": 2, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 5},
{"col": 4, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 6},
{"col": 6, "row": 6, "cs": 2, "rs": 2, "role": "camera", "order": 7}
]
}
]
}