OpenMenuOS is an Arduino library that lets you build complete, interactive menu systems on color TFT displays — without writing your own rendering, input handling, or settings persistence code. Built on top of TFT_eSPI, it targets ESP32 and ESP8266 boards and handles everything from scrollable item lists to a full popup dialog system, all driven by buttons or a rotary encoder.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/The-Young-Maker/OpenMenuOS/llms.txt
Use this file to discover all available pages before exploring further.
OpenMenuOS requires TFT_eSPI >= 2.5.0 as a dependency. Install it from the Arduino Library Manager before installing OpenMenuOS. Your TFT_eSPI
User_Setup.h must be configured for your specific display and board.Key features
Multi-level menus
Create unlimited nested
MenuScreen instances. The library tracks navigation history automatically and provides a navigateBack() function to return up the stack.Settings system
Add boolean toggles, numeric ranges, option lists, and sub-screen links to a
SettingsScreen. Values are persisted automatically — Preferences on ESP32, EEPROM on ESP8266.PopupManager
Five built-in popup types (Info, Success, Warning, Error, Question) with auto-close, word wrapping, and encoder navigation. Call
PopupManager::update() in loop() to handle interactions non-blocking.Rotary encoder support
Pass CLK and DT pins to
setEncoderPin() to enable encoder navigation across menus, settings, and popups — no extra libraries required.Customizable themes
Apply built-in style presets (
"Default", "Rabbit_R1") or tune selection colors, scrollbar style, fonts, and animations individually.Custom screens
Attach a
customDraw lambda to a CustomScreen to render anything TFT_eSPI supports — shapes, images, live data — while the library handles back navigation.Hardware requirements
Supported microcontrollers
- ESP32 (all variants)
- ESP8266 (NodeMCU, Wemos D1 Mini, etc.)
Display
- Any TFT display supported by TFT_eSPI
- Minimum recommended resolution: 160×128 pixels
- Color depth: 16-bit RGB565
Input
- Up, Down, and Select buttons (any GPIO; pass
-1to disable unused buttons) - Optional rotary encoder on CLK and DT pins
Memory
| Resource | Usage |
|---|---|
| Flash | ~50 KB |
| RAM | 2–8 KB (varies with display size and features) |
| EEPROM / Preferences | 1–2 KB for settings storage |
Next steps
Installation
Add OpenMenuOS to your project via the Arduino Library Manager or a ZIP download.
Quickstart
Wire up your display and build a working menu in minutes using the example sketch.