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.
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.)
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.
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?
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.
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.
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.
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 :)
Position the cursor at the start of the text to be copied, press Ctrl+SPACE to start copying
Position the cursor at the end of the text, press Alt+w or Ctrl+w to copy into the tmux buffer
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.
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:
Unlimited scrollback.
Notification support (ideally with the 777 Notify command, but if the terminal bell can make a notification that is fine).
Clean UI. (I don't use tabs so need to be able to hide the tab bar)
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.
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.
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.
tmux greatly simplifies my choice in terminals, which now mostly books down to whether or not it supports ligatures. I do nothing in any terminal without firing up tmux first.
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.
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.
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.
Oooh, this looks perfect for me. However how do hyperlinks work? I can see that they are styled and have a unique cursor but I can't for the life of me figure out what I need to do to actually activate them. I've tried click, Ctrl-click, Shift-click, Alt-click 😅
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.
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..
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'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.
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.
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 🐱
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!
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.
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.
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.
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.
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.
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.
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.
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.
@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..
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
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.