chat
lipgloss
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.
-
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.
-
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.
-
Telnet lunatic.chat; A public command line chat server
[1]: https://github.com/lunatic-solutions/chat
lipgloss
-
When creating console based applications how do you replicate the following realtime updates:
I recommend looking at the charm libraries. Lip gloss https://github.com/charmbracelet/lipgloss can provide the styling and bubble tea can handle the screen updates and framework https://github.com/charmbracelet/bubbletea there is a premade progress bar component in bubbles library. https://github.com/charmbracelet/bubbles
-
A Java library to work with the ANSI OSC52 terminal sequence.
I saw https://github.com/charmbracelet/lipgloss and was wondering if there is anything equivalent in the JVM ecosystem. I couldn't find anything so I started crawling its deps tree and reimplementing to fall asleep at night.
-
Portal - a modern file transfer utility ๐โจ
nhooyr/websocket, shollz/pake, charmbracelet/bubbles, charmbracelet/bubbletea, charmbracelet/lipgloss, muesli/reflow, klauspost/pgzip and many, many more.
- toolman.org/terminal/decor
- Equivalent to Pythons Rich?
-
GUI brain tries to learn shell scripting
Off the top of my head i am thinking of charmbracelet/lipgloss but I don't know if its the best suited to my use case.
-
Powerful template for CLI projects in Go ๐น
Predefined colors for lipgloss
-
I built my first CLI tool to help me look up HTTP status codes!
Yes i've seen the centered text. Take a look at lipglossif you don't mind adding dependencies, they make the styling much more easier in my opinion.
-
Gum: A tool for glamorous shell scripts
At Charm, we generally use Go for all our libraries like Bubble Tea, Bubbles, and Lip Gloss. Go should be easy to pick up if you know JavaScript and Python. That being said there are also fantastic libraries available for Python (https://github.com/Textualize/rich) and JavaScript as well.
-
Gum: a tool for glamorous shell scripts
I think you can, but if you're using Go I would recommend using Bubble Tea, Bubbles, and Lip Gloss for better customizability and flexibility (you can also use the gum code as reference).
What are some alternatives?
bubbletea - A powerful little TUI framework ๐
pterm - โจ #PTerm is a modern Go module to easily beautify console output. Featuring charts, progressbars, tables, trees, text input, select menus and much more ๐ It's completely configurable and 100% cross-platform compatible.
protoactor-go - Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
rich - Rich is a Python library for rich text and beautiful formatting in the terminal.
charm - The Charm Tool and Library ๐
gum - A tool for glamorous shell scripts ๐
bubbles - TUI components for Bubble Tea ๐ซง
Apache Ignite - Apache Ignite
termenv - Advanced ANSI style & color support for your terminal applications
cobra - A Commander for modern Go CLI interactions
meetings - WebAssembly meetings (VC or in-person), agendas, and notes
spectre.console - A .NET library that makes it easier to create beautiful console applications.