Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Hyper 3.0.0 (github.com/zeit)
90 points by michaeljohansen on May 7, 2019 | hide | past | favorite | 98 comments


I just don't understand the use case here. It's an Electron-based terminal... that has a thousand pretty themes, but lacks basic functionality like being able to expand your scroll buffer. It's just not usable as a daily driver.

I'm not trying to hate on Electron (VS Code is my main editor now, and I enjoy it). But I just don't see the point here other than, "Look what they wrote with Electron!". Is it the "social" aspect of posting color themes and seeing how many downloads you get, and I'm just old?


No youre not old, just wise. Terminals are actually pretty complex beasts and performance matters above all, closely followed by compatibility. I feel the same way as you.

Or maybe we're both just old. Lets chase the kids off our lawn, get some dr pepper and fire up the alphaservers?


Ditto here. Given how performance- and security intensive a terminal emulator is (who wants to add JavaScript injection to their list of server security worries?), writing one in Electron seems a bit nuts to me.


well as long as it's not EVAL'ing the .... wait they wouldn't ... OH NO


We all enjoy customising our setup?

A web dev friendly developer experience and a javascript plugin ecosystem opens that up to a new audience.

It's a pretty big audience. I guess the hope is that raises the bar for what users expect from a terminal and it's plugins, while providing performance that is adequate enough for it's target audience.


I dunno. An audience that's fine with a 1,000-line scroll buffer probably aren't heavy terminal users in the first place. Before you can "raise the bar", you need to reach feature parity with the built-in OSX terminal, or any of the hundred Windows apps like ConEmu.


That's kind of what I mean—the audience for this isn't heavy terminal users. You can still raise the bar for them!


Just because you don't consider yourself part of the audience doesn't mean this isn't intended for heavy terminal users. I'm using it right now and I'm impressed by the performance with dozens of production logs that aren't limited to a thousand lines of scrollback.

Gatekeeping isn't inclusive.


Hey! No need to play gatekeeper. FWIW, when using tmux, a scrollback of 0 is more than plenty.


I'm not sure what a "gatekeeper" is, or the concern with it being "not inclusive". I suspect this is Twitter jargon, leaking out more broadly.

Terminal apps are a 1970's concept. We're discussing the possible use cases for a brand new one, which has yet to implement a number of basic features common to virtually all existing ones.

If anyone happens to not need those common features, and does have use cases satisfied by the new entry, then that's great! Your existence is not invalidated, there is no membership card for anyone to revoke.

However, while I'm not sure if there's a contemporary jargon term for expressing this in a single word... you should perhaps avoid "raise the bar" boasts, if you're simultaneously sensitive to anyone else pointing at a bar.


