What is your favorite terminal emulator.

kevincox@lemmy.ml to Linux@lemmy.ml – 132 points –

I'm reconsidering my terminal emulator and was curious what everyone was using.

145

I just use konsole , which is the default terminal emulator for KDE. I don't need anything fancy, just something basic to run commands, updates, a few scripts, etc.

konsole is low-key a great terminal. It's really snappy, supports ligatures, and looks good. It's one of my favorite KDE applications and the one I miss most when it's not available.

Same. I do have gnome on my laptop and the terminal was lacking relative to my KDE desktop, so I ended up making the switch there too

I've been using Konsole since switching to Linux with the KDE 4.0 release. Never felt the need to switch.

Only thing I wish it supported is Tmux control mode.

I primarily use Alacritty. I spend quite a lot of time running things that produce ludicrous amounts of output (eg. compiling Android from source). Out of 10 or so terminal emulators I've tested earlier this year, it was the only one that didn't use 100% CPU displaying all that output, staying in the low single digits.

I'd prefer to use Wezterm because I like its lua configuration system and the builtin pane splitting, but with my workload, I still run into issues where its CPU usage shoots to 100% and becomes non-responsive for a while. (That said, it's already a lot better than before. I try to report any issues I can reliably reproduce and Wez has been wonderful about fixing them.)

It really does not make sense a terminal consuming 100% CPU, so Alacrittycis my choice as well

I use foot together with foot-server. The client opens in less than a millisecond, and I usually have tens of terminal windows open at the same time. Tabbing comes from the window manager.

And it's pretty customizable, without UI stuff. Just pure config files, my favorite.

When I'm using a tiling window manager, I use kitty, because I like its speed and support for font ligatures. When I'm using a Desktop Environment like Gnome or KDE I usually don't use the terminal at all, but if I need it, I use the default emulator.

Sorry for the off-topic question, but I'm still trying to wrap my head around basic linux concepts: you use "tiling window manager" and "desktop environment" as if they were mutually exclusive options. What's the relationship between them?

Thanks!

I don't know if I'm correct, but in my head, a window manager JUST manages windows. Gnome and KDE also manage windows, but they also contain applications for settings, printing, etc. Desktop Environments also have window managers, but they have more applications on top.

So, just to check I understood:

  • "[Tiling] Window Managers" are a very specific tool.

  • "Desktop Environments" are broader tools that (may?) contain Window Managers.

Now... the next questions (if you have the patience :P) are:

  • is is possible to use a Window Manager without a Desktop Environment?
  • how does this influence your choose for the terminal emulator? ร“_รฒ

Thanks for the answers!

  • Yes, you can absolutely use a WM without a DE. A DE is usually just a set of preconfigured and pre-installed applications. If you use a WM like i3 etc. you just get something that draws windows, and no settings and bluetooth applications
  • It influences my choosing because window managers usually don't come with a terminal, and you have to manually install a terminal emulator. But on desktop environments I use the default terminal, although I could also install kitty.

Oooh... I see. I didn't understand how broad the Desktop Env really are. Is not that they manage "a lot of things regarding the desktop and windows"... is just like a bundle of apps.

Now it's starting to sound like a sub-distro inside the distros, but I think this is a good point to stop bothering you. Thanks again!

For most people, a different desktop environment probably makes a bigger difference than a different distro. They won't notice things like a different package manager

Window Managers manage windows as the name suggests and control how they are displayed and interacted with. A window manager is one component of a desktop environment which provides other facilities like compositors, task bars, status trays, task switchers, configuration applets, virtual desktops, and perhaps some default applications for basic things like terminal, file management, text editing, connection management, and image viewing. Some desktop environments feature extensive plug-in systems ( extensions ) and vast application ecosystems.

In the early days of Linux, there were no โ€œdesktop environmentsโ€ and you would run a window manager directly over the window server ( eg. X11 ) with applications running directly over the WM. Proprietary UNIX introduced desktop environments like CDE, OpenWindows, and NeXTstep but, as they were proprietary, Linux lacked them. This changed with the advent of KDE and GNOME soon after. These days, the vast majority of Linux users are working with a desktop environment ( probably still one of these two though there are now others ).

