GLASS is a Windows overlay framework for Rust. It creates a transparent DirectComposition-backed overlay window, renders through wgpu on DX12, keeps overlay content in a retained scene graph, and organizes on-screen widgets as modular OverlayModule implementations. The workspace includes the reusable library crates and a reference starter app that shows the intended integration flow.
GLASS is pre-1.0 software. The API is usable, but it may still change as the library is hardened for external consumers.
- transparent Windows overlay using DirectComposition
wgpurenderer on DX12- retained scene graph with explicit scene invalidation
- anchor-based module layout
- modular widget system via
OverlayModule - config loading and file watching through
ConfigStore - passive and interactive input modes
- reference app in
glass-starter
Requirements:
- Windows 10 or Windows 11
- Rust stable 1.85+
- MSVC build tools
git clone https://github.com/RomainROCH/GLASS
cd GLASS
cargo build --workspace
cargo run -p glass-starterFor the smallest current bootstrap:
cargo run --example minimal -p glass-starterdocs/index.md— docs hubdocs/getting-started.md— first rundocs/library-consumer.md— build your own app with GLASSdocs/module-authoring.md— write a custom moduledocs/architecture/ARCHITECTURE.md— system architecture & decisions
The workspace is split into three main crates:
glass-core— shared core types, includingGlassErrorglass-overlay— the reusable overlay library: config, layout, scene graph, modules, windowing, compositor, rendererglass-starter— the reference application and smallest runnable examples
📐 Full architecture documentation → — system design, layer breakdown, key decisions, ecosystem vision, and extension points.
If you want to study the current reference flow, start with:
GLASS currently supports Windows 10 and Windows 11 only. The runtime depends on Win32 APIs, DirectComposition, and a DX12-backed wgpu surface path, so it is not a cross-platform overlay framework today.
SystemStatsModuledoes not perform built-in temperature detection. Applications inject a callback withSystemStatsModule::set_temp_source().ConfigStore::watch()updates the stored config snapshot, but a running app must still re-read and reapply the snapshot for runtime behavior to change. The reference starter does not currently do that after startup.- The root-level Python packaging files are maintenance scaffolding for repo tooling around
sync_wgpu.py; they are not a supported GLASS consumer API.
Dual licensed under Apache-2.0 or MIT. See LICENSE-APACHE and LICENSE-MIT.