Ply is an engine for building apps in Rust that run on Linux, macOS, Windows, Android, iOS, and the web. One codebase, every platform. GPU-accelerated rendering, text editing, styling, accessibility, shaders, networking, sound and more, made easy and fast.
What you get
ui.element.width.height
.background_color
.corner_radius
.layout
.children;
Everything is an element. Builder pattern, closure-based children, one import. Read the docs →
Highlights
- Layout engine: Flexbox-like sizing, padding, gaps, alignment, scrolling, floating elements
- Text input: Cursor, selection, undo/redo, multiline, password mode, keyboard shortcuts
- Rich text styling: Inline colors, wave, pulse, gradient, typewriter, fade, works in inputs too
- Shaders: GLSL fragment shaders, built-in effects, SPIR-V build pipeline
- Accessibility: AccessKit on desktop, JS bridge on web. Screen readers, keyboard nav, focus rings, tab order, live regions
- Debug view: Chrome DevTools-style inspector. One line:
ply.set_debug_mode(true) - Networking: HTTP + WebSocket, polling-based, never blocks the UI, works everywhere
- Images & vectors: PNG, TinyVG vectors,
render_to_texture, procedural vectors - Rotation: Visual (children included) and shape (vertex-level)
- Sound: WAV/OGG playback, volume control, looping
- Interactivity:
ui.hovered(),ui.pressed(),ui.focused()inline, callback events, ID-based queries
Platforms
| Platform | Build command |
|---|---|
| Desktop (Linux, macOS, Windows) | cargo build |
| Web (WASM) | plyx web |
| Android | plyx apk |
| iOS | plyx ios |
Feature flags
| Feature | What it adds |
|---|---|
a11y |
Screen reader support via AccessKit (default) |
text-styling |
Rich text with inline colors, animations, effects |
tinyvg |
TinyVG vector graphics |
built-in-shaders |
Pre-made shader effects (foil, glow, CRT, etc.) |
shader-build |
Shader compilation pipeline (SPIR-V Cross) |
net |
HTTP and WebSocket |
net-json |
JSON deserialization for network responses |
audio |
Sound playback (WAV, OGG) |
Examples
See the interactive examples on the website:
- Shader Playground (207 lines): live GLSL editor with code highlighting
- Snake (295 lines)
- Todo List (242 lines)
License
Zero-Clause BSD. Use it for anything. No attribution required.