A timing window manager in particular is a window manager that allows auto arranging and resizing applications to share the screen ( typically using keyboard commands ). The goal of a tiling window manager is that application views do not overlap and that the full desktop space is used efficiently. A floating window manager in contrast allows windows to overlap and leaves positioning, resizing, visibility, and focus up to the user. The desktop itself may be plainly visible and may even have clickable icons or applets displayed on it. Interaction with windows in a floating window manager is usually done with the mouse. Windows and Mac are examples of the floating metaphor so that is the one most of us are more familiar with. Any given window manager can incorporate both floating and tiling ideas and features but most WMs lean pretty heavily one way or the other.

Technically, a window manager is just a special kind of application. In X11, it is not even required. You can run applications directly without one but, if you run more than one application, you will quickly understand the value of a window manager. The value of a full desktop environment is more a matter of preference. Most people welcome them or consider them essential. Others see DEs as bloat. The middle ground is assembling a desktop experience yourself from a group of applications you select for that purpose from the window manager up.

Silva? Are you Portuguese or Brazilian?

Neither, actually. I don't know why I call myself silva, but that's not my real name.

Lol thats a common surname here in Brazil. It means jungle in latin so the priests used to give this surname to converted natives.

Interesting. In English, "Silvan" mean a spirit that lives in the woods. It's often used in literature as a synonym for "elves."

Gnome terminal. I don't really care the terminal emulator. What's in the terminal is what's important. The terminal window just needs to be able to resize correctly though.

Same here - it comes with Gnome distros by default so nothing to install. I keep all the default settings except for disabling the annoying bell.

I use Kitty, because it works well on both X and Wayland, and is GPU accelerated. For some reason, Alacritty doesn't display the fonts properly (Displays them much smaller on Wayland. Only program I have such issues with)

Also Kitty is more widely packaged (for example on Debian based distros)

Personally I've been using gnome-terminal for quite a while and was fairly happy except that I needed to maintain gnome-terminal and libvte patches to get notification support. Having some sort of notification when a long-running command completes is very important to my productivity.

I've been using Konsole but not fully happy.

  • No hyperlink support.
  • Selection is lost when my prompt updates (I have the time so that I know when I have started commands).

I've been looking at other options but none-of them feel quite right.

Alacritty:

  • No unlimited scrollback.

Kitty:

  • Selection bug with updating prompt.
  • No unlimited scrollback.

Wezterm:

  • No unlimited scrollback.

Terminator:

  • Has this terminal group bar that I can't get rid of.
  • No notification support.

I realize that I am probably going to have to make a compromise (probably just go back to gnome-terminal with patches) but I figured it would be interesting to see what everyone else was using and make sure I didn't miss something.

To me the important features are:

  1. Unlimited scrollback.
  2. Notification support (ideally with the 777 Notify command, but if the terminal bell can make a notification that is fine).
  3. Clean UI. (I don't use tabs so need to be able to hide the tab bar)
  4. Hyperlink support.

I'm pretty sure you can set alacritty and kitty to a ridiculously high number of scrollback lines, like at least several trillion. I think I just add 4 zeros on to the default and I've never had enough output for it to run out of scrollback. At some point you're going to run out of ram or storage for storing scrollback so you can't realistically have unlimited scrollback without doing something ridiculous.

You can use zellij for infinite scrollback. If ot takes too muxh space, use compact mode.

Also, I use konsole and it does have hyperlink support, just control-click the links.

Anything, but with tmux running inside. You can copy text even in a tty, split the terminal window, detach from and attach to tmux sessions, etc. I will never use a terminal for any moderately complex task without tmux again :)

i never got the copy part right, what configs are you using?

also, can you copy from a remote (ssh) tmux?

Copying in tmux (assuming default keybindings):

  1. Enter copy mode with Ctrl+b, [
  2. Position the cursor at the start of the text to be copied, press Ctrl+SPACE to start copying
  3. Position the cursor at the end of the text, press Alt+w or Ctrl+w to copy into the tmux buffer
  4. Press Ctrl+b, ] to paste, possibly into different pane :)

By 'copy', I meant between different tmux panes/windows.

If you open tmux on your host, split it into two panes and SSH into the server in one of them, then you can use this copy functionality. I'm personally not aware of a way to copy between a remote and local tmux session.

ah yes sorry i meant copy to system clipboard.

i succeed in configuring vim so it uses the system clipboard on both local and remote sessions.

i would like to do the same with tmux, but as you said too, it does not seem to be a way.

