Glyphs vanilla ui
Queries Vanilla GUI library (schriftgestalt/vanilla fork) for Glyphs 3 plugin UI development. Use when building plugin UIs with windows, buttons, text fields, or lists, finding available Vanilla components, or looking up component APIs like Window, List2, or PopUpButton parameters.From its SKILL.md
npx -y skills add yintzuyuan/glyphs-reference --skill glyphs-vanilla-uiAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.2 KB, as published. Nobody here has run it
Vanilla GUI Library Skill
Query the Vanilla GUI library (schriftgestalt/vanilla fork) used by Glyphs 3 for building plugin UIs — windows, buttons, text fields, lists, and more.
Run all scripts from this skill's base directory. Prepend the base directory path to
scripts/when executing.
Vanilla Path
${GLYPHS_VANILLA_PATH:-~/Library/Application Support/Glyphs 3/Repositories/vanilla/Lib/vanilla}
If GLYPHS_VANILLA_PATH is not set, try GLYPHS_REPOSITORIES_PATH/vanilla/Lib/vanilla, then the default path above.
Quick Start: Browse All Components
Read __init__.py (≈107 lines) to see every exported class and which module it comes from:
Read $VANILLA/__init__.py
This shows all from vanilla.moduleName import ClassName lines — the complete component inventory.
Quick Start: Read a Component
For multi-class files (vanillaWindows.py, vanillaList2.py, etc.), use the script to extract a single class:
python3 scripts/read_component.py Button # Full: source + docstring + methods
python3 scripts/read_component.py Window --summary # Summary: methods list (no source)
For single-class files (vanillaCheckBox.py, vanillaSlider.py, etc.), just Read directly:
Read $VANILLA/vanillaCheckBox.py
Quick Start: Search Components
# Find a component by keyword
Grep "class.*Button" $VANILLA/
# Find all classes in a module
Grep "^class " $VANILLA/vanillaWindows.py
# Find usage of a specific method
Grep "def setTitle" $VANILLA/
Quick Start: Official Documentation
Fetch component docs from the vanilla website:
WebFetch https://vanilla.robotools.dev/en/latest/objects/{ComponentName}.html
Replace {ComponentName} with the actual class name (e.g., Button, Window, List2).
Glyphs-Specific Notes
Palette Plugins Use Group, Not Window
Palette plugins receive a Group as their container — never create a Window inside a palette. Use Group with embedded controls.
posSize Convention
All Vanilla components use posSize = (left, top, width, height):
- Use
"auto"for Auto Layout managed dimensions - Negative values for
width/heightmean "from right/bottom edge"
Auto Layout
Use VerticalStackView and HorizontalStackView for modern Auto Layout UIs instead of manual posSize positioning.
GridView
GridView is conditionally imported (requires macOS 10.12+). It appears in a try/except block at the bottom of __init__.py.
Common Workflow
- Find component →
Read $VANILLA/__init__.pyto browse all exports - Read API →
python3 scripts/read_component.py ComponentNamefor details - Check docs →
WebFetch https://vanilla.robotools.dev/en/latest/objects/ComponentName.html - Search patterns →
Grep "pattern" $VANILLA/for usage examples
Reference
See references/component-categories.md for categorized component guide.