95

Is there an iTerm2 (terminal application for Mac OS) equivalent for Ubuntu?

Amongst the many features it adds the one I'm after is the "hotkey window", where you can overlay/hide a translucent terminal window at the touch of a button on the keyboard.

Dunhamzzz
  • 1,243
  • 2
    tilix -> https://github.com/gnunn1/tilix – Eric Mar 14 '21 at 00:27
  • 3
    This is linux: you can set a hotkey to do ANYTHING! At this moment, my 'F' key calls my mom and... hold on my mom is on the phone again. – Nate T Jun 14 '21 at 00:22
  • 1
    Btw the Trans-terminal-to-hotkey functionality to which you refer is available with the stock gnome terminal in ubuntu. Just right click the icon & choose preferences to set up. – Nate T Jun 14 '21 at 01:28

12 Answers12

40

As suggested in the iterm2 website itself (under "Hotkey Window"). There is guake, tilda and yakuake. Which can be installed from repositories.

I personally use guake. If you use unity, I have written an indicator for guake although you can easily enable systray in unity as well.

Eliah Kagan
  • 117,780
sagarchalise
  • 23,988
  • what about go terminal? – abhimanyuaryan Nov 03 '16 at 18:18
  • 1
    Suggested at where? what? – Anwar Nov 23 '16 at 15:06
  • 2
    I'm currently using yakuake but it's only a drop down terminal. The great thing about iTerm2 is that you can have normal, non-dropdown terminal windows positioned freely on the screen and still bring those up using the global hotkey. Does any of the linux terminals have that? – Machisuji Apr 30 '18 at 08:17
  • 1
    These all (guake, tilda and yakuake) suck and have nothing to do with iterm2. You could suggest terminator which is also nowhere near iterm2 but better than those three. – DimiDak Feb 20 '19 at 14:44
  • Tilix is the closest to iterm2. – DimiDak Sep 16 '21 at 17:35
39

Update as of 3/2021

While I in general prefer GTK applications in terminal emulators the reigning champ Qt is being overtaken not by them but by projects eschewing traditional GUI toolkits entirely!

My current picks for my favorite Linux iTerm2 replacements are, in no particular order:

Wezterm

Has GPU acceleration, built in multiplexer (tabs and splits), ligature support, built in imgcat support, background images, transparency, shell integration, almost everything one could want. One feature I miss is profiles, but you can always have multiple config files (author made the interesting choice of using Lua rather than ini/toml/yaml/json for the config file). The only other thing I want is a hotkey dropdown terminal, not the end of the world. If you're a ricer, this is the terminal emulator for you. It's a newer project but this may be the iTerm2 killer. Go give the project some love.

Tilix Apparently now unmaintained

Fantastic and polished terminal emulator, been my daily driver for a while now. Not on par with iTerm2 in terms of feature set, but a very solid choice for a daily driver. It just works. I'm not wild about the choice of configuring through dconf rather than just having a text file in $HOME/.config, but not the end of the world.

Konsole

The stock KDE terminal is a solid choice and in addition to a rich feature set it's the only terminal I know of that comes out of box with that recent MacOS-ish translucency blur onion skin effect (a.k.a. gaussian blur).

Qterminal

Not quite as polished as some of the others, but has a very full feature set, see my old review below for more details.

Update as of 8/2020

Some other worthy contenders not mentioned in the original answer are Tilix and Terminator (check them out!), and my top pick is still for the most part
Qterminal. Linux terminals in general seem to be getting closer to parity with iTerm2.

Current as of 9/2018

Here's a short list of iterm2 (v3) features:

  • True color (16 million color) support
  • Split panes
  • Transparency
  • Show images (i.e. imgcat)
  • Show inline images e.g. beer mug for homebrew
  • Full support/integration for various shells (e.g. zsh, fish)
  • Hotkey support (e.g. drop-down terminal)

I haven't even come close to listing them all, although these are the ones I use/care about the most.

