Ask HN: Which Linux terminal emulator do you prefer and why?

82 points by endorphine ↗ HN
I was thinking that the terminal emulator of my Debian installation is one of the most unknown yet widely used tools of my setup. I know my editor, window manager and shell better than my terminal emulator.

Currently I use urxvt on Debian. But I'm not sure why - it wasn't a conscious choice. I think it comes by default with i3 or something.

Anyway, Linux users, which terminal emulator would you suggest and why? (I'm on Debian in case that makes a difference.)

148 comments

[ 3.3 ms ] story [ 264 ms ] thread
Vanilla xterm.

It uses a lot less resources than any other emulator. Thomas Dickey keeps it updated. It has an unusual, but usable scroll bar. You can configure cut-n-paste to help you with command line work. You can change what a "word" is for cutting/copying to include /, ., *, so working with Unix file names is easier.

Additionally, xterm starts quickly, has an incredibly responsive feel (the latency from keyboard press to a character appearing is lower than any other terminal emulator I've used) and looks absolutely stunning with a nice bitmap font.
Agree xterm is a great terminal. It supports Unicode and all kinds of font and style configurations, uses few resources, and is really fast. Personally I found it to be the most responsive, better than (u)rxvt and st.
I use plain xterm as well. With 6x13 aka 'fixed' bitmap font.

Clean, simple, fast. I don't want background images, or transparency, or beautifully rendered fonts: I want to be able to clearly distinguish characters with minimum mental/visual effort, and pack as many of them into the available screen real-estate as I can see.

I also turn off color highlighting, which I don't find useful (in a shell).

My prompt is a simple '> ': no directory, no git, no venv -- I don't need to have that in my face all day long.

Years ago, I also chose an unusual color scheme: yellow text and dark blue background. This is based on the observation that human visual acuity peaks in the yellow/orange, and troughs in the blue, and so yellow on blue takes the least effort to see.

With `pwd`, `gb` and `gs` why do I need prompt taking up horizontal space?
zsh has a built-in feature which shows the cwd aligned to the right end of the prompt line. It even disappears if you happen to type far enough into the line.
This is an underappreciated zsh feature for sure.
Just a note, but the sensitivity of human vision depends on the amount of light but generally peaks in the green/yellow, not the yellow/orange. This is actually the reason why some countries have changed the paint of emergency vehicles from red to greenish, they are much easier to see especially in the dark where we perceive red to be largely black.

https://www.olympus-lifescience.com/en/microscope-resource/p...

Not sure if you'll see this, but what are the hex colors of the fg/bg? That sounds really interesting.
xterm too, not for any special reason than it seems to be highly compatible (well, AFAICT it is basically a de-facto standard for all X terminals), very responsive, opens instantly and has zero frills.

I mainly use Window Maker but whenever i use KDE (in other PCs mainly) i use konsole because it is just there.

TBH my requirements for a terminal are minimal - a generous scroll back history, decent responsiveness and the ability to configure the window to remove any unnecessary frills (scrollbar aside) and i'm fine.

+1 xterm. Terminal boot time is the only thing that matters to me when I open hundreds of them a day.
Moi aussi.

I usually launch my xterms from icons on the panel/taskbar/whatever-you-want-to-call-it. Doing that actually launches scripts that use whole sets of specific parameters for the new xterm window.

Thus, 'goroot' sets a largish xterm (115 x 58) with a right-hand scrollbar and reverse color and logs into the 'root' user. If you don't enter the root-user's password it will abort and disappear.

And 'read.news' runs nothing but a text-based usenet-reader in an xterm, and has extra code to prevent more than one instance running.

You actually use usenet? why?
Once upon a time, Usenet was THE reason I was connected to the Internet.

These days, Usenet is a mere shadow of itself but many of the purely technical newsgroups still survive.

Because I am an 8-bit CP/M enthusiast, I obviously subscribe to comp.os.cpm, but I also subscribe to some 'newer' active newsgroups like alt.os.linux.mint, and comp.os.linux.misc.

Unfortunately, the other eight newsgroups I am subscribed to might have only one or two posts per year, if they're lucky.

Gnome Terminal because it's the default in Ubuntu and does what I need. I should give a try to kitty after I read about it here on HN weeks ago.
wezterm, because it seems to have all the functions I want (ligatures, RGBA OSC, proper OSC support for base16) and is written in Rust, has sane configuration and nice platform support
I use Kitty because it’s incredibly quick (especially with the -1 flag). I use a tiling window manager and can flood my screen with dozens of terminal windows in under a second.

Probably not a big deal for most, but I mostly live in the shell.

Kitty isn’t the best feature wise though. Even config changes are tedious.

- Suckless' st for its launching speed and simplicity

- Alacritty for better keycode support

I want to second this! Wez term has great support for fonts, including ligatures, and it's configured/scripted via Lua; pretty neat. It's got a great ssh mode, too (with `wezterm ssh...`). It's got many great features.

On Mac I currently use https://www.warp.dev/ and I love the editor prompt feature! The search/ai is helpful sometimes (I use fish, so a bit less so, but fish makes up for it), and the cheat-sheet/template feature (forgot the name now) is cool, too!

xfce4-terminal, because I switched to Xfce when GNOME went on their "reinvent the UI" trek. I was happy with the UI I already had, thanks very much.
Me too, but mostly out of laziness and because its good enough once you change the color scheme, disable the menu bar and reduce font size slightly. Also set a very large scrollback buffer.
Same here. Need its tabs since it is difficult to organize many terminal windows if use rxvt. I also use LXTerminal on the same machine. It's set to dark background to make flask's debug message easier to read. LXTerminal is very lite and adds very little(or no) additional dependence on Debian.
I use terminator.
Ctrl+Shift+vErtical Ctrl+Shift+hOrizontal

I just run Terminator in a window maximized and the above shortcuts and Ctrl+D when necessary are more than enough.

I was a happy urxvt user for years, but switched to Alacritty[1] about a year or so ago. My main reasons for switching were wanting better emoji support (urxvt handles Unicode admirably, but not emoji) and wanting a better configuration language (I hate writing Xresource rules).

I don't believe it's had a 1.0 release yet, but it's been stable in my use cases, and (perceptively) performant.

[1]: https://github.com/alacritty/alacritty

I use tmux for all 'advanced' functionality, like scrollback and copy/paste, so I'm not picky as long as performance is good and basic features are present. The one thing is that I like to use a fullscreen dropdown terminal, so I do use Yakuake on KDE-based environments and Guake on GNOME-based ones.
Emacs with eshell for the most part.

If I need something else, I'll use whatever comes with the DE, typically gnome term. It's alright. I don't mind it. It doesn't excite me.

I used cool retro term for a week or two there for the nostalgia and it was nice but a bit much for daily work.

eMacs/eterm is a very pragmatic choice. Having the terminal be supported anywhere eMacs runs should make for a very consistent experience.
Which is the great thing about having as many different systems exist in emacs, such as calendar, email, etc.

However, the best thing about eshell is easily the fact that it will run lisp code. The same code that you use to program the editor can be used in shell commands.

Great video should anyone be interested in eshell: https://www.youtube.com/watch?v=L1f2tulD9N8

Guake, for no reason. I tried it and fulfilled my needs.
Same here with Yakuake. It's always there
urxvt because of how light it is and because of its extensions, particularly the one for controlling the cursor with the keyboard. I often use it to do quick impromptu searches of the output of previous commands or to copy something. I also like the pseudo-transparency extension.
Follow up, what's the Linux terminal with the lowest latency? What about the one with the highest thru put? Debian if that matters
By latency, I guess you mean its launching speed? I like urxvt for that. I started using it back when I was on a netbook. So much quicker to launch than gnome-terminal or konsole. I didn't even need its daemon functionality which should be even quicker to open up windows.

On throughput, I guess you mean its refresh rate? Among its many options, I remember there's one about skipping drawing content when it's coming in faster than urxvt is able to draw it, in order to not slow down the program writing to it. There may be more options that affect the refresh rate.

Terminal latency is the delay between hitting a key and a glyph showing up on screen. There can be multiple layers of keyboard mapping and drawing APIs that slow this down compared to minimalistic terminal emulators from 30 years ago.
I use Kitty!

Mainly because I wanted something a bit snappier than Tilix but configurable to basically behave the same way -- built in panes, same shortcuts, and input broadcasting. The last one took a script, but I've been happy with it.

An accelerated terminal is very helpful for watching tons of logs scroll by

Kitty is an amazing terminal if you are willing to spend some time to learn and customize it. Take a look at the screencast on its website, it is super powerful and will make your coworkers and friends jealous.

https://sw.kovidgoyal.net/kitty/

Kitty and Alacritty miss one feature which is key to me: assigning a separate color to bold face.

I read a lot of output that only has bold face markup, like man pages or top output. They are way easier to read if bold face stands out more than, well, just thicker letter strokes.

So I'm stuck with xfce4-terminal.

Those terminals support bold rendered using ANSI bright colors as a config option and then you can set the ANSI brights to whatever custom colors you prefer.
Many thanks! I'll try this.
> if you are willing to spend some time to learn and customize it.

What do you take time to learn/customize about kitty?

I think the major benefit of why I stuck with kitty is that it removes somewhat the need for tilix and tmux, and also integrates nicely if you have a tiling wm only on one system but not the other (networked multihead, anyone?).

The kitty.conf [1] is pretty powerful and allows a lot of customizations. It also has emoji support so you can make everything pretty in your PS1 :D

[1] https://sw.kovidgoyal.net/kitty/conf/

I don't like how intrusive kitty is. The "shell integration", "remote control", ssh's "kittens" makes feel uneasy from a security standpoint. Maybe I'm just being paranoid :p

I thought about forking it into a "skinny kitty". But there are so many good ttys nowadays that I the effort is not worth it.

Another option would be to sandbox with linux namespace and capabilities. Not sure how feasible it is.

Kitty does has a lot of cool features though -- most I don't care about.

I feel the same way, yet I still use it.

I would love a fast terminal that supported the tmux-like splits/panes and flexible keybindings and dropped all the exotic stuff. In particular, the custom termcap stuff I have to do with kitty when ssh-ing is enough to motivate me to switch.

I use Konsole when I use Plasma and urxvt when I use Xmonad. Konsole is a no-brainer, it comes with the desktop environment and I like the ctrl+/ctrl- shortcuts to change the font size.

urxvt is more customizable, when I feel like it (that's also the case for Xmonad, now that I think about it).

At some point I got hooked to kde konsole because it allows you to hide everything: hide the scroll bar, hide the menu, hide the tabs. Nothing but window decoration & a terminal.

Oh and my terminal window is slightly transparent. There is a sweet spot where I can still read e.g. this text through the terminal (if need be) while not getting annoyed by the transparency.

That plus I still have all the abilities of a "fancy" terminal emulator: tabs, large scroll window, hyperlink klicking, ....

Alacritty, because the config is simple YAML and it can display with zero window embellishments or other UI. It's great for tiling window managers in particular.

The font rendering is great and you can adjust padding, margin, etc. to tweak readability for your tastes. I'm a fan of plain background with good contrast color, larger than normal font, and a clean one character wide padding around the terminal. It feels a lot like a web browser display. I hate terminals that go for the smallest possible font and super dense output.

The font rendering is excellent, to the point that I'm willing to deal with its higher latency and lack of daemon mode.
It's not supported ligurature. It's only problem i have.but I'm still using alacritty.
I used the terminal in gVim (:terminal). It's pretty close to xterm in terms of responsiveness, supports Unicode, and lets you avoid a multiplexer like GNU screen or tmux. Fallback is good old xterm (always have a fallback).
Uninformed person here. Why is avoiding a multiplexer desirable?
It's not really "avoiding", it's more like 1 less program to install, configure, run, learn keys for, and troubleshoot. I like both tmux and screen, but I personally don't need them anymore.
BTW, a little off topic, but...

I wish something like Windows Terminal or ConEmu was available for Linux. After Windows 10 supports will end I'm going to switch to Linux again and I wanna cry because Linux tools almost always are so feature-less, buggy, unfinished or ugly.

ShareX, Everything, terminals mentioned above. With 7+ taskbar tweaker even taskbar is much more powerful than any desktop environment I tested :(

Yeah ShareX has an absurd amount of features. Did you try Wine? Might work but not sure how friendly it is with X11/Wayland
What feature of Windows Terminal are you missing? It's been ages since I've used it but I can't think of anything I haven't seen in Linux terminal emulators. Gnome Terminal is the closest IMHO as it has custom profiles and colorschemes that are similar to what I remember from Windows. Pixel shaders are the only thing I can think that you won't commonly find in Linux terminals, but there is cool-retro-term for that kind of stuff.
Mame has a VT100 emulator and you can enable shaders with that if you want scanlines and pincushion distortion.
Oh wow I had no idea they emulated a VT100. That's awesome!
foot - https://codeberg.org/dnkl/foot

  Fast, lightweight and minimalistic Wayland terminal emulator.
  Features:
    * Fast
    * Lightweight, in dependencies, on-disk and in-memory
    * Wayland native
    * DE agnostic
    * Server/daemon mode
    * User configurable font fallback
    * On-the-fly font resize
    * On-the-fly DPI font size adjustment
    * Scrollback search
    * Keyboard driven URL detection
    * Color emoji support
    * IME (via text-input-v3)
    * Multi-seat
    * Synchronized Updates support
    * Sixel image support
Also came here to say foot. Hands down the best terminal I've used.

Kitty was alright but I prefer a bitmap font in terminals and I'd rather have one that just lets me use it without having to do tricks which you have to do with Kitty.

Alacritty is also good but I don't care about X support at all.

Switched from alacrity to foot, very very pleased.
Anything not based on libvte, it is like a CVE magnet.
I previously used kitty and had no issue, but moved to gnome terminal as kitty chewed through VRAM pretty fast on my 4k monitor setup. I use too many terminals, but gnome terminal appeared to unload vmem when moving away from a workspace, kitty did not.