docs v1.0.0

Platforms & setup

bibui 1.0.0 supports Linux on x64. This page says what a Linux machine needs for each route. It also says how far each other platform has got. Supported platforms are part of the version promise. Dropping one, or needing a new native library, means a major release.

PlatformStatusSilk + SkiaWayland + managedNative AOT
Linux x64SupportedYesthrough GLFWYesWayland session onlyWayland route
Linux arm64Not yet———
WindowsNot yet—n/a—
macOSNot yet—n/a—

Linux x64

CI builds and tests every release on Linux x64. You need the .NET 10 SDK and the system libraries for the route you use. To publish with Native AOT, you also need clang and the zlib headers.

What each route needs

PackageSystem libraries at run time
Bibui.Core (always)FreeType and HarfBuzz, for text
Bibui.Raster.Skiafontconfig. Skia's own native library ships in the NuGet package
Bibui.Platform.Silk, Bibui.GlAn OpenGL driver. GLFW ships with Silk.NET
Bibui.Platform.Waylandlibwayland-client, libwayland-cursor, libxkbcommon
Bibui.Raster.Managed.BackendNothing beyond Bibui.Core's

Set up

Shell
# Libraries: text, Wayland, and Skia's fontconfig
sudo apt install libfreetype6 libharfbuzz0b libwayland-client0 libwayland-cursor0 libxkbcommon0 libfontconfig1

# For Native AOT publishing
sudo apt install clang zlib1g-dev

# The .NET 10 SDK, from Microsoft's install script
curl -sSL https://dot.net/v1/dotnet-install.sh | bash -s -- --channel 10.0

Then check the setup with the counter:

Shell
dotnet new console -n Counter && cd Counter
dotnet add package Bibui      # or one app package, such as Bibui.App.WaylandManaged
dotnet run

Package names change between distribution releases. If one is not found, search for the library by name (apt search harfbuzz, dnf search harfbuzz).

Display sessions

  • Silk + Skia opens its window through GLFW and draws with OpenGL. The measurements on these pages were taken under Hyprland, a Wayland compositor.
  • Wayland + managed needs a Wayland session. WaylandWindow.IsSupported is false when WAYLAND_DISPLAY or libwayland-client is missing. An app can then say so, instead of failing to connect.
  • Headless programs and tests need neither. That is how CI renders on machines with no display.

Linux arm64

Not yet supported. The Wayland + managed route is C# plus system libraries. Nothing in it is specific to x64. It is not built or tested on arm64 yet, so it is not promised. Setup instructions will go here once it is.

  • Target: -r linux-arm64
  • Expected route: Wayland + managed, Native AOT
  • Boards to test: to be decided

Windows

Not yet supported. The Silk host is built on GLFW and OpenGL, and both run on Windows. Windows blocks the loop during a resize. The Silk packages already handle that with OnRefresh. bibui is not built or tested on Windows yet.

StepWindows
SDK.NET 10 SDK, with winget or the installer
RouteSilk + Skia; a native host is still to be decided
System librariesTo be documented
Native AOTTo be decided

macOS

Not yet supported. GLFW runs on macOS, but Apple deprecated OpenGL there. A supported macOS route would need the CPU, or a GPU path other than GL. Nothing is built or tested on macOS yet.

StepmacOS
SDK.NET 10 SDK, with the installer or Homebrew
RouteTo be decided: Silk + CPU raster, or a Metal path
System librariesTo be documented
Native AOTTo be decided

Next