You absolutely can. You just have to use a clipboard command as the copy/paste. Add this to your ~/.tmux.conf

bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xsel -i -b"
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xsel -i -b"

or use your favorite cli clipboard command. Note that those are using the vi bindings; you might have to adapt the config.

I almost exclusively use Yakuake nowadays. I like the drop down terminal.

Guake is awesome too

Thereโ€™s a good gnome extension too. I used Guake for years but switched to the extension one day and ended up liking it. Itโ€™s basically Guake but the menus and things use a modern Gnome style.

Yakuake, I can't use anything other than a quake based terminal. Because of my work I need 24/7 quick access to a terminal, yakuake is just that

I never got into Quake, but I love the concept of having a terminal whenever you want with a simple press of an F-key.

Alacritty is great, but I switched to wezterm due to ligatures support

I'm using foot since I've installed sway and it's just fine ..not a super user to evaluate well

Super nice, with some "hidden" gems like Ctrl+Shift+o for opening links.

Super nice, with some "hidden" gems like Ctrl+Shift+o for opening links.

Kitty has awesome framerates, easily hitting 90fps pushing 150k - 180k per frame. Alacrity is also dope.

st is good enough for my needs. I use tmux for multiplexing, scrollback, and tabs

TMUX is life. Before, I was fighting screen to do what I needed. TMUX just does it and the customisation puts it way above. I can't imagine working on the command line without TMUX.

Terminator is the one I've been using for a while

My choice as well. I do my C++ development in Vim, and the keyboard shortcuts for switching tabs were the best I'd found. The easy screen-splitting is great when manipulating virtual machines, or having a man page open when working on scripts.

Zutty, the Zero-cost Unicode Teletype which the developer describes as "A high-end terminal for low-end systems".

Anything that supports solarized dark and solarized light theming. It is so much less eyestrain

Kitty with catppuccin and 50%-ish transparency. Works like a charm. And also if you add something like what kitti3 does (look it up on github), will be even better.

I use kitty and I was running at like .9 transparency I think? And after a while it'd cause the weirdest artifacts and ghosting and such on my monitor. I just turned transparency off and it's been fine since. I'm sure it's my monitor and nothing to do with kitty or any other underlying software or drivers. But it was strange.

Yeah, did get these sorts of issues with the same setup (me when im a nixos user). Tested both kitty and hyprland transparency, they were both kinda borked. After some time, tearing commenced and i turned off all transparency.

alacritty. the only downside for me is no ligatures

Dunno if you know about it, but Kitty scratches most of the same itches as Alacritty for me (fast launch and rendering, text config, no UI to deal with), and supports ligatures.

Been using kitty for a while now, though honestly any terminal emulator works for me.

I rather enjoy Tilix. It can tile a single tab without tmux and it can also give special handling to links matched from regexps. I use it to go from Python stacktraces to correct line in Emacs with just a click. It can also do Quake-like terminal, which I use alot.

The project is looking for maintainers, though, so it's possible at some point I need to start looking for alternatives..

Wezterm, which does everything, with a great developer behind it.

Second choice is Konsole: super solid and great rendering.

Aaand tmux with either of those.

While y'all here:

is there a terminal emulator that has "modern" text entry controls while still having tab completion? Like selecting text by going shift+leftarrow or deleting whole words by holding ctrl+backspace/del or replacing whole words that are selected while pasting text rather than it pasting at the point where the curser is at the start of selected text so you still have to manually delete the original characters. Maybe Undo, redo with ctrl (shift) z...

Stuff like that. Just wondering. I always find it very cumbersome to fiddle with long commands especially if they contain long paths that you want to modify. Lots of backspace and arrow-keys hitting for every single character..

โ€œmodernโ€ text entry controls... Like selecting text by going shift+leftarrow or deleting whole words by holding ctrl+backspace/del ...

Those are not really features of the terminal emulator but of the shell. I don't think a terminal emulator can coerce bash or zsh or whatever to do those things unless it acts as some kind of proxy between your text editing buffer and the shell, which would probably lead to its own set of complications. The thing you want would have to be a combination of a GUI terminal program and its own shell.

For bash, I suggest you read up on readline keyboard shortcuts, which can do many of the text editing tricks that you are asking. The shortcuts are different than what you are used to on Windows, and there's no concept of "selecting" text, but for terminal applications it's pretty much the standard way text input is handled on Linux.

