Guido
A reactive Rust GUI library for Wayland layer shell widgets

Guido is a GPU-accelerated GUI library built with Rust and wgpu, designed specifically for creating Wayland layer shell applications like status bars, panels, overlays, and desktop widgets.
Key Features
- Reactive System - Fine-grained reactivity inspired by SolidJS with signals, computed values, and effects
- GPU Rendering - Hardware-accelerated rendering using wgpu with SDF-based shapes for crisp anti-aliasing
- Wayland Layer Shell - Native support for layer shell positioning, anchoring, and exclusive zones
- Multi-Surface Apps - Create multiple surfaces (windows) that share reactive state
- State Layer API - Declarative hover/pressed states with automatic animations and ripple effects
- Transform System - Translate, rotate, and scale widgets with spring physics animations
- Composable Widgets - Build complex UIs from simple, composable primitives
- Image Widget - Display PNG, JPEG, WebP, and SVG images with GPU texture caching
- Scrollable Containers - Vertical and horizontal scrolling with customizable scrollbars
Quick Example
use guido::prelude::*;
fn main() {
App::new().run(|app| {
let count = create_signal(0);
app.add_surface(
SurfaceConfig::new()
.width(300)
.height(100)
.background_color(Color::rgb(0.1, 0.1, 0.15)),
move || {
container()
.height(fill())
.layout(
Flex::row()
.main_alignment(MainAlignment::Center)
.cross_alignment(CrossAlignment::Center),
)
.child(
container()
.padding(16.0)
.background(Color::rgb(0.2, 0.2, 0.3))
.corner_radius(8.0)
.hover_state(|s| s.lighter(0.1))
.pressed_state(|s| s.ripple())
.on_click(move || count.update(|c| *c += 1))
.child(text(move || format!("Clicked {} times", count.get())))
)
},
);
});
}
What Can You Build?
Guido is ideal for:
- Status bars - System information displays anchored to screen edges
- Panels - Application launchers and taskbars
- Notifications - Overlay popups and alerts
- Desktop widgets - Clocks, system monitors, media controls
- Layer shell utilities - Any Wayland layer shell application
Platform Support
Currently, Guido supports Wayland on Linux with layer shell protocol. The library uses:
wgpufor GPU-accelerated renderingsmithay-client-toolkitfor Wayland protocol handlingcalloopfor event loop integrationglyphonfor text rendering
Getting Started
Ready to build your first Guido application? Head to the Installation guide to set up your development environment.