tmux has scroll back, just hit ctrl-b [


I suppose to the many JS developers out there (which is a lot), having your software built in it makes it easier and more appealing to write extensions for. I have no data, but it's my impression that the growth curve for VS Code extensions compared to VS "classic" is much steeper.

This may or may not be a good thing but IMO it does tend to make some interesting and novel things surface.


It's just an experiment. If you try to use it and you use the terminal for work you'll see that it freezes and crashes often with more that a few hundred lines, and that it uses a lot of RAM.

It looks cool, though!


I think it’s just WIP. Just like VS Code wasn’t perfect from the start.

But I can imagine it following the same path. Ecosystem becomes more mature. Plugins get more sophisticated.


its one of the few options you can use on both windows and osx with the same themes and plugins etc. However, i agree, it wasn't able to get me to stop using item2


[flagged]


Wow, talk about someone I wouldn't want to work with...

Regardless of whether or not the app makes sense or should be used, (I am not a fan of it), the rhetoric you are using is childish and immature. You can voice dislike without being an asshole about it.


Well, this is odd. I agree with him, and I really do not care about the way he expressed his opinion to the point that I would work with him more than people who think that an Electron-based terminal is a good idea. If I have to choose between the two, I would choose the former. We are different, I suppose, which is OK.


I imagine that at one point there were people that didn't want to work with people who thought that garbage collection was a good idea. Or IDEs. Or high-level languages.


Sure. I wish I could work with hardcore C programmers. :D


Voicing dislike with brutal honesty is far more effective. And it's the truth. Why should the truth be watered down? Just to make a few sensitive people feel better? That's not reality. As far as I'm concerned, that is fraud.


> Voicing dislike with brutal honesty is far more effective

then your way of voicing it is not brutal honesty, because you are most definitely not being effective, the only thing you are going to accomplish is putting whoever you are talking to on the defensive and now you lost your opportunity of convincing them. Or maybe brutal honesty is not that effective, you choose which one of the 2


You can say the truth of the matter without being brutal. You are trying to tear down someone that contributes to open source, and whether or you not like it, people out there do or they wouldn't still be developing it.

And contrary to what you seem to think, if you don't like the product don't use it, and better yet don't comment on it as you aren't helping anyone.


What's fraud is that you represented your opinions in such a tremendously ineffective way that none of us can read them now, and you are acting like you blessed the world. Nobody even knows what your opinion was, I hope you're happy.


Yes, it was admittedly a while ago but I looked hard for killer features or at least something that makes use of this obscene abstraction of Electron, but I could only find minor features. I mean, for Windows Conemu or Cmder looks much better. And soon Microsoft’s own upcoming Windows Terminal looks better too.


I gave up on Hyper about 8 months ago after only using it for a few weeks.

2.1 was close to unusable on Windows. Major prompt / cursor bugs (it would disappear all the time), ~200ms input latency (but a terminal's only job is to make typing feel awesome) and it took 5 seconds+ to open on an SSD. I reported a number of those issues but the maintainers didn't even respond even though people were commenting that it was a problem for them too.

Since then I've moved to wsltty for WSL and it's great when combined with tmux. Lightning fast with all of the terminal features you could ever want thanks to tmux (separate windows (ie. tabs), split panes, buffer searching and session saving / restoring). Close to zero input latency too as of wsltty 3.0.0.


Windows Terminal was just released yesterday, which might be a good option for you. It's even open source: https://github.com/Microsoft/Terminal


Unfortunately that terminal requires an insider's version of Windows to run.

Enabling insiders means MS will track a bunch of data about you besides anonymous metrics and you can't opt out of it because insiders requests that info.

WSL v2 and / or that terminal sounds good but it may not be until Oct 2019 or Apr 2020 before the stable Windows channel sees it. They tend to release 2 major updates a year and if WSL v2 is only being released in June 2019 for insiders it's quite the push to have it ready by Oct 2019 for stable.


> Enabling insiders means MS will track a bunch of data about you besides anonymous metrics and you can't opt out of it because insiders requests that info.

As much as Microsoft tries to change it still remains the same...

So much for developers.


Hyper is all I use on Mac OS but on Windows I had some trouble with it so I started using Terminus - https://github.com/Eugeny/terminus

Looking forward to trying out Hyper 3 on Windows when I get home :)


I tried Terminus too. I compared a whole bunch of terminals a while back at: https://nickjanetakis.com/blog/conemu-vs-hyper-vs-terminus-v...

I have no intention of ever using Hyper again but I did attempt to install 3.0.0 to see if anything improved just from a pure curiosity standpoint.

After running the setup program, it opens a green rectangle that animates. I can only assume that's the installer, except it doesn't let you customize where it gets installed to or anything like that. After 5 full minutes of animating without ever providing a UI hint that it's doing something (on an SSD), I killed the task. I guess I'll never know!


Lol


In before the JavaScript gripes begin. How about we skip the Electron whinging this time?

I haven't switched to Hyper because I have found it a bit pokey and that doesn't work for me, but I'll still give this one a try. I'm curious to hear about any interesting reasons other people _have_ chosen Hyper, or particularly cool things it enables by being built on web technologies. Anybody?


> In before the JavaScript gripes begin. How about we skip the Electron whinging this time?

I have a feeling that it's used to farm hate (as karma or "acceptance"). In a less accusatory way, let me say, I think that people really like to see that other people share their hate. This is just my gut feeling though, as I don't share their passionate hate,even though I don't "love" electron.


Update: Hyper 3 feels super-fast. Startup and new tabs are somewhat sluggish still but actual rendering responsiveness seems real nice.


Sad commentary on the state of the world when you feel the need to comment on the speed with which a computer can pain text to the screen.

If you read their changelog you'll see that Hyper 3.0 uses WebGL to achieve this.

OpenGL. To draw text at a reasonable speed. It's not individually an insane thing to do within the context of Electron, etc. but take five steps back and talk about using a sledgehammer to crack a nut...


It's not insane. FYI the fastest terminal (alacritty) achieves its performance by rendering via gpu, and it's written in rust. iTerm recently started doing it too.


But if you look at input latency benchmarks (there was one posted not too long ago on HN, maybe a month or 6 weeks ago) alacritty isn't close to the fastest terminal for pressing a key and being able to see the key on the screen.

IMO pressing a key and seeing it is the primary focus of a terminal.


Here is an output latency benchmark [1]

[1] https://github.com/jwilm/alacritty/issues/673#issuecomment-4...


I wrote the WebGL renderer after explorations in rendering the text using a 2D canvas which simply didn't live up to my expectations. It wasn't so much about drawing text at a "reasonable" speed, that was very easy to accomplish using the DOM, it was about excelling and trying to reach native-level performance from within a web context.

You can argue about the downsides of Electron all you want, but in xterm.js (the component that does the terminal parsing/rendering that Hyper consumes) we have a portable terminal frontend that can run on anything that has a webview and is getting really fast. It's also used in _a lot_ of software[0]. I wouldn't call that particularly sad.

https://github.com/xtermjs/xterm.js#real-world-uses


Actually that's a very reasonable thing to do. macOS has been using hardware accelerated graphics since 10.0, and leveraging this is better than fighting it.

Also see https://github.com/jwilm/alacritty


+1 for Alacritty. I've been using it as my daily driver (switched from iTerm2) for a few months now and I couldn't be happier.


How do people use Alacritty as a daily driver when it can't open more than one window?


Tmux. Alacritty lacks basic things like splits or tabs so tmux or screen are recommended.


I know that's the answer for running multiple sessions at once, but even if you're a tmux expert I don't see how people live with only one window. I constantly have multiple iterm windows open and frequently open new windows for one-off things.


If you're a tmux expert, it'd work something like this:

1) You don't have the default config/bindings.

