Feature Request: Official CLI tool to scaffold new projects (e.g., `slint init`)
Feature Description
Currently, starting and running a new Slint project across different platforms involves a lot of manual configuration.
- Scaffolding: Starting a project requires manually finding, cloning, and stripping template repositories from GitHub, which introduces friction.
- Platform Deployment: Deploying a Slint app to mobile or desktop platforms (especially Android/iOS) requires manually configuring CMake or Cargo, managing NDKs/toolchains, and manually launching emulators. This creates a steep learning curve compared to modern cross-platform frameworks.
I propose an official unified CLI tool (e.g., slint-cli / cargo slint / npx slint) to handle the entire lifecycle of a Slint application, heavily inspired by the DX of Flutter or React Native.
Phase 1: Project Initialization (slint init)
An interactive command to bootstrap a new project:
slint init my-app- Prompts the user for their preferred backend (Rust, C++, or JS/Node).
- Scaffolds the correct directory structure (
Cargo.toml,CMakeLists.txt, orpackage.json). - Initializes a fresh git repository.
Phase 2: Build and Run Automation (slint run <platform>)
Commands to automatically build the project and deploy it to connected devices or simulators:
slint run android(compiles the Android library, builds the APK/AAB via Gradle, and pushes to a running emulator/device)slint run ios(generates the Xcode project and deploys to the iOS simulator)slint run mac/slint run windows/slint run linux(builds and runs the native desktop target)slint run web(compiles to WebAssembly and starts a local dev server)The Status Quo: Relying on
git clonefor scaffolding, and manually writing Android Gradle wrappers, CMake targets, and Wasm build scripts based on the documentation.Language-specific generators: Relying on tools like
cargo-generateorcargo-apk. While these work for the Rust ecosystem, they don't cover C++ or JavaScript users, leading to fragmented tooling.
Product Impact
No response
Source: slint-ui/slint