widecharwidth
Mosh
widecharwidth | Mosh | |
---|---|---|
2 | 152 | |
51 | 12,216 | |
- | 0.4% | |
4.0 | 4.6 | |
9 months ago | 27 days ago | |
Python | C++ | |
GNU General Public License v3.0 or later | 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.
widecharwidth
-
Terminal support for Emoji – or why terminals don't like families
>For example, iTerm2 considers the "rosette" emoji to have width 1
The reason for this is quite possibly that Unicode 9 changed the width for some codepoints (mostly emoji) from 1 to 2, and iTerm until very recently (don't know if it's released yet) defaulted to the Unicode 8 widths, with an opt-in escape sequence to change to Unicode 9.
>This approach comes from the wcwidth utility, and the comment at the top of the C source file provides further insight into the difficulties faced here.
That's link goes to Markus Kuhn's implementation from 2007. It supports Unicode 5, and is by now woefully out of date. You don't want to use it anymore.
Most terminals have their own definition, and the annoying part is that the client application and the terminal need to have theirs in sync or they get weird glitches when moving the cursor.
Shameless plug: Fish's solution is widecharwidth[0], which is a python script that parses the Unicode data files and generates a wcwidth for C++, Javascript and Rust. It's still a wcwidth, meaning that it has issues with joining code points, but it's at least a start. It's up-to-date with Unicode 14 and, unless they change the data format (again) should be easy to update to future Unicode releases.
It's public domain and used by at least fish and WezTerm.
[0]: https://github.com/ridiculousfish/widecharwidth
-
Mosh: The Mobile Shell
With fish we've made the experience that relying on libc isn't good enough.
Specifically in the case of connecting to a server that typically has an old libc with old unicode information, from a desktop that has a much newer system, or in case of ambiguous characters, where libc will just give you one width that might not match what the terminal actually renders (and they frequently have configuration options to change it!).
So we've made something we call widecharwidth (https://github.com/ridiculousfish/widecharwidth), which is a python script that parses the unicode datafiles (UnicodeData.txt, emoji-data.txt and friends) and generates a header you can #include.
And someone's opened a PR to mosh to integrate it: https://github.com/mobile-shell/mosh/pull/1143
Mosh
-
The IDEs we had 30 years ago and we lost
If you haven’t already, and I know this doesn’t hold up for GUI emacs or vim, but consider running them through https://mosh.org/
- mosh: Mobile Shell
-
Write Your Own Terminal
FWIW, I wouldn't try to parse escape sequences "directly" from the input bytestream -- it's easy to end up with annoying bugs. Longer-term it's probably better to separate the logic e.g.:
- First step (for a UTF-8-input terminal emulator) means "lexing" the input bytestream as UTF-8 into a stream of USVs, which involves some subtleties (https://github.com/mobile-shell/mosh/blob/master/src/termina...).
- Second step is to run the DEC parser/FSM logic on the sequence of USVs, which is independent of the escape sequences (https://vt100.net/emu/dec_ansi_parser ; https://github.com/mobile-shell/mosh/blob/master/src/termina...).
- And then the third step is for the terminal to execute the "dispatch"/"execute"/etc. actions coming from the FSM, which is where the escape sequences and control chars get implemented (https://github.com/mobile-shell/mosh/blob/master/src/termina...).
Without this separation, it's easier to end up with bugs where, e.g., a UTF-8 sequence or an ANSI escape sequence is treated differently when it's split between multiple read() calls vs. all in one call.
-
Typing Fast Is About Latency, Not Throughput
Btw, you can use mosh to hide the latency of SSH. https://mosh.org/
-
How do I enable new pane/tab with CWD while using mosh?
I've been using Kitty's SSH features for as long as I can remember but I recently setup Mosh and I really like how it doesn't drop connections and supports roaming.
-
Buying an iPad Pro for coding was a mistake
I am surprised many people write about ssh into a server. Mosh[1] feels more responsive and it also supports longer sessions.
[1] - https://mosh.org/
-
Prompt2, heads up; they are readying up another version Prompt2 has been abandoned by devs since iOS 14 / 1y ago in a crashing state - Now they want to make another money-heist cash-grab from its users by forcing them to upgrade one of the most expensive apps of all time.
Also they support Mosh which I install on my servers. It's way better than plain ssh when you're on mobile networks and wifi, especially with connections that are unreliable or bandwidth-constrained.
- Zellij New WASM Plugin System
-
networkingStarterPack
I’ve recently been experimenting with MoSH (Mobile Shell). Basically think SSH but with UDP - so more resilient to shoddy network conditions, roaming access points, etc.
-
How can I get a lisp image to run in the background?
If it is not for production (e.g. running as a daemon or a server) and you only care about the development, another ad-hoc way is using screen/tmus-like software incl. byobu, and combine it with mosh.
What are some alternatives?
muxile - Putting tmux on your mobile - Muxile is a tmux plugin that lets you control a running tmux session with your phone, no app needed.
Eternal Terminal - Re-Connectable secure remote shell
unicode-properties - Provides fast access to unicode character properties
tmux - tmux source code
DomTerm - DOM/JavaScript-based terminal-emulator/console
Gravitational Teleport - The easiest, and most secure way to access and protect all of your infrastructure.
mosh - Mobile Shell
Advanced SSH config - :computer: make your ssh client smarter
Windows Terminal - The new Windows Terminal and the original Windows console host, all in the same place!
Code-Server - VS Code in the browser
guardian-agent - [beta] Guardian Agent: secure ssh-agent forwarding for Mosh and SSH
PowerShell - PowerShell for every system!