- Leverages existing Flutter desktop embedder on each platform
- Unlike Flutter desktop embedders, NativeShell provides consistent platform agnostic API
- Multi-window support
- Window management
- Adjusting window styles and geometry
- Modal dialogs
- Windows can be set to track content size and resize automatically when content changes
- Platform menus (popup menu, menu bar)
- Drag and Drop
- Written in Rust, Flutter build transparently integrated with cargo
- This is project in a very experimental stage
Prerequisites:
- Install Rust
- Install Flutter
- Enable Flutter desktop support
- Switch to Flutter Master (
flutter channel master; flutter upgrade
)
Clone and run examples:
git clone https://github.com/nativeshell/examples.git
cd examples
cargo run
For Apple Silicon Macs, you might need to run the example using the flag to force x86_64 architecture:
rustup target add x86_64-apple-darwin
cargo run --target=x86_64-apple-darwin
Alternatively you can use environment variables:
# Recommended if using rust-analyzer to minimize redundant rebuilds
export CARGO_TARGET_DIR=target/x86_64
export CARGO_BUILD_TARGET=x86_64-apple-darwin
cargo run
For more information read the introductory post or go to nativeshell.dev.