Documentation

rfd

version Documentation dependency status

Rusty file dialogs for Windows, Linux (GTK), MacOS And WASM32.

Why RFD?

  • It uses 100% native API on all platforms, it does not spawn any processes in the background.
  • It supports async/await syntax
  • And if one day you decide to port your program to browser, WASM support is there for you!

Example

// Sync Dialog
let files = FileDialog::new()
    .add_filter("text", &["txt", "rs"])
    .add_filter("rust", &["rs", "toml"])
    .set_directory(&"/")
    .pick_files();

// Async Dialog
let file = AsyncFileDialog::new()
    .add_filter("text", &["txt", "rs"])
    .add_filter("rust", &["rs", "toml"])
    .set_directory(&"/")
    .pick_file()
    .await;

let data = file.read().await;

State

GitHub Workflow Status

API Stability
🚧
Feature Linux Windows MacOS [1] Wasm32
SingleFile ✔ ✔ ✔ ✔
MultipleFile ✔ ✔ ✔ ✔
PickFolder ✔ ✔ ✔ ✖
SaveFile ✔ ✔ ✔ ✖
Filters ✔ ✔ ✔ ✔
StartingPath ✔ ✔ ✔ ✖
Async ✔ ✔ ✔ ✔

[1] Sync dialog freezes when used with winit (same way as nfd) #1779

rfd-extras

AKA features that will be either in a separate rfd-extras crate, or behind a feature flag

Feature Linux Windows MacOS
MessageDialog
PromptDialog
ColorPicker