Use session.display to show content on the user’s glasses. Every display method sends content to the glasses HUD immediately, replacing whatever was previously shown.

Text Wall

The most common display method. Shows a block of text on the screen:
session.display.showTextWall("Hello from MentraOS!");
Multi-line content:
session.display.showTextWall(
  "Line 1\n" +
  "Line 2\n" +
  "Line 3"
);
Live captions pattern - update the display as the user speaks:
session.transcription.on((data) => {
  session.display.showTextWall(data.text);
});

Double Text Wall

Two text blocks side by side (or top and bottom, depending on the glasses model):
session.display.showDoubleTextWall("Left side", "Right side");
Useful for showing a question and answer, original text and translation, or any two-column layout:
session.translation.to("es", (data) => {
  session.display.showDoubleTextWall(data.originalText, data.text);
});

Text

Show a simple text string. For short messages and status updates:
session.display.showText("Connected");
You can also pass an array of strings:
session.display.showText(["Line 1", "Line 2", "Line 3"]);

Reference Card

A card with a title and body. Good for structured information:
session.display.showReferenceCard("Weather", "Sunny, 72°F\nHumidity: 45%");

Dashboard Card

A compact card for the dashboard view:
session.display.showDashboardCard("12:30 PM", "☀️ 72°F");

Bitmap

Send raw bitmap data to the display. For custom graphics and images:
session.display.showBitmap(bitmapData);

Clearing the Display

Remove all content from the screen:
session.display.clear();

Views

Display content can target different views on the glasses:
import { ViewType } from "@mentra/sdk";

// Main view - what the user normally sees
session.display.showTextWall("Main content", {
  view: ViewType.MAIN,
});

// Dashboard view - shown when the user looks up
session.display.showTextWall("Dashboard content", {
  view: ViewType.DASHBOARD,
});
If you don’t specify a view, content goes to the main view by default.

Duration

Control how long content stays on screen:
session.display.showTextWall("Temporary message", {
  durationMs: 5000, // Disappears after 5 seconds
});
If no duration is set, content stays until replaced by the next display call or cleared.

Display Capabilities

Different glasses have different display capabilities. Some have one eye, some have two. Some support bitmaps, some only support text. Check what the connected glasses can do:
const caps = session.capabilities;

if (caps?.hasDisplay) {
  session.display.showTextWall("This device has a display");
}
See Hardware Capabilities for details on what each glasses model supports.

Best Practices

Keep text concise. Glasses displays are small. Short messages are easier to read at a glance.
// Good - scannable
session.display.showTextWall("Meeting in 5 min - Room A");

// Avoid - too much text for a glance
session.display.showTextWall(
  "You have an upcoming meeting scheduled in approximately 5 minutes. " +
  "The meeting will take place in Conference Room A on the second floor."
);
Update frequently for live content. For captions or real-time data, call showTextWall on every update. The display replaces the previous content instantly. Use the right layout for the content. Text walls for flowing text, reference cards for structured data, double text walls for side-by-side comparison.

Migrating from v2

The API is the same, just on session.display instead of session.layouts:
// v2
session.layouts.showTextWall("Hello");
session.layouts.showDoubleTextWall("Left", "Right");
session.layouts.showReferenceCard("Title", "Body");
session.layouts.clear();

// v3
session.display.showTextWall("Hello");
session.display.showDoubleTextWall("Left", "Right");
session.display.showReferenceCard("Title", "Body");
session.display.clear();
See the Migration Guide for the full list of changes.