phoebusgen
Screen generator for CS-Studio Phoebus displays
What it is and what it does
phoebusgen is a Python library that generates Phoebus Display Builder XML—the format used by Phoebus, the next-generation control interface for EPICS control systems. Instead of manually editing XML or using the graphical editor, you define screens and widgets as Python objects, configure their properties through method calls, and serialize them to .bob files ready for Phoebus to open. It covers all standard Phoebus widgets and supports multiple Phoebus versions through configurable widget definitions.
The library is organized around two main modules: phoebusgen.widget provides Python classes for every Phoebus widget type with methods to set colors, fonts, and other properties; phoebusgen.screen wraps a collection of widgets into a complete screen object. You can nest widgets inside containers like Group or Tab, override site-specific color and font definitions via configuration files, and target different Phoebus releases by changing the active version. It has minimal dependencies—only dataclasses—making it lightweight to integrate into build pipelines or automation scripts.
Use it for:
- Automate generation of repetitive EPICS control screens from a template or database of PV names
- Version-control screen definitions as Python code rather than binary or XML files
- Programmatically create screen variants for different Phoebus versions without manual editing
- Integrate screen generation into CI/CD pipelines for control system deployments
- Generate screens dynamically based on runtime configuration or device discovery
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Generates Phoebus Display Builder XML format programmatically from Python, allowing you to create control system UI screens as code rather than through the graphical editor.
Yes, if you work with Phoebus and EPICS control systems and want to automate or version-control screen generation. The package is actively maintained, has no security vulnerabilities, and carries low install friction. The GPLv2 license is a consideration only if you plan to distribute proprietary derivatives; internal use is unrestricted. Install it if screen-as-code fits your workflow; skip it if you only occasionally edit screens in the GUI.
Install
phoebusgen on PyPI
pip
pip install phoebusgenuv
uv add phoebusgenpoetry
poetry add phoebusgenInstalling phoebusgen
Before you install
Low friction: pure Python wheel with only dataclasses as a runtime dependency. Active maintenance with a recent release and ongoing repository activity.
License in practice
GPLv2 copyleft license requires that any derivative work or distribution must also be licensed under GPLv2 and include source code availability. This is restrictive for proprietary applications but poses no issue for internal or open-source use.
Quickstart
pip install phoebusgen
import phoebusgen
widget = phoebusgen.widget.TextUpdate('my_widget', 'TEST:PV', 10, 20, 20, 50)
screen = phoebusgen.screen.Screen('my_screen')
screen.add_widget(widget)
print(screen) # outputs Display Builder XML
Verify before relying
- Whether version-specific widget definitions beyond 4.7.3 are maintained or planned
- Performance characteristics when generating screens with many widgets
Package facts
| License | GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and… (full text in the JSON record) (copyleft) |
| Python support | supports the current Python release (>=3.6) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — dataclasses |
| Maintenance | actively maintained — 65 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 127,338/month — #11,747 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: phoebusgen-3.3.0-py3-none-any.whl
Tags
More Code Generators packages
Proto Plus wraps protocol buffers to provide…
permissive · top 1,000 on PyPI
CythonCython is a source code translator that…
permissive · top 1,000 on PyPI
asttokensAnnotates Python abstract syntax trees with the…
permissive · top 1,000 on PyPI
beartypeBeartype is a runtime type checker that…
permissive · top 1,000 on PyPI
llvmlitellvmlite provides a lightweight Python binding…
permissive · top 1,000 on PyPI
astorastor converts Python abstract syntax trees…
permissive · top 5,000 on PyPI
epik8s-toolsAutomates project structure, Helm chart, and…
permissive · top 15,000 on PyPI
epicscorelibsProvides compiled EPICS Core libraries and…
unclear · top 15,000 on PyPI
magicguiMagicgui builds graphical user interfaces…
permissive · top 15,000 on PyPI
ophydOphyd provides a Python abstraction layer for…
permissive · top 15,000 on PyPI
junit-xmlGenerates JUnit XML test result documents…
permissive · top 5,000 on PyPI
ipylabipylab lets you control JupyterLab's interface…
permissive · top 15,000 on PyPI
PyXB-XPyXB-X generates Python classes from XMLSchema…
permissive · top 15,000 on PyPI
ipyvueProvides a Jupyter widget base for building…
permissive · top 15,000 on PyPI
junit-xml-2Generates JUnit XML test result reports from…
permissive · top 15,000 on PyPI