I know that zsh has the option to use vim-like keybindings if you're familiar with those.

Bash (and other shells) have readline support which sounds similar to what you want?

I've only managed to come close to that using vs code terminal and PowerShell.

PowerShell is the only shel I've found for windows that allows text selection with keyboard. And since no one uses PowerShell on Linux, no Linux terminals have good support for it, except the vscode terminal.

Whatever gets me connected to my tmux session over ssh

I prefer iTerm2 on Mac because it supports โ€˜tmux -CCโ€™ to transform windows into tabs.

I love wezterm, primarily because it is cross platform. The most important factor to me is being able to use the same one on Windows, Mac and Linux, because I use all three on a regular basis and don't want to maintain multiple configs. However, wezterm currently has a bug that prevents it from opening on Wayland+Nvidia which forces me to use something else on Linux. None of the other ones get close imo.

Yakuake. I've been using it for more than a decade and love it.

xfce4-terminal has transparency and warns when I'm about to paste multiple lines to it.

St, Xterm, Terminator - depends on hardware and os.

I'm most comfortable when my window manager and terminal emulator are well integrated and keyboard centric.

I really love Tabby

Tabs, CMD, SSH, Powershell... all included. It has multiple profiles, can be used portable, has themes and Integrations, like one for Docker

Never need anything else imo ๐Ÿ˜Š

Tabby is great, but takes considerably longer to start. When I want a terminal, I want it instantly. Kitty and Alacrity are two of my favorites.

Put it in the autostart ๐Ÿคท๐Ÿปโ€โ™‚๏ธ

I counted the seconds for the start... 4 seconds on my system. Tabby is way more comfortable and has a much nicer UI. Those 4 seconds are totally woth it ๐Ÿฑ

!Put it in the autostart ๐Ÿคท๐Ÿปโ€โ™‚๏ธ!<

Never.

I get it though, I held onto it for awhile before that extra few seconds got to be enough.

The thing that I love about Linux is choice. To me, Tabby sounds terrible, but I'm glad that it has a community behind it to give people that choice. Whatever works for you!

I really like wezterm, mainly because it's configured in Lua and you can easily disable all keyboard shortcuts and allow only the ones you want. I do everything in Tmux, so my only shortcut s are for changing font size and full-screening window.

guake-terminal for a full-screen overlay terminal, I have a keybinding for transparency toggle so I can read guides through the overlay. I used to use tilda, but I switched because they werenโ€™t supporting wayland.

For random/ad-hoc terminals Iโ€™ve historically used gnome-terminal and console, but recently Iโ€™ve been trying to eliminate window decoration entirely, and for that Iโ€™ve been liking black box (flatpak) for the floating decoration and other configuration bits.

They both support theming, and have dracula included by default, so it was easy enough to get a consistent look and feel.

I have tabs switched off for all of them. Thatโ€™s what tmux is for.

edit: Iโ€™ll probably be checking out alacritty

There is a gnome extension ddterm which works under Wayland and works like guake. But unfortunately it currently does not support the latest version of gnome yet.

And we shall watch its development with great interest.

Thanks!

Not sure if you knew, but Yakuake is very similar to tilde from what I've heard and has worked flawlessly for me on Wayland.
https://apps.kde.org/yakuake/

I have, I think the one time I tried it (5 years ago, on a different machine, os and X11), it wasnโ€™t snappy enough. Probably time to go back and check it out!

Guake has this annoying bug on wayland gnome where the interface complains that โ€˜keybindings canโ€™t be setโ€™, so you control it through custom keybindings that run terminal commands to show and hide the terminal.

1 more...
1 more...

Kitty, though I have been looking into st as I recently switched to dwm.

Tested dozen recentlyโ€ฆ And nothing was so much better to change the default one of KDE.

Used to urxvt (when I was using tilling vm on desktop pc). Used gnome-terminal when I was on cinnamon. I switched to KDE year or so ago and I'm using Konsole. It really does not matter that much, I only need tab support and 256 colors.

Basically what Silva said. When I'm going out of my way to install something, kitty. Else I roll with my DE's default, which in my case is usually gnome-terminal.

I use vterm in emacs if I'm doing something quick, but if I'm actually using the terminal for a task, I use blackbox because it integrates nicely with gnome. I just use vterm if I'm using exwm.

