Rusty file dialogs for Windows, Linux (GTK), MacOS And WASM32.
```rust // Sync Dialog let files = FileDialog::new() .addfilter("text", &["txt", "rs"]) .addfilter("rust", &["rs", "toml"]) .setdirectory(&"/") .pickfiles();
// Async Dialog let file = AsyncFileDialog::new() .addfilter("text", &["txt", "rs"]) .addfilter("rust", &["rs", "toml"]) .setdirectory(&"/") .pickfile() .await;
let data = file.read().await; ```
| API Stability | | ------------- | | 🚧 |
| Feature | Linux | Windows | MacOS [1] | Wasm32 | | ------------ | ----- | ------- | --------- | ------ | | SingleFile | ✔ | ✔ | ✔ | ✔ | | MultipleFile | ✔ | ✔ | ✔ | ✔ | | PickFolder | ✔ | ✔ | ✔ | ✖ | | SaveFile | ✔ | ✔ | ✔ | ✖ | | | | | | | | Filters | ✔ | ✔ | ✔ | ✔ | | StartingPath | ✔ | ✔ | ✔ | ✖ | | Async | ✔ | ✔ | ✔ | ✔ |
[1] Macos Sync dialog freezes when used with winit (same way as nfd) Caused by winit #1779
MacOS Windowed App and MacOS NonWindowed AppNSApplication instance, so dialog is truly async only when opened in windowed env like winit,SDL2, etc. otherwise it will fallback to sync dialog.AKA features that are not file related
| Feature | Linux | Windows | MacOS | Wasm32 | | ------------- | ----- | ------- | ----- | ------ | | MessageDialog | ✔ | ✔ | ✔ | ✔ | | PromptDialog | | | | | | ColorPicker | | | | |