chat
tui-rs
Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
chat
- Lunatic is an Erlang-inspired runtime for WebAssembly
-
Charm – tools to make the command line glamorous
TUIs over ssh/telnet can be a lot of fun. Especially in cases where multiple people can interact with each other on the server. It simplifies the programming model as you only have one state on the backend that you render to multiple connections. Syncing up everyone becomes trivial. You can also use some React concepts, like rendering a virtual TUI and sending just the right set of minimal escape sequences back to the user to bring their display up to date.
A few months ago I implemented a telnet chat server[0] for fun and it was surprisingly easy to do so. Even by using a wasm vm that I was still working on at the same time.
[0]: https://github.com/lunatic-solutions/chat
-
Launch HN: Lunatic (YC W21) – An Erlang Inspired WebAssembly Platform
We are investing a lot of effort into making Lunatic feel native to the particular language and ecosystem. If you look at the Rust chat server we built in Lunatic (https://github.com/lunatic-solutions/chat), it fully integrates with cargo. You just run your typical “cargo run” command, it will compile the app to wasm and use lunatic to run it. If you want to run your test, you can just do “cargo test”.
wasm-bindgen is necessary only because it’s really hard right now to merge the wasm world and the JS one in the browser. We have the advantage here of staying out of the browser.
-
How I built a telnet chat server in 2021 with WebAssembly
It took me around a week to build it with Rust + Lunatic and you can check out the code here. If you would like to try it out you can connect to it with:
-
The Stakker actor runtime: Beyond "Go++"
Recently I implemented a command line chat server in Rust using an actor framework. I model each TCP connection as an actor.
-
I built a telnet chat server with WebAssembly
Hi HN,
I'm working on an Erlang inspired WebAssembly runtime for the backend[0]. Recently I added TCP support and was looking for apps I could build with it. I ended up building a telnet line chat app. It was a great dogfooding experience and has a nice retro feel to it.
You can access the US server with:
> telnet lunatic.chat
or the EU one with:
> telnet eu.lunatic.chat
Pick the one closer to you, as all the rendering is done on the backend and lower latency will mean better UX.
The server is open source[1] and written in Rust. The Rust code is then compiled to WebAssembly and runs on top of Lunatic. Each connection runs in a separate (lightweight) process, has it's own state and sends just a diff of esc-sequences back to the terminal to bring it up to date with the current render buffer. Everything is deployed to an ARM Linux box.
[0]: https://github.com/lunatic-solutions/lunatic
[1]: https://github.com/lunatic-solutions/chat
- WebAssembly Powered Telnet Chat
- Lunatic.chat – A WebAssembly powered telnet chat
- A telnet chat server powered by WebAssembly
-
telnet lunatic.chat – A chat server for the terminal
The server is open source and written in Rust. The Rust code is then compiled to WebAssembly and runs on top of Lunatic. Each connection runs in a separate (lightweight) process, has it's own state and sends just a diff of esc-sequences back to the terminal to bring it up to date with the current render buffer. Everything is deployed to an ARM Linux box.
tui-rs
-
Trippy – A Network Diagnostic Tool
The TUI is built with the awesome Ratatui [0] library (formerly tui-rs [1]). UX is certainly not my area of expertise and I would not have been able to create Trippy without this library.
[0] https://github.com/ratatui-org/ratatui
[1] https://github.com/fdehau/tui-rs
-
Projectable: A TUI file manager built for projects
Rust has great libraries for TUIs. tui-rs (https://github.com/fdehau/tui-rs) has been used in numerous popular applications, but is unmaintained. ratatui (https://github.com/tui-rs-revival/ratatui) is the maintained version, and is pretty new. Less widely known is cursive (https://github.com/gyscos/cursive), which I have yet to try.
Aside from the libraries, I just wanted to start a project that would make be better at Rust. The easy distribution with cargo is a huge bonus though.
- ratatui 0.21.0 is released! (community fork of tui-rs)
-
Looking for advice around project direction using artix-web
CLI, use Clap. If you want to get fancy, use Tui.
-
[Media] Introducing Trippy: A Network Diagnostic Tool
u/lordnacho666 It uses the fabulous https://github.com/fdehau/tui-rs (now revived as https://github.com/tui-rs-revival/ratatui) TUI lib.
-
Introducing TUI-Journal: Your Personal Journal/Notes App for Terminal Enthusiasts
This app is based on the these two crate in rust (tui-rs , tui-textarea). The text area provide the Emacs motions and I integrated the vim motions there, but the editor in this app as much simpler than the huge VIM and Emacs systems
If you interested in the TUI apps in rust you can start with the crate tui-rs or its revival ratatui. They have examples inside of them which you can start and see the source code to get the basic functionalities. For the text editor you can check examples in the crate tui-textarea.
-
Ink: React for interactive command-line apps
For Golang there is Bubbletea [1], Textual [2] for Python and tui-rs for Rust [3].
[1] https://github.com/charmbracelet/bubbletea
[2] https://github.com/textualize/textual
[3] https://github.com/fdehau/tui-rs
-
Building a task manager app on CLI similar to "top" command in Linux, how to add a feature to kill processes via process ID?
You can check tui-rs, is a library to build CLI interfaces and has some examples about using user input without blocking the UI
- [Rust] Si vous voulez relancer la caisse `` Tui`, rejoignez-nous!
What are some alternatives?
meetings - WebAssembly meetings (VC or in-person), agendas, and notes
crossterm - Cross platform terminal library rust
lunatic - Lunatic is an Erlang-inspired runtime for WebAssembly
Cursive - A Text User Interface library for the Rust programming language
chrono - Date and time library for Rust
pancurses - A Rust curses library, supports Unix platforms and Windows
embly - Attempt at building an opinionated webassembly runtime for web services
Termion - Mirror of https://gitlab.redox-os.org/redox-os/termion
lumen - An alternative BEAM implementation, designed for WebAssembly
monkeytype - The most customizable typing website with a minimalistic design and a ton of features. Test yourself in various modes, track your progress and improve your speed.
mapscii - 🗺 MapSCII is a Braille & ASCII world map renderer for your console - enter => telnet mapscii.me <= on Mac (brew install telnet) and Linux, connect with PuTTY on Windows
rich - Rich is a Python library for rich text and beautiful formatting in the terminal.