zgx

Overview

One app on macOS, Windows and Linux, and what each desktop host does differently.

zgx’s core (state, layout, input, editing, accessibility semantics) is platform-independent Rust. zgx-gpu draws through wgpu, and zgx-desktop hosts native windows through winit, with each platform’s IME, clipboard, menus, dialogs and accessibility bridge. Every pull request builds and tests on Linux, macOS and Windows.

macOSWindowsLinux
GraphicsMetalDirect3D 12Vulkan, GL where no Vulkan driver is
WindowingAppKitWin32Wayland and X11
Screen readerVoiceOverNarratorOrca (AT-SPI)
Input methods (IME)the system’sthe system’sthe system’s, on Wayland and X11
Web viewsWebKitWebView2 (the webview2 feature)not yet
TerminalsGhostty (the ghostty feature)not yetnot yet
Native video surfacesCoreVideo
Benchmarked against other frameworksyesharness, not yet publishedno

The rest of the platform, the same everywhere, is in the Rust docs: popups, drags and windows, dialogs and menus, drag and drop, and window controls for title bars, glass and drag regions.

Per platform

  • macOS. Menus, drags and windows behave as AppKit’s do, past the edges of their window and between windows: see popups, drags and windows. Frames are paced to the display’s refresh, and an idle window does no work.
  • Windows. The MSVC toolchain; presentation, title bars, popups, touch and pen, system settings, WebView2, and shipping an app.
  • Linux. Wayland and X11: title bars, the caret, fonts, file dialogs, popups, graphics fallbacks, frame pacing, input method candidates and drags.

How it is verified

Behaviour on each platform is checked by native probes: real windows driven by real input, IME, clipboard and accessibility clients, run in CI. The validation record says what each check establishes, and what it doesn’t.

Edit on GitHub