Show HN: Rust+Svelte=Terminal

34 points by iondodon ↗ HN
Link to project:

https://github.com/iondodon/manter

Demo:

https://youtu.be/ZjAXMMMoKGg

This project aims to create a terminal with functionalities that improve the experience of using terminals. Examples of useful functionalities would be autocomplete suggestion, showing the current branch of a project, prepared scripts that can be reused, and others. You can come up with your ideas. The project uses technologies such as Svelte on the front-end, which offers flexibility regarding the implementation of the interface. On the back-end side, the most important part is the PTY. All the back end is implemented in Rust. The basic framework of the project is Tauri.

At the moment the terminal has suggestions only for some commands (cd, ls). To support more commands it is needed to add them in the Manter's "library" located at src/cli/library/library.ts. It is possible to have custom script based suggestions. For example if we write in the terminal “git checkout” and after we press Space, a dropdown will appear with all available branches.

A good analogy to understand the purpose of this project is the following - traditional terminals are like simple code editors while this terminal is like an IDE.

Anyone is welcome to contribute to this project with and ideas. Imagine the terminal you would like to use. Feel free to open any issue with suggestions and bugs.

13 comments

[ 3.1 ms ] story [ 45.2 ms ] thread
Interesting.

How performant is this?

Last time I checked Tauri's performance was not close to what you would get from native GUIs (mostly because it needs an entire webview). This is especially relevant for terminal like things as I any delay in keyboard driven apps feel jarring.

It writes "The basic framework of the project is Tauri." and it also uses xterm which is also used by Hyper and Theia.

So I don't think it will be better in performance...

> Examples of useful functionalities would be autocomplete suggestion, showing the current branch of a project, prepared scripts that can be reused, and others.

None of this are the terminals job. Shells and their tooling are doing this already very well. So what is this project adding new to the space?

So while this is interesting, and I applaud you for taking it on, I’m not sure what it adds above and beyond what existing TTYs provide. zsh/bash/fish/etc. already provide autocompletion, and there are even (Rust-based!) terminals like Warp that do what your doing here.
Warp is closed source and for-profit, so if it is indeed doing something different and interesting (I haven't tried it given the aforementioned facts) then this attempt is to be applauded and supported and ought to get far more attention and support here than Warp, IMO.
> 2. install the latest LTS Rust

Rust doesn't have LTS versions. Regardless, the project should mention a specific version for Rust and Node, just to be safe.

Besides that, PurpleRamen is right. None of this seems like a terminal's job. Some of the items you mention (autocomplete and current branch) are things you can do today with bash/zsh/fish and some plug-ins. I'm not sure what you mean by "prepared scripts", and why they can't be standard scripts or functions.

There's also https://www.warp.dev/ in this space. I don't use it - it doesn't support tmux yet - but it might be worth exploring.

looks like this project is using

    edition = "2021"
    rust-version = "1.57"
Thank you for the suggestion. Will fix the README.
Personally I love the concept and look forward to trying it.

I don't like that it requires my password, apparently because it uses "su" -- no other terminal does this! This stopped me in my tracks, I'm not going to to feel comfortable putting my password in when not expected.

Thank you for your feedback. Will try to switch to something else rather than su.
If interested in enhanced terminals, please take a look at DomTerm (https://domterm.org). It too optionally uses Tauri/Wry, though it can also also Electron, Qt, or a plain web-browser. You can embed images and rich text among other feayrures. DomTerm also has builtin tmux-like panes+tabs (mouse-draggable), detachable sessions, and a powerful "view" (selection) mode.
Sorry to be such a noob, but why is the build a hybrid with Node? I've done very few things with Rust or Node, but my first instinct would be to keep them separate, and use only Rust package management for this Rust project.