2) You use some plugins.

3) You use multiple _panes.

4) You use multiple _windows_ (Do not confuse these 2).

5) You save sessions which persist between tmux sessions/reboots.

6) You run your terminal full screen or at least maximized.

Example:

I make a pane with ctrl+a (I don't use ctrl+b as tmux hotkey) plus - or plus |.

I make a window with ctrl+a + c.

I can switch between panes with ctrl+a + hjkl (or pointer).

I can switch between windows with ctrl+a + 1234567890 (or pointer).

So what matters is that running multiple terminal windows side by side is akin to using Tmux panes, and using multiple terminal tabs is akin to using Tmux windows.

It requires some practice to get used to it because basically Tmux becomes more and more your window manager...

(You can even run Firefox in a terminal btw, with Browsh.)


Same, I try it every few months to see if its tmux support has improved. So far no luck!

I actually really like the way it's configure/managed, the whole `hyper install foo` is pretty nice.


been using it for over a year on my windows machine, never really had any issues. probably gonna try out the new microsoft terminal soon tho


I have been using Cmder on Windows for a while, but Hyper has also looked really good.

With the announcement of the new Windows Terminal, I wonder if these projects will become irrelevant. The only reason I use Cmder is for tabs, and once I have Windows Terminal with that feature, I doubt I would ever use Cmder or Hyper.


If you adapt using tmux then you are free to pick whatever terminal you want because tabs / split panes are done very well in tmux.

For example I tried nearly every terminal on Windows and ultimately use wsltty because tmux offers nearly instant tabs and split panes, buffer searching and everything else you could want in a terminal.

Here's a whole write up on the comparisons: https://nickjanetakis.com/blog/conemu-vs-hyper-vs-terminus-v...


Perhaps. I love tmux for multiple terminals in one SSH connection, but I'm a big fan of tabbed browsing, tabbed file explorers, etc., so having tabs in my terminal just makes sense. I could probably get used to tmux handling tabs and split panes all the time.


Yeah a terminal tab maps 1:1 with a tmux window. Same type of feature. You can also use the mouse and / or keyboard to navigate between everything.


Only downside is you can't (easily) map Ctrl+Tab to switch between tmux Windows. Doesn't matter much if you spend your life in the terminal, but for occasional users consistency between applications is important.


What do you use/recommend for tabbed file explorer?


I mean I use Dolphin because I'm a KDE user, but I believe it's possible in Windows with the Set UI [0]. There are third party Windows file explorers but I don't have any experience with them.

[0] https://www.tenforums.com/tutorials/102362-turn-off-tabs-app...


If you don't mind the command line with WSL there's ranger. It has tabs (but you also have access to tmux too if you use it).


IMHO windows needs a beginner friendly & built-in tiling window manager. Then nobody would care about the lack of tabs in cmd or explorer.


Yeah. I wish someone would build a native port of i3wm.

There's an autohotkey project that tries to be a tiling window manager but it's quite buggy and feels very forced. Cool project tho.


Hyper certainly looks cool, but “looks cool” doesn’t cut it when it comes to winning me over for what might be the #1 most important tool I use on a daily basis. Is there a page telling me why I should use this over my current terminal (iTerm2, FWIW)?


This is my personal experience, but for me, considering that the terminal is so frequently used, the small improvements add up over time.

I found the font rendering more pleasant on the eyes. I'm not entirely sure why this is, and I'd be interested to see what options could be tweaked in iTerm2 to make it visually similar, but Hyper just "feels" nicer to look at for me.

Second, I've found it useful to be able to customize my terminal with web technologies. Previously I used a custom prompt with lots of different bits of context (git status, node environment, python environment, Kubernetes context, etc). With Hyper it's been fairly easy for me to create a local plugin that renders a statusbar with those bits of context. It's built with React, CSS, etc, so personally the ability to easily adjust and create is super nice.

Two things I miss from iTerm2 are infinite scrollback and the ability to search output with Command-F. I would assume there's a plugin out there to handle searching, I just haven't looked that far into it yet.

Performance of Hyper 2 was adequate enough for me to switch. I'm interested to see how Hyper 3 compares.

I'm also interested in iTerm2 3.3, which overhauls the iTerm2 UI.

tl;dr - small customizations add up. It's basically the same migration as when I moved from Sublime Text to Atom (though I use VS Code now)


You say the small things. You mean like, how quickly the terminal opens and how quickly text gets painted on the screen?

iTerm2 blows hyper out of the water in those regards, and it actually does add up. Styling otherwise really isn't that difficult, but it begs the question of why do you need so much information? Are you actually developing or just spending time tinkering on your terminal to have bells and whistles that you don't actually even look at? Surely a simple colorscheme + font that aliases correctly should be enough to "feel nice" to look at?

The only thing keeping me from the better performance of alacritty is iterm2's infinite scrollback and some other miscellaneous features that alacritty will probably never get.


Yeah, I mean all this is very subjective. For me I don't care about terminal open speed since I keep the app always running, and my criteria for text rendering speed is it has to be fast enough to not be annoying, which is the case for me.

It's less about having lots of info and more about being able to control how it's displayed. I really only have a few things I keep around in my prompt / status bar, and they're all immediately useful to the task at hand and are reflective of the current project I'm working inside - I jump around a lot between tech stacks for personal and work environments, and being able to know where I am is important:

- what's the git status of this project

- is this a Python or Node app

- am I inside a virtualenv

- what's the Kubernetes cluster context name

- what's the currently active Kubernetes namespace

I really hate visual clutter, so the ability to move some of this stuff to a status bar rather than keeping it around on every repaint of the prompt, and be able to exactly style it as desired with CSS, is what attracted me to Hyper. This applies to the whole UI, if there's any element I don't like, I can change it.

Similar to you, I've considered switching to Alacritty, but it doesn't hit the features/customization to performance ratio for me.


For those wondering, HTML/JS/CSS terminal. https://hyper.is/ gives more useful introduction.


I've been using Hyper 3 Canary for a while, if you're on Windows it's a MASSIVE difference from previous versions - all the normal stuff you expect to work (select to copy, right click paste, rendering, readline shortcuts etc) works (with a little tweaking, see below). It's definitely usable as a daily driver.

I've been using Windows Terminal in the last 24 hours and it still has some major bugs. While I'd say Fluent Terminal is the best in terms of being lightweight and feature filled, and Alacritty for raw power if you have big shell workloads, Hyper 3 is pretty damn good and worth a try.

Sane defaults:

Use pwsh (not cmd, that's the Windows equivalent of launching 70's Bourne shell on a *nix box):

    shell: "C:\\Program Files\\PowerShell\\6\\pwsh.exe",
    shellArgs: [],
Normal new tab, close window keys, make readline keys work:

    keymaps: {
      "tab:new": "ctrl+t",
      // Also known as 'close tab'
      "pane:close": "ctrl+w",
      // Bug workaround for https://github.com/zeit/hyper/issues/2873
      "editor:movePreviousWord": "",
      "editor:moveNextWord": ""
    },


My choices are as follows.

* Linux:

# Tilix - probably the best option in terms of performance, customization, looks and features.

https://gnunn1.github.io/tilix-web/

# Extraterm - in my experience the best electron-based terminal emulator in terms of performance. It has some neat features too. I catch myself using it more often than Tilix.

https://github.com/sedwards2009/extraterm

* Windows:

# CMDer - pretty much the only option. Has everything one needs, even built in bash on Windows. Useful on Windows 7 PCs at work that don't have WSL or admin rights to install more stuff.

https://github.com/cmderdev/cmder

* MacOS

# Plain old built in terminal is actually nice ;)

# Extraterm is alright too, but it's electron based and the old mac-mini does not really like it.

# iTerm 2 - never got around to fully configuring it, but everyone swears by it.

https://github.com/gnachman/iTerm2


cmdr/conemu's copy paste is broken on my work pc.

i tried all available copy-paste options (i think there were 4?). none worked. also, the screen keeps flickering with cmdr.

probably a byproduct from the cheap hardware or virus scanner... so hyper won by default.

i'm looking forward to the new windows terminal though. it'll hopefully get rid of that atrocity.


I usually use ctrl+c/ctrl+v for single line copy paste.

For multi-line the only thing I found to work was right click :) it then properly formats multi-line paste.


