vtm
vtm copied to clipboard
Wow
Not an issue at all :)
This is the craziest most innovative stuff I've seen around terminals in a long time. This virtual desktop/views idea really lets you forget, that you are in a terminal emulator. It feels more like one of those assembly based OS with a fixed monospace font. :smile_cat:
Thank you for the kind words! It's very cool to hear that you like the way we think and the direction we're heading.
I would be glad if you have a desire to chat about how it works or what it is planned to build on its basis.
Initially, It was a testing ground for the development of a terminal app framework. At some point, this led to the creation of an environment for terminal applications.
The main goal is to create a framework that allows you to create cool terminal applications with minimal costs. Almost all UI is configurable declaratively. There is a flexible event processing system. All UI elements are multi-user aware, i.e. multiple users can interact with one UI widget. A minimal set of vt-commands is used for text output for maximum compatibility with most terminal emulators. UTF-8 is used everywhere and only UTF-8. Compile-time Unicode database synchronization is used to maximize support for the current Unicode standard, including character widths and grapheme clustering. Internally, only TrueColor is used for color support.
There is a runtime-configurable vt-parser that can parse all vt-commands with any number of parameters in one pass, it has only one requirement - the known validity of the vt-commands. The prefilter is responsible for the validity of vt-commands.
For maximum cross-platform compatibility, the project has no dependencies, except for the C++20 compiler 😀.
The craziest idea would be to apply this UI framework/architecture to a real GUI after it has been tested on text-based interfaces in terminals. Perhaps it will be possible to run the same binary both in the GUI and in the TUI with minimal or without any recompilation.
@o-sdn-o Sure thing, but I will need some time to explore it first. Maybe I can get to it at the weekend (if my vt525 experiments dont explode). Feel free to ping me back, if I dont make it in time.
Your list of features sounds promising, esp. the multi-user thingy. This ofc immediately creates demands, like fine grained access roles (r|rw) and how to configure that. The whole unicode topic is a nightmare for myself (as we have to deal with multiple versions at once), and the unicode consortium basically forgot about terminals right after their first failed UTF-1 attempt. I second the idea, that grapheme clustering is a must have for modern terminals, but support is still lousy (we also have not yet integrated our playground branch). Regarding truecolor - imho thats already safe enough to use among most popular TEs.
The craziest idea would be to apply this UI framework/architecture to a real GUI after it has been tested on text-based interfaces in terminals. Perhaps it will be possible to run the same binary both in the GUI and in the TUI with minimal or without any recompilation.
You mean the lib would render to different output systems, where a TE is only one of it? Outputs that come to my mind:
- TE (the obvious)
- framebuffer
- GUI - whatever toolkit/convenience the OS provides, eg. X11 (low level), Qt (cross platform), Win-API, cocoa, ....
- HTML (not quite easy to achive, but could be done as wraped into a websocket stream embedded into some glue-code document)
- for die-hard fans: postscript (just kidding, but it was turing complete)
Edit: Btw DEC itself already had a multi output lib "DECForms" for app side, that would either render to terminal or GUI. It even got extended to browser/html output later on (idk by whom, prolly HP).
You mean the lib would render to different output systems, where a TE is only one of it?
Exactly, in the simplest case, you only need some kind of intermediary rasterizer of a cell array into a graphic bitmap, as well as handling keyboard and mouse events, something like TE-microlight.
Edit: The binary that encapsulates a tiny TE for rasterization.
DECForms
Interesting, didn’t know about that.
The first such application will be the built-in vtm terminal. It will become a full-fledged cross-platform TE.
I will need some time to explore it first.
At the moment, the master
branch is about two months out of date. The most up-to-date branch is dev/sdn
, but some things don't work as expected there. I am completely reworking the built-in terminal.
Just dropping a side comment…I like the idea!!! And, I can test on a Mac or Linux when/if you get to that point.
Terminal rewriting is almost complete (branch dev/sdn
).
Now you can do the following:
Resize window during Debian APT apt
execution - a minimum of garbage is generated when progress bar is present:
The scrollback buffer can be scrolled with the mouse and all window margins remain frozen:
See #119 for details.
Just wanted to add myself to the amazed list! I got a military terminal with Pentium 166 on board and was looking for a light DE to test it out. I guess I just found exactly what I was looking for! :D Keep up the amazing work!
@tomek-szczesny Thank you for your feedback! The work is in full swing! 👌
Guys this is the craziest thing I've ever seen in my life Really wishing the devs for a bright future
I still have no idea how this works 😆 but it just does
Just heard about this today, this is really neat! Love the animations and drag-and-drop.
@o-sdn-o Just now reading the rest of this thread, and you mention being open for discussion. So hello! (And hi again @jerch ! It's been a while.)
Technologically, I would like to see the terminal as a viable medium for both work and art. I don't know if it will persist in its current form long term, but then projects like yours (and I LOVE the styling and advanced game aesthetic) show that a little bit of support in terminals does indeed go a very long way.
BTW would it be ok if I link to your projects?
@klamonte I am very glad to see you! As you can see, vtm uses the minimal functionality of the terminals, which is enough to display absolutely everything that can be displayed in the terminal window. The terminal serves only as a canvas, and behind this layer can be anything, the most sophisticated GUI for example. This approach significantly expands the scope of use of terminals. Here, most likely, we are already talking about a wrapper for any kind of applications that adapts the output to the canvas in the form of a terminal viewport. The main foundation on which such a wrapper is based: Unicode characters, Trucolor FG/BG, input devices - keyboard and mouse.
would it be ok if I link to your projects?
of course, this is done for everyone, at least for the sake of a source of inspiration. If it inspires someone or makes their work more productive, then that will be great! 😀
Cool, I've got a couple spots to put a link on. I will try not to hassle you with too many issues at once. :-) I am excited to see wherever it is your vision takes us to.
@o-sdn-o
I see you on Twitter, but it looks inactive. Still, I tagged you on a thread: https://twitter.com/AutumnMeowMeow/status/1489228917030502407
I've only got 11 followers, so this won't go anywhere, but: thanks for the inspiration! :) I hope more people check out vtm.
I have searched months for a project like this, then stop searching, and then discovered this by accident... I am really amazed by how cool this project is. I only know bash, so I am far away from creating something like this, but if this is implemented, I am thinking about writing applications for this DE-like program. I am thinking of it's own file-manager, text-editor (for coding, not ms-word) and maybe a webbrowser.
Thanks for an amazing Desktop for my text-servers!