chat
kitty
chat | kitty | |
---|---|---|
12 | 289 | |
102 | 22,064 | |
1.0% | - | |
2.5 | 9.9 | |
9 months ago | 2 days ago | |
Rust | Python | |
- | GNU General Public License v3.0 only |
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.
kitty
-
Just How Much Faster Are the Gnome 46 Terminals?
And kitty is much faster according to this: https://github.com/kovidgoyal/kitty/issues/2701#issuecomment...
Also typometer based measurements also on Linux. Shrug.
-
Level Up Your Dev Workflow: Conquer Web Development with a Blazing Fast Neovim Setup (Part 1)
kitty (Linux & Macos)
-
Warp, the modern terminal, is now available for Linux
A terminal with built-in telemetry and a pricing model... Just what I never wanted!
To avoid being too negative, I'll offer the option of Kitty[1]. My current favorite terminal. Supports many features.
Including my personal favorites:
* ctrl+c (as opposed to stupid things like ctrl+shift+c) to copy data only when you have content selected. Otherwise, ctrl+c sends a sigint like normal.
* font ligature support (a controversial feature)
[1] https://sw.kovidgoyal.net/kitty/
-
Non-code contributions are the secret to open source success
The ncurses/xterm maintainer also had quite a lot of friction with the developer of the kitty terminal emulator.
https://github.com/kovidgoyal/kitty/issues/879
-
I Just Wanted Emacs to Look Nice – Using 24-Bit Color in Terminals
IME, this is like the golden age of terminal apps in general and macOS-compatible ones in particular. There are several really good terminals for macOS:
[iTerm2 app](https://iterm2.com/)
[Kitty terminal](https://sw.kovidgoyal.net/kitty/)
[WezTerm terminal](https://wezfurlong.org/wezterm/index.html)
[Alacritty](https://github.com/alacritty/alacritty)
My daily driver is WezTerm…
- Runs on Linux, macOS, Windows 10 and FreeBSD
- [Multiplex terminal panes, tabs and windows on local and remote hosts, with native mouse and scrollback](https://wezfurlong.org/wezterm/multiplexing.html)
- [Ligatures](https://github.com/tonsky/FiraCode#fira-code-monospaced-font...), Color Emoji and font fallback, with true color and [dynamic color schemes](https://wezfurlong.org/wezterm/config/appearance.html#colors).
- [Hyperlinks](https://wezfurlong.org/wezterm/hyperlinks.html)
- [Searchable Scrollback](https://wezfurlong.org/wezterm/scrollback.html) (use mouse wheel and `Shift-PageUp` and `Shift PageDown` to navigate, Ctrl-Shift-F to activate search mode)
- xterm style selection of text with mouse; paste selection via `Shift-Insert` (bracketed paste is supported!)
- SGR style mouse reporting (works in vim and tmux)
- Render underline, double-underline, italic, bold, strikethrough (most other terminal emulators do not support as many render attributes)
- Configuration via a [configuration file](https://wezfurlong.org/wezterm/config/files.html) with hot reloading
- Multiple Windows (Hotkey: `Super-N`)
- Splits/Panes (Split horizontally/vertically: `Ctrl-Shift-Alt-%` and `Ctrl-Shift-Alt-"`, move between panes: `Ctrl-Shift-ArrowKey`)
- Tabs (Hotkey: `Super-T`, next/prev: `Super-Shift-[` and `Super-Shift-]`, go-to: `Super-[1-9]`)
- [SSH client with native tabs](https://wezfurlong.org/wezterm/ssh.html)
- [Connect to serial ports for embedded/Arduino work](https://wezfurlong.org/wezterm/serial.html)
- Connect to a local multiplexer server over unix domain sockets
- Connect to a remote multiplexer using SSH or TLS over TCP/IP
- iTerm2 compatible image protocol support, and built-in [imgcat command](https://wezfurlong.org/wezterm/imgcat.html)
- Kitty graphics support
- Sixel graphics support (experimental: starting in `20200620-160318-e00b076c`)
-
Kitty shortcuts work only with Latin characters - How to fix?
While researching how to fix the issue I found this GitHub issue with the fun number 606 (almost 666). First, I should say, that there is no easy solution. Shortly you have to specify for each shortcut mapping alternative with your keyboard layout. That means, for example, if your keyboard has Cyrillic "м" instead of Latin "v" then for making work CMD+V you should add also into configuration an additional line with "м".
- Citadel, a Calibre-compatible eBook management app
-
Waveterm
I haven’t tried this yet (so please take my commentary with a grain of salt), but my initial thoughts are: (1) it looks interesting, (2) it looks overwhelming (there’s a lot going on in those screenshots), and (3) it’s likely slow (I might be completely wrong).
To elaborate a bit…
1. I love good design work and well-designed (UI-wise) software, and it certainly looks like the creators of Wave Terminal have made that a priority.
2. UX-wise, there’s just too much going on. As someone who lives in my terminal (with the exception of browsing the web, I do virtually everything in my terminal), it’s the single most important piece of software on my computer and it can never get in my way. I used the same terminal for many years and only switched to kitty [0] a couple years ago after testing it for months. In all of those years, every single terminal I tested managed to get in my way. Somehow, kitty manages to be packed full of features without ever—not even once—getting in my way, being slow, or freezing up on me.
3. Generally speaking, I think building on open web standards is a great thing and a plus. Unfortunately though, even in 2023, my experience has been that it’s really hard to build performant software meant to be run on native platforms using web technologies; the few who get this right—e.g., Figma—are anomalies and they generally invest an enormous amount of time and engineering capital into squeezing out as much performance as possible. As I explained in #2, for something as critical as my terminal, not being performant is simply not an option, so as much as I love the idea of building on open web standards, it actually scares me for software like this.
That said, I’m obviously judging before trying here, so I’ll make some time to test Wave Terminal.
[0]: https://sw.kovidgoyal.net/kitty
-
Add padding to command?
to solve this I run Kitty with a tab bar on the bottom. this has tons of inspo: https://github.com/kovidgoyal/kitty/discussions/4447
-
Terminal Graphics Protocol
Those existing tools are poorly designed, if you read the article it has a link to the discussion about its design choices, which contains in turn discussion about all the problems with sixel https://github.com/kovidgoyal/kitty/issues/33#issuecomment-2...
What are some alternatives?
meetings - WebAssembly meetings (VC or in-person), agendas, and notes
alacritty - A cross-platform, OpenGL terminal emulator.
lunatic - Lunatic is an Erlang-inspired runtime for WebAssembly
wezterm - A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
chrono - Date and time library for Rust
tmux - tmux source code
embly - Attempt at building an opinionated webassembly runtime for web services
Warp - Warp is a modern, Rust-based terminal with AI built in so you and your team can build great software, faster.
lumen - An alternative BEAM implementation, designed for WebAssembly
iTerm2 - iTerm2 is a terminal emulator for Mac OS X that does amazing things.
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
Tabby - A terminal for a more modern age