Drop-down terminal in i3

One of the reasons I switched from KDE to i3wm is that I love and need terminals. In my field of work you happen to spawn dozens of them and you always end up running out of space / workspaces.

Yakuake has been a real ally to me for years as I intensively use a drop-down terminal for sporadic usages. It is hard to match Yakuake’s efficiency and ability to split terminals but I couldn’t stand all those KDE dependencies anymore; I had to find a great drop-down terminal solution in i3.

So I started looking at other drop-down terminals such as Terra and Guake but they didn’t fit my low dependencies and features list requirements.

Drop-down Terminator

My current solution is to take advantage of the floating mode of i3, use it with my beloved terminator et voilà ! Nothing more to install, no extra dependency, using the same shortcuts of my main $TERMINAL and all of its features 🙂

The idea is simple, we’ll create a special profile in terminator and have it spawned in floating mode upon i3 start. This profile must cover the following drop-down behaviors :

  • respond to a configurable show/hide key binding
  • present a drop-down terminal at the center of the screen
  • the interface should be dead simple and efficient and support splitting

Just edit your terminator configuration in ~/.config/terminator/conf and add :

  hide_window = F1

Then add the dropdown profile under the [profiles] section :

  exit_action = close
  scrollback_lines = 10000
  background_image = None
  scroll_on_output = False
  show_titlebar = False

That’s my minimal config, you can add your own stuff to it as well. Now we only need to configure i3 to spawn this profile at login and have it in floating mode.

Modify your i3 config file, usually ~/.i3/config :

exec terminator -c dropdown -p dropdown -T "Le Terminator" -H --geometry=1550x800

for_window [class="Terminator" instance="dropdown"] floating enable

That’s as simple as this.

EDIT: as per Joe’s comment, you can also configure i3 to place your floating Terminator window wherever you want (in his case, top off the screen). This still goes into your i3 config from above :

for_window [class=”Terminator” instance=”dropdown”] floating enable move absolute position 0 0

There’s still one limitation which I didn’t come across yet :

  • Unlike Yakuake, our drop-down terminator has a fixed geometry which you must set in the i3 config above and does not support percentage values. So if you have multiple screens of different resolutions it won’t adapt on them based on the screen you want to show your drop-down terminator.

So long, Yakuake !

18 thoughts on “Drop-down terminal in i3”

    1. Thanks mate, I didn’t know about this.

      This is an interesting feature indeed even more when the app you need doesn’t have a hide/show configuration option. I’ll try it soon 🙂

  1. Have you considered giving tmux a try? That way you could use most any terminal you want and still get the splitting features of terminator. Better still: It’s like screen, so you can use it ANYWHERE you have a console or virtual terminal. Knowing that you could get really minimalist and use xterm (I’m not a fan of xterm, myself.)

    1. Rather, you can recover the session from any terminal/console, or even over SSH, and still retain the exact splits you set up before. It’s primarily why I don’t actually use Terminator, because I already have all I need from tmux.

      1. Hi Yaro,

        Thanks for your comments, I’m sure it will give other people another insight and ideas.

        Yes I did, but I must admit that I’m not a fan of screen and tmux mainly because I dislike their full featured keybindings (my memory have enough of them already).

        I won’t argue about their versatility and I know they are very effective software too so I guess it’s just about everyone’s usage. TBH I’m fine with not having to keep all those sessions open all the time (I quite never switch off my work laptop anyway).

  2. Hello Ultrabug

    I actually do not use tiling WM (yet). And it seems you solved your problem already.
    But I quitted KDE fo rXfce few years ago, had to replace yakuake too with one alike;
    Here follow some GTK alternatives just in case :

    not to mention
    former being stjerm fork.

    1. Thanks for your input Arnaud; I gave some of those a try indeed and found that those I tried did need to much dependencies or were to tied with a specific WM (guake). I must say I’m happy with having a solution which doesn’t require another program to work thx to the tiling WM 😉

      Anyway, thx again for pointing out some other alternatives !

      1. The best technical writing uses specifics. You did so wonderfully in the section above, specifying ~/.config/terminator/config, For this section, do you mean ~/.config/i3/config? Can I add it right to the bottom of the file?

        1. You’re right, I added this to the article. Usually the file is ~/.i3/config (it was specified to you the first time you started i3) and yes you can add this at the bottom of it.

      2. Also I find that the first two lines posted for the terminator config break Terminator. It won’t open until I comment those lines out.

  3. Thanks for the article. This is exactly what i’ve been looking for.
    One thing to add. You can configure i3 to place your floating Terminator window wherever you want (in my case, top off the screen).
    for_window [class=”Terminator” instance=”dropdown”] floating enable move absolute position 0 0

    1. Hello Russel,

      AFAIK you cannot. You could try using the scratchpad method but when showing a scratchpad’ed app, i3 gets the other app out of full screen so I’m not sure this is entirely what you’re looking for.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.