User Guide

Everything you need to build
stunning touchscreen UIs.

Drag widgets, style properties, export YAML - all from one canvas.

Video Tutorial

Build a basic dashboard from scratch in under 4 minutes.

Interface Overview

The four panels that make up your workspace

4 items
1

Header Bar

Contains the main title and action buttons:

YAML - Export current design as YAMLPreview - Open interactive preview modeImport - Import YAML configurationHelp - Access help and documentation
2

Toolbox (Left Panel)

Contains all available widgets organized by category. Drag widgets onto the canvas to add them to your design.

3

Canvas (Center Area)

The main editing area where you place and arrange your widgets. Represents your display.

4

Properties Panel (Right Sidebar)

Shows properties of the selected widget. Adjust position, size, colors, and other widget-specific settings.

Working with Widgets

Drag, drop, resize, and style

7 items
1

Adding Widgets

Drag any widget from the Toolbox onto the canvas to add it. You'll see a preview as you drag.

2

Selecting Widgets

Click on any widget to select it. Selected widgets show a blue highlight. Use the properties panel to modify.

3

Moving Widgets

Drag a selected widget to move it. Use arrow keys for 1-pixel increments.

4

Resizing Widgets

Use the Width and Height fields in the properties panel to resize widgets.

5

Deleting Widgets

Select a widget and press Delete or Backspace to remove it from your design.

6

Reparenting (Nesting)

Drag a widget over a container and hold for ~350ms to drop it inside (dashed outline turns solid green on dwell). Drag a nested widget outside its container by more than 20px to break it out to an ancestor or the canvas root. Cross-container moves reset the child position to (0, 0).

7

Cycling Overlapping Widgets

Hold ⌘/Ctrl and click to cycle through stacked widgets at the click point when multiple widgets overlap.

Grouping

The four panels that make up your workspace

5 items
1

What is a Group?

Any container with children (obj, button, tabview, etc.) can be marked as a group. Groups are locked by default - clicking or dragging a child bubbles up to the group so you can move or resize the whole thing as one unit.

2

Entering and Exiting a Group

Double-click a group to enter its scope - children become individually selectable and movable. Press Escape to exit back to the parent scope. Groups can be nested to any depth; entering only unlocks one level at a time.

3

Making a Group

Select a container with at least one child and press ⌘G (or use the Make Group action from the context menu or sidebar hover). This toggles the container's isGroup flag.

4

Ungrouping

Press ⌘⇧G or pick Ungroup from the context menu to unwrap the group - children are moved up into the parent container and the group wrapper is removed.

5

Resizing a Group

Dragging the resize handle on a group scales all its children proportionally, preserving their relative layout.

Context Menus

The four panels that make up your workspace

4 items
1

Canvas Widget Menu

Right-click a widget on the canvas for Copy, Cut, Paste, Duplicate, Delete, Bring to Front, Send to Back, Enter/Exit/Make/Ungroup, and Return to Canvas (when a widget is positioned off-screen). When multiple widgets overlap at the click point, the menu also lists each layer so you can pick a specific one.

2

Canvas Background Menu

Right-click empty canvas to Paste from the clipboard, or use Paste Here to drop the clipboard contents at the click position.

3

Tab Bar Menu

Right-click a canvas tab for Rename (inline), Duplicate Tab, and Close Tab. Close is disabled when only one tab remains and shows a confirmation when the tab still has widgets.

4

Sidebar Elements Menu

Right-click any row in the Elements tree for Copy, Cut, Paste, Move Up, Move Down, Delete, and all of the group actions (Enter / Exit / Make / Ungroup). Nested rows also offer Duplicate.

Snap & Alignment Guides

The four panels that make up your workspace

4 items
1

Grid Snap

Widgets snap to a 10px grid during move and resize. Hold Alt (⌥) to bypass the grid for pixel-precise positioning.

2

Edge & Center Alignment

Pink dashed guides appear when a widget's edge or center lines up with a sibling, the canvas center, or the canvas padding boundary.

3

Equal Spacing

When a widget sits equidistant between two siblings, a pink pill shows the matching spacing so you can build evenly distributed layouts.

4

Aspect Ratio Lock

Hold Shift while dragging the resize handle to preserve the widget's original aspect ratio.

Canvas Management

Multi-screen designs made simple

2 items
1

Canvas Tabs

Create multiple canvases to organize different screens or layouts:

