GESTALT
Generating EPICS Screens Through Assembling Layout Templates
Gestalt is a Python tool that generates EPICS control system GUI screens from YAML layout files. Write your screen once, then generate output for caQtDM, CSS-Phoebus, or PyDM.
What it looks like
A short YAML layout:
#include widgets.yml
Form: !Form
title: "$(P) Status"
Header: !Apply:ScreenHeader { title: "Device Status" }
Controls: !VFlow
geometry: 0x35 x 0x0
padding: 5
children:
- !Apply:PVReadWrite
label: "Setpoint:"
entry-pv: "$(P)$(R)Setpoint"
read-pv: "$(P)$(R)Setpoint:RBV"
units: "mm"
- !Apply:PVReadWrite
label: "Speed:"
menu-pv: "$(P)$(R)Speed"
read-pv: "$(P)$(R)Speed:RBV"
Run gestalt to produce a .ui file for caQtDM, a .bob file for Phoebus, or either format for PyDM – all from the same layout.
python gestalt.py --to ui --output status.ui layout.yml
python gestalt.py --to bob --output status.bob layout.yml
Documentation
Learn Quick start tutorial and guided screen-building walkthrough.
Concepts Core concepts, macro resolution, and architecture.
Guides Installation, command-line usage, custom templates, and build integration.
Reference Complete reference for all node types and built-in templates.