https://github.com/MichalGniadek/klask
Automatically create GUI applications from clap3 apps
https://github.com/MichalGniadek/klask
clap gui rust
Last synced: about 1 year ago
JSON representation
Automatically create GUI applications from clap3 apps
- Host: GitHub
- URL: https://github.com/MichalGniadek/klask
- Owner: MichalGniadek
- License: mit
- Created: 2021-09-24T01:15:42.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-02-27T09:06:23.000Z (over 3 years ago)
- Last Synced: 2025-03-28T08:08:19.466Z (about 1 year ago)
- Topics: clap, gui, rust
- Language: Rust
- Homepage:
- Size: 374 KB
- Stars: 409
- Watchers: 2
- Forks: 25
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://crates.io/crates/klask)
[](LICENSE)
[](https://docs.rs/klask)
# Klask
Allows you to create a gui application automatically from clap (v3). Uses egui for graphics. [Changelog](CHANGELOG.md)
## Features
- Supports optional fields with and without default values
- Supports flags with multiple occurrences (`-vvv`)
- Has a native path picker
- Supports fields with multiple values
- Output is colored and has clickable links
- Combo boxes for arguments with only some values allowed
- Subcommands
- Optionally allow setting environment variables, stdin and working directory
- Progress bars
If you are using this library please contact me, I'm definitely interested!
Create an Issue if you find any bugs or would like a feature added!
Example gui:

Generated from [miniserve](https://github.com/svenstaro/miniserve)'s app:

## How it works
* The binary runs and there's no `CHILD_APP_ENV_VAR` environment variable ⇾ no user code runs, only the GUI is displayed.
* The "Run" button in the GUI is pressed ⇾ `CHILD_APP_ENV_VAR` is set, the binary is started again. Arguments are passed to `stdin` and `stdout` is intercepted for displaying output.
* The binary is run with `CHILD_APP_ENV_VAR` ⇾ the user-provided closure is run.