Click "+" to add a new canvasClick the × on a tab to close it (disabled when only one tab remains; confirms if the tab has widgets)Click a tab to switch between canvasesRight-click a tab for Rename, Duplicate Tab, and Close TabEach tab has its own widgets, canvas size, background, padding, and undo/redo historyExport YAML can include a single tab or all selected tabs as a multi-page config
2

Canvas Properties

Each canvas has adjustable width and height in pixels. This represents the target display size for your ESP32 device.

Preview Mode

The four panels that make up your workspace

3 items
1

Opening Preview

Press ⌘P or click the Preview button in the header to open an interactive preview of the current canvas. Press Escape or click the close button to exit.

2

Interactive Widgets

In preview mode, widgets respond to user input the way they would on a real device:

Button - click to see press feedback; if checkable, toggles its checked stateCheckbox / Switch - click to toggleLED - click to toggle on/offSlider - click and drag horizontally to change the valueArc - click and drag around the arc to set the value (only when the arc is marked adjustable)Tabview - click a tab header to switch pagesTileview - scroll or swipe between tiles
3

Display Filters

Preview mode honors the canvas e-paper and invert-color settings so you can see how your design looks on the target display technology.

Undo & Redo

The four panels that make up your workspace

3 items
1

Scope

Every canvas tab keeps its own undo history. Switching tabs does not clear history - each tab remembers its own timeline of edits.

2

What's Tracked

Widget add / delete / move / resize, property edits, grouping / ungrouping, reparenting (drag to nest), and YAML import all produce a history snapshot. Auto-saved layout restoration and purely UI-level actions (panel resize, theme toggle) are not tracked.

3

Shortcuts

Use ⌘Z to undo, ⌘⇧Z or ⌘Y to redo. The buttons in the canvas toolbar mirror the shortcuts.

Component Library

The four panels that make up your workspace

3 items
1

Browsing Packs

Click the Components link in the header to browse ready-made designs grouped into packs (Smart Home, Retro, WiFi Setup, Round Displays, and more). Free packs are always available; pro packs show a preview and unlock after purchase.

2

Customizing a Component

Open any component for a preview plus a properties panel where you can tweak text, colors, and numeric params before bringing it into your design.

3

Adding to the Canvas

Use the "Add to Designer" action to drop the component into the currently active canvas tab. The component is imported as a fully-editable widget tree - you can ungroup it, tweak widgets individually, or rearrange layers afterwards.

Property Types

Position, size, color, and more

4 items
1

Position (X, Y)

Coordinates in pixels from the top-left corner of the canvas.

2

Size (Width, Height)

Dimensions in pixels.

3

Colors

Use the color picker or enter hex values (#RRGGBB) or LVGL hex format (0xRRGGBB).

4

Text

Text content for labels, buttons, and other text widgets.

Saving, Importing & Exporting

The four panels that make up your workspace

4 items
1

Auto-Save

Your work is automatically saved to browser local storage whenever you make a change - widgets, canvas settings, and undo history all persist across reloads. You can trigger an explicit save with ⌘S.

2

Export YAML

Press ⌘E or click the YAML button to open the export modal. You can export just the active tab or multiple tabs as a multi-page ESPHome lvgl config. The generator emits per-widget properties, grid / flex layout blocks, and a deduplicated top-level image: section for any images referenced by URL.

3

Import YAML

Press ⌘I or click Import to paste an ESPHome YAML config. The importer auto-detects whether the YAML is a full ESPHome document or a simple widget array, resolves top-level image: definitions back into widget properties, and can either replace the active canvas or append to it. Each import is a single undo step.

4

Image Assets

Image and imagebutton widgets reference public URLs - ESPHome downloads and bakes the image into firmware at compile time. The image_resize property and the widget dimensions stay in bidirectional sync on the canvas.

Widget Gallery

21 widgets ready to drag onto your canvas

Input10
ButtonSwitchCheckboxSliderDropdownRollerSpinboxKeyboardTextAreaButton Matrix
Display6
LabelBarArcLEDSpinnerQR Code
Layout5
ObjectContainerTabviewTileviewLine
espboards.dev ESPboards.dev ·Made for the ESPHome community

ESPHome LVGL Designer · also known as ESPHome Designer, ESPHome LVGL UI Designer, ESPHome LVGL Editor, LVGL Designer for ESPHome, ESPHome LVGL online editor, and ESPHome LVGL GUI builder. A free online ESP32 LVGL UI editor for the ESPHome community.