Skip to main content

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 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.
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 -1 to disable unused buttons)
  • Optional rotary encoder on CLK and DT pins

Memory

ResourceUsage
Flash~50 KB
RAM2–8 KB (varies with display size and features)
EEPROM / Preferences1–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.

Build docs developers (and LLMs) love