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 gives you a complete menu framework for color TFT displays on ESP32 and ESP8266. With just a few lines of C++, you get multi-level menus, a settings system with persistent storage, professional popups, smooth animations, and flexible input handling — all built on top of TFT_eSPI.

Installation

Install OpenMenuOS via Arduino Library Manager or ZIP in under a minute.

Quickstart

Build your first menu with buttons, settings, and popups in minutes.

Core Concepts

Understand screens, navigation, input handling, settings, and theming.

API Reference

Full reference for every class, method, and configuration option.

What you can build

OpenMenuOS handles the heavy lifting so you can focus on your application logic. It adapts to any display size and works with both button and rotary encoder input out of the box.

Multi-level menus

Unlimited depth menu structures with scrollbars and smooth animations.

Settings screens

Boolean toggles, numeric ranges, option lists, and sub-screen links with automatic EEPROM persistence.

Popup dialogs

Five built-in popup types — Info, Success, Warning, Error, and Question — with auto-close and custom icons.

Custom screens

Full-canvas drawing with your own lambda functions for bespoke UI pages.

Get started in three steps

1

Install the library

Open Arduino IDE, go to Tools → Manage Libraries, search for OpenMenuOS, and click Install. TFT_eSPI will be installed automatically as a dependency.
2

Create your screens and menu

#include "OpenMenuOS.h"

OpenMenuOS menu(19, -1, 2); // UP, DOWN (disabled), SELECT pins
MenuScreen mainMenu("Main Menu");
SettingsScreen settings("Settings");
3

Initialize and run

void setup() {
  settings.addBooleanSetting("WiFi", true);
  mainMenu.addItem("Settings", &settings);
  menu.useStylePreset("Rabbit_R1");
  menu.begin(&mainMenu);
}

void loop() {
  PopupManager::update();
  menu.loop();
}
OpenMenuOS requires the TFT_eSPI library (v2.5.0 or later). Make sure your User_Setup.h is configured for your specific display before using OpenMenuOS.

Build docs developers (and LLMs) love