Platforms
What runs where. The full matrix of operating systems, languages, renderers and packages, with notes and requirements for Windows, Linux and macOS.
BUI runs on Windows, Linux and macOS. Windows and Linux are fully supported; macOS works with a few honest caveats. Here’s the whole picture, so you can tell in one glance whether your setup is covered.
The matrix
| Windows | Linux | macOS | |
|---|---|---|---|
| Window | Native (Win32) | Native (X11; Wayland through XWayland) | Native (Cocoa), experimental |
Python (pip install) |
Works: wheels | Works: wheels | Works: wheels |
| Rust | Works | Works | Experimental |
| JavaScript and React | Works: prebuilt on npm | Works: build the addon from source (npm run build) |
Headless |
| C, C++, Dear ImGui | Works | Works | Experimental |
| Renderer | CPU raster, or GPU (Direct3D 11) | CPU raster, or GPU (OpenGL 3.3) | CPU raster |
| HiDPI | Per-monitor DPI | Xft.dpi |
Retina (backing scale) |
| Images | All built-in formats; decode threads; GPU atlas | All built-in formats; decode threads; GPU atlas | All built-in formats; decode threads (CPU raster) |
| Video | Works: Media Foundation (DXVA), tested | Works: GStreamer (VA-API where available), tested under WSL | AVFoundation: written, untested |
Works means it works and is tested. Experimental means it’s written and checked by CI, but has had little hands-on testing on real hardware (macOS: one Apple Silicon Mac so far).
Windows
- Window: a native Win32 host, per-monitor DPI aware, with animation paced to the display.
- GPU renderer: Direct3D 11 (feature level 10.0 or newer). Machines without it stay on the CPU raster.
- Compilers: MSVC, or MinGW-w64 GCC. The published Python wheels are built with MinGW (UCRT) and statically linked to the GCC runtime, so they depend only on system DLLs and Python’s. The Rust crate’s default target uses MSVC: install the Visual Studio Build Tools.
- JavaScript: the npm packages ship a prebuilt addon and the
bui-runtimefor Windows x64. - Video: Media Foundation, loaded at run time (Windows “N” editions without the Media Feature Pack start normally and report no video). H.264 always; HEVC, VP9 and AV1 with Microsoft’s Store extensions. Tested on Windows 11 (Ryzen 7 5800U, Radeon graphics).
Linux
- Window: a native X11 host. Wayland sessions run it through XWayland.
- No X11 needed to import.
libX11andlibGLload when the first window opens, so BUI imports and renders headless on servers and in containers without them. (Rust binaries are the exception: they linklibX11directly.) - GPU renderer: OpenGL 3.3 core, through GLX for windows and EGL for offscreen rendering. Where OpenGL is missing, BUI falls back to the CPU raster.
- Tested on: the C, Python, window and GPU parity tests pass on Mesa’s software OpenGL and on an NVIDIA GPU. The suites also run under WSLg.
- Building from source needs the X11 headers:
libx11-dev(Debian, Ubuntu) orlibX11-devel(Fedora). No GL headers are needed. - JavaScript: no prebuilt npm addon yet. Build it from a clone with
npm run buildinbindings/node(needs Rust, CMake and a C compiler); windows are native. - Video: GStreamer 1.x,
dlopened (no headers needed to build): installgstreamer1.0-plugins-baseand-good, plusgstreamer1.0-libav(or-plugins-badfor openh264/dav1d) for H.264 and friends, andgstreamer1.0-vaapi/ thevaplugin for hardware decoding. Tested under WSL (Kali, GStreamer 1.24, software decoding); the OpenGL NV12 shader passes the parity test there on Mesa.
macOS Experimental
- Window: a native Cocoa host, ported from Blender’s GHOST code, with Retina scaling. It’s checked by CI and has been tried by hand on one Apple Silicon Mac by Krish Kalaria, who also fixed the bugs he found (issue #3, pull request #4). AppKit only allows windows on the main thread.
- Python fallback: if the native host misbehaves, use the standard Tk window:
BUI_HOST=tk. That needs a Python withtkinter(for example from python.org, orbrew install python-tk). - JavaScript is headless. Node runs BUI on its own UI thread, and macOS only allows windows on the main thread.
- Renderer: the CPU raster only.
- Help test it. If you have a Mac, the macOS testing guide lists what to build, what to run and what to report.
Packages
| Package | Platforms | Notes |
|---|---|---|
blenderui on PyPI |
Windows x86_64, Linux x86_64 (manylinux), macOS arm64 and x86_64 | CPython 3.11, 3.12, 3.13 and 3.14. No musllinux or 32-bit wheels. Linux wheels include the native X11 host. |
@blender-ui/native, @blender-ui/react on npm |
Windows x64 | Node.js 18 or newer, or Bun. Elsewhere, build the addon from source. |
blenderui on crates.io |
Any platform with CMake and a C compiler | cargo add blenderui; the C kit is compiled on first build. Rust 1.88 or newer. blenderui-imgui (Dear ImGui) is published too, next to the smaller crates blenderui builds on (blenderui-sys, -macros, -tailwind, -paint, -table, -vlist). |
| C and C++ (CMake) | Windows, Linux, macOS | CMake 3.20+, a C11 and C++20 compiler. |
Requirements at a glance
| You use | You need |
|---|---|
| Python | CPython 3.11 or newer |
| Rust | Rust 1.88+, CMake, a C compiler (and the X11 headers on Linux) |
| JavaScript | Node.js 18+ or Bun |
| C / C++ | CMake 3.20+, a C11 and C++20 compiler (MSVC, GCC or MinGW-w64, Clang); X11 headers on Linux |
Not yet
| Area | Status | Notes |
|---|---|---|
| WebAssembly | Planned | The kit in a browser <canvas>, with the React and DOM-like APIs on top |
| Vulkan and WebGPU | Planned | More GPU backends drawing the same instance stream |
| npm addons beyond Windows x64 | Partial | Build the addon from source on Linux; prebuilt per-platform packages would follow the napi-rs convention |
Partial Partly therePlanned Not built yet
Next steps
Edit this page on GitHub
Last updated