dorkhub

ply-engine

Beautiful UIs in Rust. Cross-platform. Dead simple.

TheRedDeveloper
Rust44916 forks0BSDupdated 1 week ago
visit the demogit clone https://github.com/TheRedDeveloper/ply-engine.gitTheRedDeveloper/ply-engine

Ply

Beautiful UIs in Rust. Cross-platform. Dead simple.

Website · Docs · Examples

crates.io License: 0BSD


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.

cargo install plyx
plyx init

What you get

ui.element().width(grow!()).height(grow!())
  .background_color(0x262220)
  .corner_radius(12.0)
  .layout(|l| l.direction(TopToBottom).padding(24))
  .children(|ui| {
    ui.text("Hello, Ply!", |t| t.font_size(32).color(0xFFFFFF));
  });

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
storage Cross-platform persistent file storage
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.

more like this

anne-key

Firmware for Anne Pro Keyboard written in Rust

Rust572

TachiSnap

TachiSnap — Pixel Snapper for animation pixel artists. Rust + WebAssembly client-side tool for cleaning up AI-generated…

HTML50

bit_gossip

Pathfinding library for calculating all node pairs' shortest paths in an unweighted undirected graph.

Rust50

search

search projects, people, and tags