A declarative cross-platform user interface library for D. https://libfluid.org/docs/main
Find a file
Artha 945d6ab371
All checks were successful
Deploy documentation / Deploy documentation (push) Successful in 46s
Deploy documentation / Deploy documentation (release) Successful in 52s
Merge pull request 'Fix #598: Make ScrollFrame use HitFilter.missBranch when not hovered' (#602) from 598-scroll-frae into main
Reviewed-on: #602
2026-02-03 16:06:04 +01:00
.forgejo/workflows Remove unstable from doc generation 2025-12-07 11:13:18 +01:00
.github Add docs build to testing workflow 2025-12-15 10:03:06 +01:00
docs Added some instructions to the readme. 2025-01-22 13:37:54 -05:00
libraries Update Raylib binaries to Raylib 5.5 2024-11-21 13:15:15 +01:00
resources Improve inline code styling 2025-11-12 18:36:32 +01:00
source/fluid Add IsDrawnAssert.containing 2026-02-03 15:40:37 +01:00
tests Add IsDrawnAssert.containing 2026-02-03 15:40:37 +01:00
tools Vendor patched Silly to mute deprecation warnings 2025-03-29 17:27:36 +01:00
tour Add .HitFilter.miss to FieldSlot examples 2025-12-21 06:47:55 +01:00
.gitignore Fix DUB 1.27 LDC builds 2025-12-15 11:42:15 +01:00
.ignore Replace use with require where sensible 2025-12-15 14:59:51 +01:00
contributing.md List issue tracker as option for asking questions 2025-11-30 12:59:16 +01:00
dub.json Add event-pipe as a dependency 2025-12-20 18:45:29 +01:00
dub.selections.json Add event-pipe as a dependency 2025-12-20 18:45:29 +01:00
icon.png Create an icon variant from the logo (#210) 2024-11-18 20:34:13 +01:00
icon.svg Create an icon variant from the logo (#210) 2024-11-18 20:34:13 +01:00
license Add license 2021-02-21 20:08:56 +01:00
logo.png Remove a small misfit dark blue area from "U" 2024-01-17 19:39:27 +01:00
logo.svg Remove a small misfit dark blue area from "U" 2024-01-17 19:39:27 +01:00
readme.md Add h1 to readme.md 2025-12-19 13:23:25 +01:00

Hello World from Fluid!

Fluid

A flexible, pluggable UI library for the D programming language. Minimal setup. Declarative. Non-intrusive.

auto root = vspace(
    .layout!"center",
    label(
        .layout!"center",
        "Hello World from"
    ),
    imageView("./logo.png"),
);

Fluid comes with Raylib 5 support. Integration is seamless: one or two calls do the job.

while (!WindowShouldClose) {
    BeginDrawing();
        ClearBackground(color!"#fff");
        root.draw();
    EndDrawing();
}

Fluid is largely feature-complete and has successfully been used to produce complete programs like Samerion Studio. It is still receiving incremental improvements to make it easier to use, more accessible, and more performant.

While in pre-release stage, breaking changes are reserved to v0.x version bumps and new features.

Support Fluid development on Patreon: https://www.patreon.com/samerion

  • Straightforward, high-level API
  • Responsive by design
  • Massively extensible: add your own nodes, I/O systems, and backends
  • Components form building blocks
  • Reliable mouse and keyboard input
  • Separate layout and styling
  • Out-of-the-box Unicode support
  • Code editor node included
  • Full HiDPI support
  • Partial gamepad support

Get Fluid

For a quick start guide on Fluid, check out the tour:

dub run fluid:tour

Create a new dub project based on Fluid:

dub init -t fluid

You can use dub to include Fluid in your code:

dub add fluid
dub add raylib-d
dub run raylib-d:install

Contribute to Fluid

Fluid welcomes contributions! You can review open issues and open pull requests to fix them. If you need help, you'll receive it.

Read more about contributing to Fluid in our contributing.md file.