#ui-component #gui-widgets #gpui #component

fluix

Rust UI components for GPUI

24 releases

0.1.25 Nov 9, 2025
0.1.24 Nov 8, 2025
0.1.20 Oct 31, 2025

#137 in GUI

Download history 773/week @ 2025-10-23 21/week @ 2025-10-30

166 downloads per month

MIT license

1.5MB
10K SLoC

Rust 7.5K SLoC // 0.1% comments Svelte 2.5K SLoC // 0.0% comments Shell 198 SLoC // 0.1% comments TypeScript 65 SLoC // 0.2% comments JavaScript 18 SLoC // 0.2% comments

Fluix Component

Rust UI components for GPUI

Get Started | Components


46+ Components

Comprehensive library of cross-platform desktop UI components for building feature-rich applications.

High Performance

GPU-accelerated rendering powered by GPUI for smooth user experience.

Type Safe

Leverage Rust's type system for compile-time type safety guarantees.

Themeable

Built-in theme system with flexible theme and style customization support.

Easy to Use

Simple and consistent API design for quick onboarding.

Well Documented

Comprehensive API documentation, tutorials, and example code.

Simple and Intuitive API

Get started with just a few lines of code. Stateless components make it easy to build complex UIs.

Button::new("Click Me")
    .variant(ButtonVariant::Primary)
    .size(ComponentSize::Medium)
    .on_click(|_, _, _| println!("Button clicked!"))

Install Fluix Component

Add the following to your Cargo.toml:

[dependencies]
fluix = "0.1.20"
gpui = "0.2"

Hello World

The following src/main.rs is a simple "Hello, World!" application:

use gpui::*;
use fluix::*;

pub struct HelloWorld;

impl Render for HelloWorld {
    fn render(&mut self, _: &mut Window, _: &mut Context<Self>) -> impl IntoElement {
        div()
            .v_flex()
            .gap_2()
            .size_full()
            .items_center()
            .justify_center()
            .child("Hello, World!")
            .child(
                Button::new("click_me")
                    .variant(ButtonVariant::Primary)
                    .size(ComponentSize::Medium)
            )
    }
}

fn main() {
    let app = Application::new()
        .with_assets(fluix::Assets);  // ← Important! Load SVG icons

    app.run(move |cx| {
        cx.spawn(async move |cx| {
            cx.open_window(WindowOptions::default(), |window, cx| {
                cx.new(|_| HelloWorld)
            })?;

            Ok::<_, anyhow::Error>(())
        })
        .detach();
    });
}

Run the program:

$ cargo run

⚠️ Work in Progress: Fluix is currently in early development, APIs may change.
💡 Important: When using Fluix, you must call .with_assets(fluix::Assets) at application startup to load SVG icon resources!

Documentation & Tutorials

📚 Tutorials

New to Fluix? Follow our step-by-step tutorials:

View All Tutorials → | Documentation Index →

📖 API Reference

Components

✅ Implemented Components

Basic Components: Button, Icon
Form Components: TextInput, TextArea, Checkbox, Radio, Select, Combobox
Layout Components: Tabs, Breadcrumb

🔄 In Development

See ROADMAP.md for detailed development progress and component list.

Examples

Run example projects:

# Button component example
cargo run --example button_demo

# Icon component example  
cargo run --example icon_demo

# TextInput and TextArea examples
cargo run --example text_input_demo

# Tabs component example
cargo run --example tabs_demo

View more examples: examples/

Contributing

Contributions are welcome! Please check ROADMAP.md for current progress and components to implement.

About

Fluix is a modern Rust UI component library built on top of GPUI 0.2, designed to simplify the development of cross-platform desktop applications. With GPU-accelerated rendering, a comprehensive component set, and type-safe APIs, Fluix empowers developers to build beautiful and performant desktop applications with ease.

Key Features

  • GPU-Accelerated: Built on GPUI for smooth, high-performance rendering
  • Type-Safe: Leverages Rust's type system for compile-time safety
  • Cross-Platform: Works on macOS, Windows, and Linux
  • Comprehensive: 46+ components covering basic UI, forms, and layouts
  • Well-Documented: Extensive tutorials, API documentation, and examples
  • Themeable: Flexible theming system for customizing application appearance

Why Fluix?

Fluix bridges the gap between low-level GPUI APIs and high-level component development, providing a consistent and intuitive API for building modern desktop applications. Whether you're building a simple utility or a complex application, Fluix provides the building blocks you need.

License

MIT License

Dependencies

~58–105MB
~1.5M SLoC