https://github.com/xframes-project/xframes
GPU-accelerated GUI development for the desktop and the browser
https://github.com/xframes-project/xframes
c cpp dear-imgui desktop glfw gpu-accelerated-library gpu-acceleration gpu-programming opengl ui wasm webgpu
Last synced: 3 months ago
JSON representation
GPU-accelerated GUI development for the desktop and the browser
- Host: GitHub
- URL: https://github.com/xframes-project/xframes
- Owner: xframes-project
- License: mit
- Created: 2024-04-27T13:59:33.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-18T18:11:06.000Z (5 months ago)
- Last Synced: 2025-04-06T05:05:37.613Z (3 months ago)
- Topics: c, cpp, dear-imgui, desktop, glfw, gpu-accelerated-library, gpu-acceleration, gpu-programming, opengl, ui, wasm, webgpu
- Language: TypeScript
- Homepage: https://xframes.dev
- Size: 28.4 MB
- Stars: 13
- Watchers: 1
- Forks: 0
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# XFrames - cross-platform DOM-free GUI development for the desktop and the browser
**XFrames** is a high-performance library that empowers developers to build native desktop applications using whichever programming language they are familiar with, without the overhead of the DOM. XFrames was originally conceived as a streamlined alternative to Electron, designed for developers looking to maximize performance and efficiency.
## Key Features
- **DOM-free rendering**: Bypasses the traditional DOM, providing a faster, more lightweight environment for GUI development.
- **Cross-platform support**: Easily create applications for multiple platforms, including the browser through WebAssembly, while maintaining a native feel.
- **Advanced layout capabilities**: Leverage the power and flexibility of [Yoga layouts](https://www.yogalayout.dev/).## Getting started
### Node.js
At the moment the easiest way to get started on Node.js is to run
```
npx create-xframes-node-app
```Enter a name for your project then wait until source files and dependencies are installed, then
```
cd
npm start
```You should see the following:

## FAQs
Please refer to our [project website's FAQ](https://xframes.dev/faq).
## Core Technologies
Please refer to the ['technologies used'](https://xframes.dev/technologies-used) section of our project website.
## Roadmap
XFrames is actively maintained with planned features and enhancements. The focus at the moment is to add support for more widgets and programming languages.
## Supported platforms
### Node-API v9
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| wasm32-emscripten | N/A | Works in browsers that support WebGPU rendering |
| x64-windows | Windows 11 Home | Works |
| x64-linux | WSL2 (Ubuntu) 24.04.1 LTS | Works by setting `export GALLIUM_DRIVER=d3d12` |
| x64-linux | Debian Trixie | Works |
| x64-linux | Ubuntu 22.04 LTS | Works |
| x64-linux | Ubuntu 24.04 LTS | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works, though there are stricter limits with custom fonts loading |
| riscv64-linux | Debian Trixie on Docker (emulated) | Compiles successfully, yet to be tested on real hardware |### Java
[XFrames for Java](https://github.com/xframes-project/xframes-java)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |### Kotlin
[XFrames for Kotlin](https://github.com/xframes-project/xframes-kotlin)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |### Scala
[XFrames for Scala](https://github.com/xframes-project/xframes-scala)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |### F#
[XFrames for F#](https://github.com/xframes-project/xframes-fsharp)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Debian Trixie | Works |### C#
[XFrames for C#](https://github.com/xframes-project/xframes-csharp)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Debian Trixie | Works |### Python
[XFrames for Python](https://github.com/xframes-project/xframes-python)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-linux | Ubuntu 24.04.1 | Works |### Rust
[XFrames for Rust](https://github.com/xframes-project/xframes-rust)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-linux | Ubuntu 24.04.1 | Works, but please refer to the README |### Ada
[XFrames for Ada](https://github.com/xframes-project/xframes-ada)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Lua
[XFrames for Lua](https://github.com/xframes-project/xframes-lua)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Fortran
[XFrames for Fortran](https://github.com/xframes-project/xframes-fortran)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Debian Trixie | Works (gcc v14) |### OCaml
[XFrames for OCaml](https://github.com/xframes-project/xframes-ocaml)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Debian Trixie | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Crystal
[XFrames for Crystal](https://github.com/xframes-project/xframes-crystal)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Ubuntu 24.04.1 | Works |### D
[XFrames for D](https://github.com/xframes-project/xframes-dlang)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Ubuntu 24.04.1 | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Ruby
[XFrames for Ruby](https://github.com/xframes-project/xframes-ruby)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 | Works |
| x64-linux | Ubuntu 24.04.1 | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Gnu Step
[XFrames for Gnu Step](https://github.com/xframes-project/xframes-gnustep-objective-c)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-linux | Ubuntu 24.04 | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Gnu Smalltalk
[XFrames for Gnu Smalltalk](https://github.com/xframes-project/xframes-gnu-smalltalk)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-linux | WSL2 (Ubuntu) 24.04.1 LTS | Works |
| x64-linux | Ubuntu 24.04 | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Swift
[XFrames for Swift](https://github.com/xframes-project/xframes-swift)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Ubuntu 24.04 | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Julia
[XFrames for Julia](https://github.com/xframes-project/xframes-julia)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 | Works |
| x64-linux | Ubuntu 24.04 | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Nim
[XFrames for Nim](https://github.com/xframes-project/xframes-nim)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Ubuntu 24.04 | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Zig
[XFrames for Zig](https://github.com/xframes-project/xframes-zig)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Ubuntu 24.04 | Works |### Racket
[XFrames for Racket](https://github.com/xframes-project/xframes-racket)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Ubuntu 24.04.1 | Works, had to build Racket from source |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works, had to build Racket from source |### Haskell
[XFrames for Haskell](https://github.com/xframes-project/xframes-haskell)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Ubuntu 24.04 | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Free Pascal
[XFrames for Free Pascal](https://github.com/xframes-project/xframes-freepascal)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |
| x64-linux | Ubuntu 24.04.1 | Works, but please refer to the README |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | Works |### Delphi
[XFrames for Delphi](https://github.com/xframes-project/xframes-delphi)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-windows | Windows 11 Home | Works |### Factor
[XFrames for Factor](https://github.com/xframes-project/xframes-factor)
| Architecture | OS | Notes |
| ----------------- | -------------------------------------------- | ----------------------------------------------------------------- |
| x64-linux | Ubuntu 24.04.1 | Works, but please refer to the README |## Accessibility
Accessibility is a key priority for the future of **XFrames**. While the current version lacks comprehensive accessibility support, we are committed to making XFrames an inclusive framework that provides equitable access for all users. Upcoming development will focus on implementing accessibility features and adhering to industry standards, ensuring XFrames applications can be used effectively by people with disabilities. Our goal is to create a robust, accessible platform that enables developers to build applications for diverse audiences with confidence.
## Basic online WASM demo
([online demo](https://andreamancuso.github.io/react-wasm/dear-imgui)) Only browsers that natively support WebGPU: Chrome, Edge, Firefox nightly, possibly Safari (though I have not tested it).
## Screenshots




## Building
### Supported platforms
| Architecture | OS | Compiler | Notes |
| ----------------- | -------------------------------------------- | ------------------ | ----- |
| wasm32-emscripten | N/A | emsdk 3.1.64 | Works |
| x64-windows | Windows 11 Home | Visual Studio 2022 | Works |
| x64-linux | WSL2 Ubuntu 24.04.1 LTS | gcc 13.2.0 | Works |
| x64-linux | Debian Trixie | gcc 14 | Works |
| x64-linux | Ubuntu 22.04 LTS | gcc 12.2 | Works |
| x64-linux | Ubuntu 24.04 LTS | gcc 13.2 | Works |
| arm64-linux | Raspberry Pi OS (Debian bookworm) Oct 2024 | gcc 12.2 | Works |#### General considerations for Ubuntu
This may seem obvious, particularly if you are an experienced Linux user/developer, so this is for the avoidance of the doubt: building xframes on Ubuntu 24.04 means that the generated binary extension will run on Ubuntu 24.04 but not on Ubuntu 22.04 (or older). As part of doing our tests, the binary extension generated using Ubuntu 22.04 did work fine on Ubuntu 24.04. Moving forward, we'll try to build it on even earlier versions of Ubuntu, i.e. 20.04
## Contributing
We welcome contributions! If you’re interested in helping develop xframes, please get in touch and I'll help you get started.
[](https://discord.gg/Cbgcajdq)
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
genautz
💻 📖 📦 🔧 🚇
Radliński Ignacy
📓
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
### Star history
[](https://star-history.com/#xframes-project/xframes&Date)