Quick Start
Table of contents
Generate your first EPICS control screen in under five minutes.
1. Create a layout file
Create a file called hello.yml with the following contents:
#include colors.yml
Form: !Form
title: "Hello Gestalt"
Title: !Text
geometry: 200x30
text: "My First Screen"
font: -Liberation Sans - Bold
foreground: *white
background: *header_blue
alignment: Center
Status: !TextMonitor
geometry: 0x40 x 200x20
pv: "$(P)Status"
foreground: *black
background: *transparent
This layout defines a screen with two widgets: a static text label and a PV readback monitor.
A few things to notice:
#include colors.ymlpulls in Gestalt’s built-in color definitions (like*white,*header_blue,*black, and*transparent). These are YAML anchors that resolve to hex color values.!Formsets properties for the screen window itself.!Textand!TextMonitorare Gestalt node tags. Each one produces a widget in the output file.geometryuses the formatWidthxHeightorXxYxWidthxHeight.fontuses a leading dash:-FontNameor-FontName - Style - Size.- PV names can contain EPICS macros like
$(P)that get substituted at runtime.
2. Generate output
Run Gestalt from the command line to produce a caQtDM .ui file:
python gestalt.py --to ui --output hello.ui hello.yml
Or generate a CSS-Phoebus .bob file:
python gestalt.py --to bob --output hello.bob hello.yml
Both commands read the same hello.yml layout and produce a screen file in the requested format. Open the output in caQtDM or Phoebus to see your screen.
3. Use a built-in template
Gestalt ships with reusable widget templates. Include widgets.yml to get access to all of them:
#include colors.yml
#include widgets.yml
Form: !Form
title: "Hello Gestalt"
Content: !VFlow
padding: 5
children:
- !Apply:PVReadWrite
label: "Setpoint:"
entry-pv: "$(P)Setpoint"
read-pv: "$(P)Setpoint:RBV"
units: "mm"
- !Apply:PVReadWrite
label: "Speed:"
menu-pv: "$(P)Speed"
read-pv: "$(P)Speed:RBV"
!Apply:PVReadWrite expands into a complete horizontal row with a label, input field, readback, and units display. You only provide the PVs and it assembles everything else with sensible defaults. Each element only appears when its corresponding parameter is set.
Next steps
- Core Concepts – Learn the vocabulary: nodes, data types, includes, templates, and output formats.
- Building a Screen – A guided tutorial that builds a complete control screen step by step.
- Installation – Detailed setup instructions and dependencies.