A few weeks ago I started using Warp a terminal written in rust. Though in it’s current state of development there are a few caveats (tabs can’t be reordered, I am unable to use my beloved starship prompt, etc…) I absolutely love Warp’s out of box features. Among them nice text editing features, completions and a cmd palette.
Corresponding tweet for this thread:
Share link for this tweet.
Projects like this make me want to learn Rust
I just registered my interest - hope I get in soon!
What does it offer over standard terminal that you like?
I feel the same! In fact at work we just started using rust for some internal tools. So I have every excuse to dedicate some time to learning it.
The text editing features within the input line are huge for me. I love being able to navigate that space using standard Mac keyboard navigation. opt + left/right, cmd + left/right, combing those with holding shift in order to select text, adding line breaks and being able to use multiple cursors. Those have been difficult to impossible for me to setup in other terminals. That being said I hope they do more to allow you to navigate output blocks.
Blocks are great too! This week at work I was trying to get a build script to work after updating node, with blocks it allowed me to navigate the output for each attempt very quickly and compare them. You can copy blocks quickly and easily for sharing as well.
The cmd palette is really nice. It feels natural after getting used to it in VScode (GitHub has one now too, cmd + k). It just made it easy to start using Warp without needing to know all of the keyboard shortcuts or what function were possible.
I think Raycast although not a terminal, fits in here as well. They’re all startups building tools for developers. They want to make the the tool itself free but sell additional services along side it that companies will be interested in. I’m curious if it will work. Though hopeful since I think the tools themselves are compelling.
We should do a Rust In Action book club at some point? I got the book already (Can get you a copy if you like )
Thanks for the early access code!
For anyone interested here’s the current set of features:
It does look really nice, but my only issue is (as it is with other apps like VSCode) is that they want to connect to their servers:
Apps really only should connect when you specifically ask them to imo. In TextMate for example will only connect if you have set it to check for daily updates or when you specifically click on ‘check for update’.
I think I have trust issues
That would be awesome!
I understand completely. I’m giving them a pass because it’s in beta and this was called out by them specifically.
Under Our Product they discuss “a couple of required things sent to our server” during the beta period, and that this should not be the case for the open launch. I’ve also had an opportunity to speak with one of the devs. They seem like a for dev by dev sort of operation.
I’m assuming you’re using little snitch to block there request?
Fantastic - what sort of timeline did you have in mind? Unfortunately I won’t be able to get back into reading until the start of the year but want to finish Programming Erlang and Programming Phoenix first (hoping PP gets updated by then).
If you want to read it sooner, lets try and get a few others to join you - once we get up to say 5 we should be good to go
That’s good - I hope they follow apps like TextMate and MacVim and only connect when you expect them to and never send any kind of data or stats to their own servers. Checking for update really should just be sending the os and version number and that’s it. I really hope they make these changes because it looks like an awesome app otherwise
Those are controlled by the shell, not the terminal, if a terminal were to override those then it would break a lot of other inputs. Almost every shell let’s you change those for note, so if you want to, then change it in your shell. ^.^
Warp is… such a very poor name to pick though, there’s already a
warp library in rust that is a web server framework. They really should have looked at used names before picking that one…
o.O What the ever-living… Why would a terminal ever need to access sites like that?!?
If I saw that in my logs I’d immediately wonder if it was infected or something!
And yeah, there is no reason, whatsoever, ever, for a terminal not to be open source. Even Microsoft of all places has open sourced their terminal. Terminal’s are such security troublesome points that you really really need to make certain that it’s not something that’s going to be sending what you type to random servers, or really even making network connections on its own at all (that’s the job of the shells or whatever you’re running in it, a terminal is just a renderer and IO pipe)…
And their site forcing some links to open in new windows is extremely user-hostile, why would they do that?!? >.<
Speaking of, their ‘benchmark’ graph has a couple of massive outliers of terminals called
iterm (neither of which I’ve ever heard of? Why were such poor ones picked?), which massively skewed the rest of the results way way down to the bottom so you can’t actually compare it with the one other that I’ve ever heard of, out of the multiple dozens of terminals I use per month that one other that I’d heard of looks like it’s much much faster than warp but hard to tell since they are all squished into such tiny lines because of hyper/iterm. The massively mis-scaled chart makes it look so questionable (like at the very least they should have made it logarithmic if they wanted those massive outliers in, really makes it look like they are trying to hide something)…
Also, there is already a GPU accelerated terminal (in their benchmark even, the only one in it that I’d heard of, and happened to be the one that looked like it was beating it by a healthy percentage), so why didn’t they just base it on that one (especially since its faster), or did they not because then they would be forced to make it open source, lol.
Let’s see, it used the
vtebench benchmark, well, just the
scrolling one inside of it, none of the other (usually far more performance hitting) ones, wonder why they picked the easiest/cheapest one… Well let’s grab it as I don’t have it on this (very not up to date) system, aaand let’s runs it (I was also compiling a C++ application for the past half hour on the same machine so this probably slowed it down a bit, but even still):
So trying it with konsole and alacritty (alacritty as a base example as they used it as well in their benchmark):
And for comparison, here was their image:
So alacritty here is obviously slower than on their machine, which makes sense because this is not at all a modern machine (quite frankly ancient in many aspects), and in comparison even my most used (lots of features) Konsole terminal is not that much slower, and in their benchmark warp seems to be much much slower than alacritty by a much larger amount. Even in just raw values (not taking into account how much slower this machine very likely is) even Konsole, which is not built for speed but rather features, is substantially faster that most of their tests… o.O And again, why just the
scrolling test considering how utterly trivial it is?!?
Still though, the closed source’ness of it with such a hugely hugely security conscious interface makes me quite frankly very itchy… (do you really want a terminal potentially broadcasting what you type out or what is displayed back, whether messages, proprietary code, passwords, PGP keys, etc… etc…, because how do you verify it doesn’t? Why does a terminal emulator even have network functionality at all?!?)
That’s interesting, the terminals I’ve used have config files for this. Both Kitty and iTerm, though Hyper and VScode built in terminal do this out of the box. Perhaps they are affecting the shell ? However, I don’t want to configure those things, I just want the terminal to already be setup in an agreeable way. Though knowing that there may be a better way to configure such things may prove useful if I don’t stick with Warp.
My guess is those are the terminals that are popular with the audience they are targeting. As mentioned, I’ve used both of those terminals and I know many devs who have and who are currently used them for many years.
Here’s what they say about the source code for Warp:
More likely just sending the ‘default’ keys for those used by most shells and it’s just relying on you not changing those defaults? ^.^;
Don’t know why you would change it via a terminal anyway, that will just introduce a discontinuity when you are accessing your shell from somewhere else (which I do excessively, especially from my phone).
Huh, never heard of them, and their performance seems… subpar?
There’s no source code there is the issue, lol.
True, though under Contributing “Warp is currently closed-source and is not accepting contributions from external developers at this time, though we plan on open sourcing our app in the future.” Is this the best way to do things
I’ve never had good experience in such things because it means it can’t actually be tested by people that could actually help on it, meaning they very often end up getting a design that is subpar.
Hyper is an electron based terminal
Gee, wonder why it’s slow, lol.
Looks like a very similar feature set to Konsole except it seems to be slower as well as broken to only work on a single platform?
So they decided to post a new version announcement on Reddit, most of the comments seem to be incredibly unhappy… As am I, a lot of their decisions seem to be incredibly, incredibly poorly thought out…
They still haven’t fixed wanting to dial out either - this is what the most recent version wanted to connect to on start-up:
It’s a shame as otherwise it looks quite nice…
Yeeesh, I expected 1 at most… o.O