Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Repository files navigation

Glint logo

GLINT

The HUD-first web framework for smart glasses.

Build glanceable web apps for Meta Ray-Ban Display — 600×600, Neural Band, zero dependencies.

live demo version license made for dependencies PRs welcome

English · 한국어

Glint — three curated palettes running on the 600×600 HUD

Why

Meta opened Ray-Ban Display to third-party Web Apps — plain HTML/CSS/JS rendered on the glasses and shared by URL. But the display is a strange canvas: 600×600, no cursor, driven by a Neural Band and temple touch, and (during the preview) each app is capped at ~100 testers.

Glint is the missing app layer. It gives you a launcher-hub: ship one URL that hosts a whole suite of small, glanceable utilities — sidestepping the per-app cap and claiming the "home screen" before an official store exists. It's ~9 KB, has zero dependencies, and there's no build step to start.

Status — built against Meta's Wearables Device Access Toolkit / Web Apps developer preview. Public publishing isn't open yet; this is a head start, not a store submission.

Showcase

Three curated palettes, switchable at runtime. Same UI, different soul.

Ember · SLSO8 Nyx · Nyx8 Apollo · Apollo
Instrument-style compass

Instrument-style compass — real tick bezel and needle, not primitive shapes.

Features

  • 🥽 HUD-first — a fixed 600×600 stage that scales to any viewport (≈1:1 on the glasses).
  • 🎯 Spatial focus navigation — no cursor; a focus ring moves with up/down, selects on activate.
  • 🖐 Input adapter — keyboard + touch for dev, real Neural Band / Cap Touch wired in one place.
  • 🧩 Launcher-hub router — many utilities behind a single URL.
  • 🎨 Curated palettes — Ember / Nyx / Apollo as design tokens; add your own in 8 hex values.
  • ✒️ Real line icons — inline, Lucide-style, colored by currentColor. No emoji, no icon-font.
  • 📦 Zero dependencies, no build required — plus an optional one-command single-file build.
  • 🧰 Ten apps included — clock, timer, stopwatch, weather, compass, level, notes, converter, a component gallery, and docs.

Quick start

git clone https://github.com/SillyToolValley/glint && cd glint
npm run dev          # landing + live demo at http://localhost:3000
# the interactive app alone is at /demo.html

Prefer one file? npm run build inlines everything into dist/glint.html — host it anywhere, or open it directly on the glasses.

Controls↑ ↓ navigate · ← → adjust · Enter select · Esc back · touch swipe / two-finger = back.

Deploy

Live site in one command (needs gh authenticated):

bash scripts/deploy.sh glint      # creates the repo, pushes, enables GitHub Pages
# → https://<you>.github.io/glint/

A Pages workflow redeploys on every push to main.

To the glasses

  1. Host the folder (or dist/glint.html) on any static host — GitHub Pages, Vercel, Netlify.
  2. Open the URL on your Ray-Ban Display via the Meta AI app (developer mode on).
  3. During the preview, share a password-protected URL with up to ~100 testers.

Docs: wearables.developer.meta.com/docs/develop/webapps

Theming

Themes are curated lospec palettes, shipped as token blocks in glint.css:

Theme Palette Feel
Ember SLSO8 warm amber on deep navy — instrument HUD
Nyx Nyx8 soft peach on near-black — moody, elegant
Apollo Apollo cool teal on warm greys — clean, technical

Switch at runtime:

document.documentElement.dataset.theme = 'nyx';

Add your own by copying a [data-theme="…"] block and dropping in eight values (--stage --surface --surface-2 --line --ink --muted --accent --on-accent + --edge). Keep a dark canvas — the display is additive — and one high-legibility accent.

Add an app in ~10 lines

function HelloApp(){
  return Glint.Screen({ title: 'Hello' },
    Glint.Row('Say hi', {
      icon: Glint.icon('plus'),
      onSelect: () => Glint.toast('Hi from the HUD')
    })
  );
}
// register it in the Launcher list (app.js):
Row('Hello', { icon: icon('plus'), sub: 'Demo', onSelect: () => router.push(HelloApp) });

API

API Description
Glint.el(tag, props, ...kids) Minimal hyperscript element builder
Glint.icon(name, size) Inline line icon (stroke = currentColor)
Glint.Screen({title, root, onShow, onHide}, ...kids) Screen with status bar + scroll body
Glint.Row(label, {icon, sub, right, chev, onSelect}) Focusable list row
Glint.Button(label, {variant, icon, onSelect}) Focusable button (primary/ghost/danger)
Glint.Toggle(label, {value, onChange}) On/off switch
Glint.Ring({size, stroke}).set(0..1) SVG progress ring
Glint.toast(msg) Transient HUD notification
Glint.store.get/set(key, val) Persistence (localStorage + memory fallback)
Glint.router.push/pop/home(factory) Screen navigation stack
Glint.focus Spatial focus manager over [data-focus]

Typed via glint.d.ts.

Wire the glasses input — keyboard and touch work out of the box; connect the real Neural Band + Cap Touch events in one place, bindGlassesInput() in glint.js:

// glasses.on('swipe', d => Glint.focus.move(d === 'up' ? -1 : 1));
// glasses.on('pinch', () => Glint.focus.select());
// glasses.on('back',  () => Glint.router.pop());

Every app keeps working unchanged — apps only speak the semantic layer (navigate / select / back).

Project structure

glint/
├── index.html          # landing / showcase site (embeds the live demo)
├── demo.html           # the app shell (loads the sources)
├── glint.js            # runtime: el, icon, focus, input, router, components
├── glint.css           # 3 palette themes + HUD component styles
├── app.js              # helpers + 10 apps (clock, timer, stopwatch, weather…) + boot
├── glint.d.ts          # TypeScript definitions
├── scripts/
│   ├── build.mjs       # inline sources → dist/glint.html
│   └── deploy.sh       # create repo + push + enable GitHub Pages
├── .github/workflows/  # CI + Pages deploy
├── dist/glint.html     # single-file build (generated)
├── LAUNCH.md           # launch posts (HN / X / Product Hunt / Reddit)
└── assets/             # logo, screenshots, hero

Roadmap

  • 2-D grid navigation
  • Voice / speech-to-text capture
  • Notification surfaces
  • create-glint-app scaffold + React/TS binding
  • A public showcase of apps built with Glint

Contributing

Issues and PRs welcome — see CONTRIBUTING.md. Keep it tiny and dependency-free.

License

MIT. Rename "Glint" to your own project freely.

Not affiliated with Meta. Ray-Ban and Oakley are trademarks of their respective owners. Palettes courtesy of their creators via lospec.

About

HUD-first web framework for Meta Ray-Ban Display glasses

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages