NativeDesktop

Examples

Every example app in the repository, running live on the web and captured on each OS.

Each example is a full app under examples/ that CI builds for every target. When an example builds for the browser, the Web tab runs it in this page. The macOS, Linux, and Windows tabs show what the test harness captured on that OS for the current version of the example.

Hello

The smallest app: a toolbar button, a count and window controls placed by coordinates.

Example: Hello. The smallest app: a toolbar button, a count and window controls placed by coordinates. Source in examples/hello.
Runs Hello in this page as WebAssembly.
Hello on macOS

Captured on macOS 27.0, 2026-10-22.

Hello on Linux

Captured on NixOS 26.11 (Zokor), Hyprland, 2026-10-22.

Hello on Windows

Captured on Windows 11 26H2, 2026-10-22.

Notes

A multi-file app: source list sidebar, toolbar, a virtual list of notes, an editor, the command palette, gestures and settings.

Example: Notes. A multi-file app: source list sidebar, toolbar, a virtual list of notes, an editor, the command palette, gestures and settings. Source in examples/notes.
Notes on macOS

Captured on macOS 27.0, 2026-10-22.

Notes on Linux

Captured on NixOS 26.11 (Zokor), Hyprland, 2026-10-22.

Notes on Windows

Captured on Windows 11 26H2, 2026-10-22.

One page per built-in component: palette, source list, toasts, banner, forms, tabs, split view, status page, dialogs and media.

Example: Gallery. One page per built-in component: palette, source list, toasts, banner, forms, tabs, split view, status page, dialogs and media. Source in examples/gallery.
Runs Gallery in this page as WebAssembly.

Overrides

Every override layer in one window: element style, per platform, native mapping, theme (app, window, subtree) and patterns.

Example: Overrides. Every override layer in one window: element style, per platform, native mapping, theme (app, window, subtree) and patterns. Source in examples/overrides.
Runs Overrides in this page as WebAssembly.
Overrides on macOS

Captured on macOS 27.0, 2026-10-22.

Overrides on Linux

Captured on NixOS 26.11 (Zokor), Hyprland, 2026-10-22.

Overrides on Windows

Captured on Windows 11 26H2, 2026-10-22.

Chrome

The window structure a Mail-style app declares: scaffold, source list, toolbar, inspector, menu bar, alert, file picker and a settings window.

Example: Chrome. The window structure a Mail-style app declares: scaffold, source list, toolbar, inspector, menu bar, alert, file picker and a settings window. Source in examples/chrome.
Chrome on macOS

Captured on macOS 27.0, 2026-10-22.

Chrome on Linux

Captured on NixOS 26.11 (Zokor), Hyprland, 2026-10-22.

Chrome on Windows

Captured on Windows 11 26H2, 2026-10-22.

Places

App-defined native widgets: an objc2 MapKit view and a Swift-hosted SwiftUI gauge, each with a drawn fallback.

Example: Places. App-defined native widgets: an objc2 MapKit view and a Swift-hosted SwiftUI gauge, each with a drawn fallback. Source in examples/native-widget.

Scroll

A virtualized list of 100 000 rows with heights from 28 to 124 points, the list nd diag scroll measures.

Example: Scroll. A virtualized list of 100 000 rows with heights from 28 to 124 points, the list `nd diag scroll` measures. Source in examples/scroll.
Runs Scroll in this page as WebAssembly.
Scroll on macOS

Captured on macOS 27.0, 2026-10-22.

Scroll on Linux

Captured on NixOS 26.11 (Zokor), Hyprland, 2026-10-22.

Scroll on Windows

Captured on Windows 11 26H2, 2026-10-22.

Overlays

A popover, a modal panel and a context menu over a native button and a live web page, none of them leaking input.

Example: Overlays. A popover, a modal panel and a context menu over a native button and a live web page, none of them leaking input. Source in examples/overlays.
Overlays on macOS

Captured on macOS 27.0, 2026-10-22.

Overlays on Linux

Captured on NixOS 26.11 (Zokor), Hyprland, 2026-10-22.

Overlays on Windows

Captured on Windows 11 26H2, 2026-10-22.

Tabs

Browser-style window tabs: every tab is a window of one tab group, with the system tab bar on macOS.

Example: Tabs. Browser-style window tabs: every tab is a window of one tab group, with the system tab bar on macOS. Source in examples/tabs.
Tabs on macOS

Captured on macOS 27.0, 2026-10-22.

Tabs on Linux

Captured on NixOS 26.11 (Zokor), Hyprland, 2026-10-22.

Tabs on Windows

Captured on Windows 11 26H2, 2026-10-22.

Browser

A small browser: tabs in the sidebar, an address field in the toolbar, devtools and downloads, on WKWebView or CEF.

Example: Browser. A small browser: tabs in the sidebar, an address field in the toolbar, devtools and downloads, on WKWebView or CEF. Source in examples/browser.

Terminal

A terminal with tabs over libghostty-vt: one shell per tab, titled by what the shell reports.

Example: Terminal. A terminal with tabs over libghostty-vt: one shell per tab, titled by what the shell reports. Source in examples/terminal.
Terminal on macOS

Captured on macOS 27.0, 2026-10-22.

Terminal on Linux

Captured on NixOS 26.11 (Zokor), Hyprland, 2026-10-22.

Terminal on Windows

Captured on Windows 11 26H2, 2026-10-22.

System

Every nd::system service behind a button: dialogs, clipboard, notifications, keychain, tray, media keys and audio with a spectrum.

Example: System. Every nd::system service behind a button: dialogs, clipboard, notifications, keychain, tray, media keys and audio with a spectrum. Source in examples/system.
System on macOS

Captured on macOS 27.0, 2026-10-22.

System on Linux

Captured on NixOS 26.11 (Zokor), Hyprland, 2026-10-22.

System on Windows

Captured on Windows 11 26H2, 2026-10-22.

Pacing

Two windows animating every frame, each at the refresh rate of the display it is on.

Example: Pacing. Two windows animating every frame, each at the refresh rate of the display it is on. Source in examples/pacing.
Pacing on macOS

Captured on macOS 27.0, 2026-10-22.

Pacing on Linux

Captured on NixOS 26.11 (Zokor), Hyprland, 2026-10-22.

Pacing on Windows

Captured on Windows 11 26H2, 2026-10-22.

Discord presence

Discord Rich Presence as a plugin, written against nd-plugin and nd-ipc the way an outside crate would be.

Example: Discord presence. Discord Rich Presence as a plugin, written against nd-plugin and nd-ipc the way an outside crate would be. Source in examples/discord-rpc.