I have Guake for passive tasks like music payback or anytime I want a full screen terminal to hold my focus, like when I'm writing in Neovim.

Tillix is my active terminal. Taking notes, active chat sessions, or running a SSH connection. Anything that I want on screen permanently.

Unironically: vscode terminal. It's the terminal that has less bugs when using shift+arrows to select text. I also use PowerShell because bash doesn't allow text selection with keyboard.

Same. Has anyone found a way to launch VS Code as just the terminal window? I've tried hacking around and doing stuff like using Zen Mode with just the terminal displayed, which is close, but I don't think that can be scripted, unfortunately.

You can open the terminal as if it were any other file, instead of the integrated terminal.

Could you elaborate on this? How do you open the VS Code terminal on its own?

F1 -> >Terminal: Create New Terminal in Editor Area

Ah gotcha. That's not quite what I'm looking for. That opens a split-pane terminal in an existing window.

What I'm wanting to do is have something like this: code --terminal-only. That would enable it to be launched from a script or shortcut and function as a standalone terminal application. Unfortunately, however, I've looked through VS Code's command-line options, and nothing like that seems to exist.

i used to use urxvt but i had some issues with certain fonts and symbols loading, so iโ€™ve since switched over to kitty, and it works fine for me

I'm liking Warp, Tabby and Wezterm currently. Working on a config for my NixOS Hyprland and planning to see how foot does in comparison. Blackbox was pretty cool, but didn't use it much.

As a newb, Tabby has been really nice for me to quickly open the SFTP window so I can orient myself in the file structure. It's been really great.

@kevincox For light tasks, I will make use of either vterm (if I'm in Emacs) or Alacritty (if I'm not).

If I need to get down to serious work (such as working on shells and text files both locally and remotely), I'll jump into eshell, using TRAMP when I need to go remote or sudo (or both) to edit files. I'll still use vterm if I need something that does screen redrawing, such as apt.

I mostly use the default terminal emulator in the desktop environment I use, currently this is the gnome terminal.

What are the main reasons one want to use another terminal emulator? IMHO if I can reszie the window and the font and font size is good or configurable it is fine..

Refresh speed, font rendering, integrated features like multiplexing, themingโ€ฆ

Some offer specific features like tabs/splits, or Quake-like drop-down. Others are just focusing on being fast to launch, or have performant rendering. Having barely any features can be a desirable feature in itself, depending on who you ask lol

Tilda, because I could drop it down my screen anytime with one key tap.

XTerm. I used to use rxvt-unicode, but it only supports 256 colors and gave me grief when I tried to get some emacs color theme working. There's only one thing I miss, which is that rxvt-unicode reflows lines when you resize the terminal, which xterm won't do. Oh and urxvtc starts very slightly faster, but no big deal.

I also looked at kitty, and I like that the author of that one tries to champion new features, like full keyboard support on par with X11 apps. But it takes noticeably longer to start and the latency also feels worse.

I have to ask. I launch new terminals with Super+Enter, I barely have time to release my key chord, and kitty is already opened. I understand "slower", but 100% slower than a couple tens milliseconds is still a couple tens of milliseconds. My WM/compositor popping up the window and shell probably take longer by themselves than the difference in launch times between those two.

YMMV depending on what you consider to be noticeable delay & latency, I guess?

Just tried this again. Kitty takes like maybe half a second to start on my machine (maybe yours is faster?). Not sure how to measure this. xterm starts almost instantly. I can type "Super+Enter ls" and it'll work. Doesn't work with kitty, the keystrokes just disappear. Is this actually important? Probably not, but it feels annoying. Like slow internet.

I might have imagined the typing latency, since it feels the same as xterm now. Maybe I'm remembering wrong. I was on the old Debian when I last tried this though, so something could have changed.

I mean, the Deepin one is gorgeous to look at, but that's not usually my concern if I'm typing in some code. My go to is Yakuake running a fish session, launched with a "Super + #" hotkey combo. Rapid access, easy to use, doesn't get in the way, customisable so it at least looks in keeping with the rest of the DE.

But I don't want to die!

Lots of terminal jokes you could have chosen.

I prefer C6 out of Chicago Oโ€™Hare.

Plain ol bash

But I'm using yakuake which makes it beyond amazingly cool. Been using g that for over a decade and I'd never stop using that.