Even a single word copy paste is missing at least a few characters in the middle


What's the point of using hypertext-(web)-standard-oriented multimedia-capable framework to create an application that just shows plain text (ok, plain text + 16 colors + bold).

Why would one package a 50MB terminal, packing stuff that will never be needed in a terminal.

It would make sense if they were to spend all that effort to create a terminal-based web browser.


I thought this was the Rust HTTP client/server [1]. I've never heard of this.

When two notable projects share the same name, it's confusing. One of these projects should consider rebranding.

[1] https://hyper.rs


I don't think there's all that much overlap between people who use Rust and people who think a terminal written in javascript is a good idea.


Contrary to popular HN memes, most Rust developers aren't zealots.


unless... it's in WASM!


I'm a daily user of Hyper. There has been some gripes of pretty basic things like scrolling and resizing. These aren't showstoppers for me, however I only do pretty basic operations in a terminal (some server maintenance, git commands, and basic file operations).

The big downside I see to using the GPU for this is that it is such a hit to battery life. I was an avid iTerm user, but noticed that when I had it running I only get ~2 hours of usable battery time, even when it was just backgrounded. I hope that Hyper doesn't have this same issue -- will keep a close eye on it.


I tried hyper v2 recently, took some time to fiddle with plugins and config everything to my liking. It was usable, though missing the ability to launch different shells in different tabs (I'm a windows user, so being able to have a git bash tab, a cmd tab, a powershell tab, a wsl tab, etc. is kind of a must). This morning I was prompted to upgrade to hyper v3, I clicked yes, it refreshed. All my plugins and configs were gone. No prior warnings, no suggested upgrade path, just full wipeout. I uninstalled hyper and went back to cmder.


Here is my comparison of terminal typing latencies on mac.

https://imgur.com/yFDuVpR

Terminal.app is still going to by my go-to terminal


Command prompt on Windows is pretty fast but Git Bash is still unusably slow. I guess I'll try again next major release.


Honestly speaking, I started using Hyper again this week after 3.0.0 came out, and I like it a lot.

I'm not really sure if there's any actual benefit to using it as opposed to the regular Mac terminal, but the colors are bit easier on my eyes at night.

The only thing I'm missing is the ability to move tabs around.


why not use iTerm if on OS X?


Agree. iTerm2 has been doing rendering with opengl for years. If you're on OS X its unclear why something like Hyper is necessary.


I stopped using iTerm2 in favor of the default Terminal because iTerm2 has worse performance and latency [1], and I wasn't getting anything out of its additional features. I noticed an improvement going back to Terminal.app. YMMV of course; but if we're asking why Hyper is necessary, I'd like to ask the same question of iTerm2.

[1]: https://danluu.com/term-latency/


iTerm2 has lots of features that Terminal.app lacks: https://www.iterm2.com/features.html


I use iTerm. There are alternatives that are faster, like Alacritty, but iTerm has a ton of features. It's hard to beat.


out of curiosity, could you give an example of where Alacritty would be faster than iTerm in a day-to-day environment?


Alacritty uses the gpu for acceleration, where iTerm uses it only sometimes. That might have changed in a recent release, but originally iTerm was limited in when it used the gpu.

I notices it a little bit when moving around quickly in NeoVim.


The only usecase that comes to my mind is text rendering when you want to navigate through some large log file, maybe even this some kind of syntax highlight.

Otherwise I'm quite curious too to why you may need a GPU rendering or something like this...


I wouldn't say that I need GPU to render my terminal, but if the alternative is to just let the GPU sit there, unused unloved, then I'll take the terminal that accelerates using the GPU.


I like the profile manager. I have all my servers in there.. ssh directly and have a certain color for prod etc.


iTerm is not that fast for debugging output. I switched to kitty. It sometimes crashes and ssh does not work completely but the speed makes up for it.


If you are a developer and using hyper, what language do you work with the most?


JS/TS. Occasionally Python or C#.


>Disable VSCode type checking

okay?


Aside from the plethora of themes and other visual niceties, can anyone explain to be the appeal of Hyper when less expensive, more performant alternatives exist?

A terminal written in Electron seems just silly to me...


Well, LaTeX is also Turing complete, so I wonder why has no-one tried programming a terminal in it. It would be fun to install 1GB of TeX packages to be able to open a terminal.


I've been waiting for Hyper to get reordable tabs (which to me is kind of a basic feature).

I wonder if this version will finally introduce this functionality.


May I suggest DomTerm (https://domterm.org)? It has builtin tabs and tiling, which can dragged and reordered with the mouse. It works very nicely (using the GoldenLayout package).


You may, thank you. I'm not really looking for a terminal built on web tech specifically, I use it for work and I care about reliability more than anything else.

I'll take a look and see if I can install it on Linux, though.

Thanks!


"New Blazing Fast WebGL Engine". Wow really? Major changes - "Emoji support". For fucks sake, seriously?

Am I the only one that doesn't want anything of the following _bull shit_?

* A terminal emulator that is dependent on an entire web browser (not to mention the layers upon layers of bullshit abstractions all to run something from the 70s).

* Support for "emojis" (I mean, come on. It's a _damn terminal_).

* To execute code that can hijack control of my shell from any of the 956 dependencies[1] this _heap of shit_ relies on.

[1] $ git clone https://github.com/zeit/hyper.git $ cd hyper $ npm install $ ls -lt | wc -l 956


Like it or not: in the era of Unicode, emoji's are plaintext.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: