Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/emarifer/rust-fltk-todolist
Rust/fltk-rs desktop demo application that uses the fltk-rs GUI framework and persists data in a database-like binary file, performs a full CRUD, and displays a to-do list in GUI.
https://github.com/emarifer/rust-fltk-todolist
dark-theme fltk fltk-gui-library fltk-rs persistent-storage rust rust-lang todolist
Last synced: about 2 months ago
JSON representation
Rust/fltk-rs desktop demo application that uses the fltk-rs GUI framework and persists data in a database-like binary file, performs a full CRUD, and displays a to-do list in GUI.
- Host: GitHub
- URL: https://github.com/emarifer/rust-fltk-todolist
- Owner: emarifer
- License: gpl-3.0
- Created: 2024-05-08T17:12:41.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-05-09T11:34:54.000Z (8 months ago)
- Last Synced: 2024-05-09T18:41:30.690Z (8 months ago)
- Topics: dark-theme, fltk, fltk-gui-library, fltk-rs, persistent-storage, rust, rust-lang, todolist
- Language: Rust
- Homepage:
- Size: 602 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
rust-fltk-todolist
Rust/fltk-rs desktop demo application that uses the fltk-rs GUI framework and persists data in a database-like binary file, performs a full CRUD, and displays a to-do list in GUI.
![GitHub License](https://img.shields.io/github/license/emarifer/request-maker) ![Static Badge](https://img.shields.io/badge/Rust-%3E=1.77-orangered) ![Static Badge](https://img.shields.io/badge/fltk–rs-%3E=1.4.29-blue)
>🤦 Yes, just another to-do application, but to try something new you have to start somewhere ¯\\\_(ツ)\_/¯.
### 🤔 Explanation
`fltk-rs` is a Rust bindings for the [FLTK](https://www.fltk.org/) Graphical User Interface library.
The `fltk crate` is a cross-platform lightweight gui library which can be statically linked to produce small, self-contained and fast gui applications.
Why choose `FLTK`?
- Lightweight. Small binary, around 1mb after stripping. [Small memory footprint](https://szibele.com/memory-footprint-of-gui-toolkits/).
- Speed. Fast to install, fast to build, fast at startup and fast at runtime.
- Single executable. No DLLs to deploy.
- Supports old architectures.
- `FLTK`'s permissive license which allows static linking for closed-source applications.
- Themeability (5 supported schemes: Base, GTK, Plastic, Gleam and Oxy), and additional theming using [fltk-theme](https://crates.io/crates/fltk-theme).
- Provides around 80 customizable widgets.
- Has inbuilt image support.Here is a [list](https://en.wikipedia.org/wiki/FLTK#Use) of software using FLTK. For software using fltk-rs, check [here](https://github.com/fltk-rs/fltk-rs/issues/418).
- [Link](https://github.com/fltk/fltk) to the official FLTK repository.
- [Link](https://www.fltk.org/doc-1.4/index.html) to the official documentation.#### `Fluid`
`FLTK` offers a GUI WYSIWYG rapid application development tool called FLUID which allows creating GUI applications. Currently there is a video tutorial on [youtube](https://www.youtube.com/watch?v=k_P0wG3-dNk) on using it with Rust: Use `FLUID` (RAD tool) with Rust (more info [here](https://fltk-rs.github.io/fltk-book/Fluid.html)).
#### Resources:
- [Book](https://fltk-rs.github.io/fltk-book/)
- [Documentation](https://docs.rs/fltk)
- [Videos](https://www.youtube.com/playlist?list=PLHqrrowPLkDu9U-uk60sGM-YWLOJFfLoE)
- [Examples](https://github.com/fltk-rs/fltk-rs/tree/master/fltk/examples)
- [Demos](https://github.com/fltk-rs/demos)
- [7guis-fltk-rs](https://github.com/tdryer/7guis-fltk-rs)
- [FLTK-RS-Examples](https://github.com/wyhinton/FLTK-RS-Examples)
- Erco's FLTK cheat [page](http://seriss.com/people/erco/fltk/), which is an excellent FLTK C++ reference.#### Conclusion:
Use this library if you want something very, very light, quick to code and compile... and you like somewhat minimalist interfaces like me.🤓
### 👨🚀 Getting Started
#### Run the application:
Install the Rust toolchain and run the following command in the root directory of the project:
```bash
cargo run
```#### 🖼️ Screenshot
###### Application window showing pop-up corresponding to the description of an item in the ToDo list:
#### Create an app bundle (`.deb` file & executable binary for MacOS/Linux):
Run the following command at the root of the project (it is necessary to have installed [`cargo bundle`](https://crates.io/crates/cargo-bundle) in the system using `cargo install`):
```bash
cargo bundle --release
```>[!NOTE]
>***On Linux, if you install the application using the `.deb` file, a `.todo.dat` file will be generated in the user folder. We can establish the path of said file if we edit the application's preferences from its launcher.***### Happy coding 😀!!