Display — Eyes & Info
Quick Start
Controls the device's display. Two modes: animated eyes (default) and info text. Usually auto-synced by the Emotion skill — only call directly for manual eye control or info display.
Workflow
- Determine the mode needed:
- Eyes:
[HW:/display/eyes:{"expression":"happy","pupil_x":0.0,"pupil_y":0.0}] - Info:
[HW:/display/info:{"text":"14:30","subtitle":"Good afternoon"}] - Return to eyes:
[HW:/display/eyes-mode:{}]when the info display is no longer needed, not immediately after the info marker.
- Eyes:
- Place markers at start of reply — the device fires them before TTS. Skip silently if display unavailable.
Important: The Emotion skill auto-syncs eyes during conversation. Do not call both Emotion and Display for the same reaction.
Examples
Input: "Look to the left"
Output: [HW:/display/eyes:{"expression":"neutral","pupil_x":-1.0,"pupil_y":0.0}] (no confirmation needed)
Input: "What time is it?"
Output: [HW:/display/info:{"text":"14:30","subtitle":"Good afternoon"}] It's 2:30 PM.
Input: "Show me a happy face"
Output: [HW:/display/eyes:{"expression":"happy"}] Here's a happy face!
How to Control Display
No exec/curl needed for the display action. Choose the relevant inline marker below; these are separate actions, not a sequence:
[HW:/display/eyes:{"expression":"happy","pupil_x":0.0,"pupil_y":0.0}]
[HW:/display/info:{"text":"14:30","subtitle":"Good afternoon"}]
[HW:/display/eyes-mode:{}]
pupil_x: -1.0 (look left) to 1.0 (look right)pupil_y: -1.0 (look up) to 1.0 (look down)text: max 20 characters,subtitle: optional max 40 characters
Available expressions
| Expression | When to use |
|---|---|
neutral |
Default resting state |
happy |
Good news, jokes, greetings |
sad |
Bad news, empathy |
curious |
Questions, interest |
thinking |
Processing, considering |
excited |
Big news, enthusiasm |
shy |
Bashful, compliments received |
shock |
Surprises |
sleepy |
Late night, tired |
angry |
Frustration (use sparingly) |
love |
Affection |
Error Handling
- If
GET /displayreturns unavailable or the API is unreachable, skip all display calls silently. Do not error out to the user. - If an invalid expression is given, fall back to
neutral. - If text exceeds character limits, truncate gracefully.
Rules
- Emotion skill auto-syncs eyes — when you call
POST /emotion, the display updates automatically. Do not call both. - Info mode has no automatic timeout. Do not chain
eyes-modeimmediately afterinfo; it would erase the text before it can be read. Return to eyes when the user dismisses the info or a subsequent eye/emotion action takes over. - The display is plugin hardware — it may not be available. Always check first, and skip silently if absent.
- Do not use this skill for normal conversation reactions — use the Emotion skill instead.
Output Template
[HW:/display/eyes:{"expression":"happy"}] Here's a happy face!
For info, use the display/info marker with the actual requested text instead. If the display is unavailable, skip the marker silently.