refterm
xterm.js
Our great sponsors
refterm | xterm.js | |
---|---|---|
37 | 51 | |
1,496 | 16,502 | |
- | 1.6% | |
0.0 | 9.7 | |
about 1 year ago | 6 days ago | |
C | TypeScript | |
GNU General Public License v3.0 only | MIT License |
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.
refterm
- Linux Terminal Emulators Have the Potential of Being Much Faster
-
What Happens Before the Main Function is Called ?
refterm, a terminal emulator proof of concept.
- Beside SDL, is there an easier way to just show a custom rectangle with text, cross-platform?
- Windows Terminal is now the default Windows 11 22H2 console
-
Why Modern Software Is Slow
> licensing it so that they couldn’t even look at it
https://github.com/cmuratori/refterm/blob/main/LICENSE
It’s just GPL 2.0, what are you talking about!?
Are Microsoft employees vampires that will burn up instantly if they merely glance at GPL code or something?
This is sour grapes nonsense from Microsoft. “We don’t like your tone so we won’t even dignify your argument by considering it.”
At one point an MS employee said they would love to fix their code as suggested by Casey but he refused to even look at the YouTube video!
“I would love to hear your arguments but I refuse to listen to the sound of your voice.” is next-level dismissive.
-
How can I create a rogue engine from scratch without curses?
Casey Muratori made a renderer/terminal a short while back. Might be a good reference of you intend to go that route. https://github.com/cmuratori/refterm
-
Microsoft insults dev then takes credit for their idea
You keep complaining that it's not a fully working terminal. Casey, on the other hand, writes here: [1]
> These features are not designed to be comprehensive, since this is only meant to be a reference renderer, not a complete terminal.
>most of the code in the parser/renderer part of the terminal is unnecessary and just slows things down. What this code needs to do is extremely simple and it seems like it has been massively overcomplicated
He means exactly what he says. Notably, refterm had almost no optimization applied to it.[0] The massive performance increase was entirely due to non-pessimization.[1]
>refterm actually isn't very fast. Despite being several orders of magnitude faster than Windows Terminal, refterm is largely unoptimized and is much slower than it could be. It is nothing more than a straightforward implementation of a tile renderer, with a very simple cache to ensure that glyph generation only gets called when new glyphs are seen. It is all very, very simple. A more complex codebase that parsed Unicode and rendered glyphs itself would likely be much faster than refterm for many important metrics.[0]
[0] - https://github.com/cmuratori/refterm
[1] - Refterm Lecture Part 1 - Philosophies of Optimization - https://www.youtube.com/watch?v=pgoetgxecw8
Sure but in this case it was grossly over-estimated compared to the under-estimated side. Casey did the implementation [1] to prove the point and also made explanatory videos [2] of it.
-
Burn My Windows
After that post they did implement a full reference implementation:
https://github.com/cmuratori/refterm/commits/main
And there is movement in getting changes into the terminal itself:
xterm.js
-
Terminal Emulators Battle Royale – Unicode Edition
Here is a screenshot: https://github.com/xtermjs/xterm.js/pull/4519#issue-17129655...
The master branch of xterm.js (which will become version 5.4) has a new experimental support for grapheme clusters, combining characters, and partial support for variation selectors, based on Unicode 15. (Contributed by Your Truly.) For now it needs to be explicitly enabled (see https://github.com/xtermjs/xterm.js/tree/master/addons/addon...) but in a later release we hope to make it the default. Most of the work is handled by the browser and the font, but xterm.js does need to detect cluster boundaries - which is what the addon does.
-
Terminal Support for Emoji
I'm on the VS Code team and maintain xterm.js which is what Hyper's frontend is based on. There are actually multiple developments happening in this area.
First, there's a contribution from the author of DomTerm which adds grapheme cluster support to xterm.js, which will correctly merge and size things like emoji that are called out in the post. This is currently based on Unicode 15. See https://github.com/xtermjs/xterm.js/pull/4519
Second, while Windows Terminal does seem to work with emoji sometimes, it doesn't all the time. I'm not 100% sure, but I think it may only work on Windows ptys, not in WSL for example. Last time I spoke with the team they said they're working on a rewrite which could lead to proper emoji support.
-
No-more-secrets: recreate the decryption effect seen in the 1992 movie Sneakers
Ooh, I lack the time to play with this, but I think someone could compile the lib to WebAssembly and tie it in to https://xtermjs.org/
Then you could have a web page with static DOM elements that do this effect!
- Terminal-like output library for js?
-
Integrating the WebContainer API with Node.js
xterm is a JavaScript library that provides a web-based terminal emulator with ANSI escape sequences, Unicode characters, and other features. It is easy to use and customize, making it a popular choice for adding a terminal interface to web applications.
-
Compile emacs to wasm?
The simpler path would be starting the WASM port using Emacs character mode running alongside an in-browser terminal emulator such as XTerm.js.
- Web browser remote desktop...?
-
Powershell Terminal within C# App
You can try embedding something like X-Term into webview, which will give a more real experience.
-
Can I make a Terminal with pyscript? Not just printing, I want a cursor and input as well.
There's not currently a straightforward way to do this in PyScript, no, but there have been several experiements that use Pyodide in combination with xtermjs to recreate console behavior in the browser. I could see that functionality being encapsulated into a PyScript plugin, but nothing like that exists in the ecosystem currently, that I've seen.
What are some alternatives?
gui.cs - Cross Platform Terminal UI toolkit for .NET [Moved to: https://github.com/gui-cs/Terminal.Gui]
noVNC - VNC client web application
Windows Terminal - The new Windows Terminal and the original Windows console host, all in the same place!
ttyd - Share your terminal over the web
node-pty - Fork pseudoterminals in Node.JS
notcurses - blingful character graphics/TUI library. definitely not curses.
react-resizable-and-movable - 🖱 A resizable and draggable component for React.
kitty - Cross-platform, fast, feature-rich, GPU based terminal
Monaco Editor - A browser based code editor
blessed - A high-level terminal interface library for node.js.
coc.nvim - Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.
termbench - Simple benchmark for terminal output