I cannot find a single linux terminal that completely matches this feature set (much less all the ones I didn't mention) but there are linux terminals that come pretty darn close, and can do things that iterm2 can't do (like set per window/pane background images). So here are a few terminals that are probably closest to iterm2 in terms of feature parity:

Qterminal

This is an abbreviation of qt terminal. It has full true color support, a dropdown hotkey, transparency, background image, panes, tabs, shell integration. Install via apt. Cons: no built-in way to preview images, it's handling of background images can be wonky.

Konsole

The default KDE terminal (e.g. for kubuntu) has true color, tabs, background image, transparency. Cons: no hot-keyed drop down window, no independent panes, handling of background images can be wonky.

Kitty

A terminal that AFAICT was just written by one guy with a surprisingly rich feature set: has true color, horizontal splits, transparency, shows images, shell integration. Cons: no background images (there's an issue open), no vertical splits without configuration, no drop down, and while it has packages for several distros ubuntu isn't one of them (have to manually install deps and compile from source).

Terminology

The default terminal of the Enlightenment desktop. It by far has the best image handling of any terminal emulator I've ever used and has been my daily driver for a couple of years now. Has resizable independent panes (vertical and horizontal), tabs, transparency, shell integration, but it lacks true color support (maintainer says he will not be adding it) which is becoming increasingly annoying as a heavy neovim/ncurses user. Cons: 256 color only, no drop down, package in repositories is extremely out of date and installing/compiling the latest version of the EFL dependencies from source literally takes half an hour.


There are a lot of other worthy terminal emulators: rxvt-unicode, suckless, termite, etc. but they all have glaring flaws, sometimes even worse than the above. Suckless (st) for example keeps it's configuration in a header file meaning every config change requires a recompile. Many of them (including some of the ones I highlighted above like konsole) seem to be configurable only via mouse, which is beyond annoying for a terminal emulator.

Many might consider the existence of tmux to make splits/panes a non-issue for the terminal itself. I don't disagree, but YMMV.

There's a glaring omission: I haven't mentioned any of the electron-based projects like hyper. That's because I personally keep about 12 different terminal sessions going at a given time, and electron is just too greedy for that kind of usage. Which is a shame, as some of those offerings have impressive feature sets. If you tend to have fewer sessions open you might give one of them a try, I've played with extraterm and it seems a little more in line with what iterm2 offers.

I wish everyone luck, but my quest for the one true terminal emulator continues onward.

  • 2
    I continue to be awed by iTerm2. I use the tmux control-mode integration daily though I only use separate tabs (not split panes). I wonder how plausible a Linux port would be? – Steven Shaw Oct 23 '18 at 22:45
  • @StevenShaw probably hard enough to approach being a total rewrite. It's almost certainly written in Objective-C/Swift with Mac OS graphics API calls strewn liberally about. Have no idea if the ioctls are completely different or not between linux and darwin, but I would suspect that they are. But anyways, yes: I find it ironic that freakin Mac OS, aka the Fisher-Price pretty picture OS, has a better terminal emulator than Linux. – Jared Smith Oct 24 '18 at 00:03
  • Not sure that Objective-C or Swift pose a particular difficulty on Linux these days but macOS graphics APIs sure do. Perhaps there'd be much to salvage of the non-UI stuff (like pty, tmux control-mode etc). Anyhow, thought I'd say thanks for mentioning Kitty as it looks like one to watch on the Linux side! The author wrote the hugely popular Calibre app. – Steven Shaw Oct 24 '18 at 03:22
  • 1
    @StevenShaw Tilix is another one I should have mentioned in my answer, it's pretty good although it does it's configuration through dconf while I prefer text/ini/markdown/json, but it's pretty good. – Jared Smith Oct 24 '18 at 10:27
  • Thanks for the detailed comparison. You mentioned shell integration for several terminals, yet I'm unable to find anything in those shells documentations, that comes close to https://www.iterm2.com/documentation-shell-integration.html (e.g. see the return status code of some previous command by right clicking) Could you elaborate on what you mean by shell integration? – T S May 08 '19 at 10:08
  • @TS it means that the advanced features of the terminal emulator (e.g. visual bell, drag-n-drop) will work with supported alternative shells like zsh and fish. Basically the same kind of stuff that iTerm2 lists in its docs you linked (varies depending on which terminal has which features). – Jared Smith May 08 '19 at 11:18
  • @JaredSmith
    " [...] advanced features of the terminal emulator [...] will work with supported alternative shells like zsh and fish. [...]"

    This definition explains why shell integration is listed for those alternative terminals :-) However, I'm almost sure, that's not what "shell integration" usually stands for: AFAIK it typically means, that the shell is communicating with the terminal, to send additional data, without the terminal immediately displaying that data as text, but instead using it for special features.

    – T S May 08 '19 at 13:16
  • From https://www.iterm2.com/documentation-shell-integration.html "[...] works by configuring your shell [...] to send [...] information: [...] Where a command [...] ends and its output begins. The return code [...] username [...] host name [...] current directory." – T S May 08 '19 at 13:17
  • From https://termysequence.io/doc/shell-integration.html "With shell integration, the command shell running within a terminal reports the username, hostname, current directory, and job information to termy-server via certain escape sequences." – T S May 08 '19 at 13:17
  • From http://extraterm.org/guide.html#shell-integration "The shell integration [...]
    • hooks into your shell to report commands invocations to Extraterm.
    • hooks into your shell to report the result of command invocations."
    – T S May 08 '19 at 13:17
  • do any of these shells allow you to easily open a file in your $EDITOR or xdg-open by clicking on the filename and path? I've been trying my ass off to get this to work in Tilix but this is the one feature I miss the most. Very time saving when getting output of a spec or git diff for example. – lacostenycoder May 25 '21 at 18:16
  • 1
    Noting that currently Tilix is in maintenance mode as of 2019: https://github.com/gnunn1/tilix/issues/1700 – snazzybouche Apr 18 '23 at 15:52
26

You can try terminator, search for it in the Software Centre.

I'm not sure whether it provides the feature you require, but it offers some other good features of iterm2 like horizontal and vertical window split

Since April 2020 the source is hosted by github.

abu_bua
  • 10,783
Anoop
  • 404
  • 5
  • 5
25

tilix is the most complete alternative I found so far

MattDMo
  • 2,125
  • 1
  • 13
  • 18
8

I would suggest guake Install guake

Which has an overlay and the "hotkey window" and stuff like that

Amith KK
  • 13,412
4

DomTerm supports many of the features of iterm2 and more: Shell integration, split panes, inline html (images and rich text), detachable sessions, very solid xterm emulation.

4

Just to add Hyper to the list. It's an electron based terminal that's fairly neat, stable, and easy to use with lots of configuration options.

https://hyper.is/

  • 4
    And fantastically expensive to use, and lacks any of the stability essential of a terminal. It's also slow! Sorry but no. – Benjamin R Mar 28 '19 at 08:41
4

iTerm2 does amazing things, but so far only for Mac OS X. (github)

extraterm is a terminal emulator for Linux, Mac and Windows that does different amazing things.

joeytwiddle
  • 1,957
2

kitty is a cross-platform terminal emulator with GPU rendering, Python scriptable, and feature-full.

fferri
  • 151
2

Deepin Terminal is a pretty good option. It's a very fast/light terminal. You can install it by running:

sudo apt install deepin-terminal
王子1986
  • 2,382
1

You can use tmux - simple and powerful terminal multiplexer.

Features:

  • Menus for interactive selection of running sessions, windows or clients
  • Window can be linked to an arbitrary number of sessions
  • vi-like or Emacs command mode (with auto completion) for managing tmux
  • Lack of built-in serial and telnet clients (which some consider bloat for the terminal multiplexer)
  • Easier configuration
  • Different command keys—it is not a drop-in replacement for screen, but can be configured to use compatible keybindings
  • Vertical and horizontal Window split support

Source


To install press Ctrl+Alt+T and do:

sudo apt install tmux
Olimjon
  • 7,292
bitbull
  • 11
1

The Trans-terminal-to-hotkey functionality to which you refer is available with the stock gnome terminal (or just terminal) which comes preinstalled in most Ubuntu versions.

Just right click the icon & choose preferences to set up. You won't see many options until you click 'profile' this gives you a 'load file' if you will.

As soon as you've set a profile, you get to customize everything about it, including transparency and keybindings.

Alot of the other answers refer to Tmux, which can be autoset on start with the terminal. In the 'Commands' section of preferences, uncheck the box above the textbox input line. Type tmux into this textbox. That is it. Tmux will autoload in all future windows.

And dont forget about Profiles. I personally have 3: tmux, vim, and nano. All configured via same process.

EDIT Sorry to bring this one back up from the depths, but I have a related info that I believe could save a lot of time for a lot of people. It changed my workflow, so when I saw this back on the front page, I decided to share.

Since writing this answer, Ive started using Terminator, as it lets you open as many terminals as you need (within reason) and save all of their attributes. So If you want to maximize the terminal, then split it into 6 or 7 terminals, and finally change each to a seperate profile (each with it's own transparency, color, command on launch, etc.), you can save all of that to a single layout.

I believe it is just

sudo apt install terminator

To show you just how powerful this program can be, I will show the current content of my displays. I currently have 3 seperate displays. Currently, this is what is loaded to them:

enter image description here

To load all this, I type Ctrl + Alt + Super + s.

Normally, one of the hassles of rebooting, for me, is reconfiguring all the windows that I need. However, they usually need to be in one of 5(ish) layouts. So I just set them each up and to a keybinding with terminator. I still have to open anything else I need, but one of the presets usually gets me most of the way.

NOTE: the non-terminal apps do not normally start with a layout launch. You have to set them to a terminal's launch command. But with 6 separate terminals launching, that is 6 opportunities to run commands. To launch an outside app, you have to use the ; or && operator. The 'command' is actually anything you can fit on a line, but you have to launch a shell somewhere in there.

Nate T
  • 1,524