jeff-hughes / shellcaster

Terminal-based podcast manager built in Rust
GNU General Public License v3.0
199 stars 13 forks source link

Rewrite the UI to use crossterm instead of pancurses #33

Closed jeff-hughes closed 2 years ago

jeff-hughes commented 3 years ago

This requires a relatively major rewrite of the UI, but would remove the dependency on ncurses, which can cause build issues on some architectures and also relies on some Rust crates that appear to be unmaintained at this point. Crossterm is built in native Rust, and apparently supports Windows consoles as well (though this isn't a major priority for shellcaster). Getting off ncurses would greatly streamline things and move to better-supported crates.

Termion would be the other general option for this, and has the advantage of being stable, but I much prefer the ergonomics of how crossterm handles queuing changes to the output buffer, styling content, and reading in input. It would be nice to use a stable crate here, but currently shellcaster is using pancurses which is v0.16.1, so it's already in unstable territory with regard to the terminal interface. Crossterm seems to be reasonably well-developed at this point (roughly 3 years old), so it seems relatively well-defined at this point.