I’ve recently switched a lot of my day to day tools. I’ve gotten disillusioned with Cinnamon for day to day use due to a long-standing bug with workspace switching. So when updating my setup to the latest Linux Mint LTS I thought I might try out alternatives.

I’m a pretty keyboard-driven guy, so I thought I might try some tiling window manager this time around. After some digging I settled on AwesomeWM. I’ve been happy with it so far.

I’ve also had a long standing todo of checking out Alacritty as a terminal replacement. Mostly because I’ve been using whatever terminal came with the WM and I found that they are not suited well to my workflow. So I’ve switched to it as well and I’m very happy with it. It’s slightly faster that other terminals and has a lot of configuration options which is all I needed.

I’ve also up to this point been using Guake as a drop-down terminal. I usually use it to handle various one-off stuff that has to be done during the day and to switch my todos in Taskwarrior. This made sense before, but it had the downside of having multiple configurations for the terminal. Also Guake is a bit slower than Alacritty. And hey, tiling WMs are supposed to be nicely configurable, so I took it upon myself to hook something up that will do exactly what I want.

Lo and behold, somebody already thought of that. There’s a dropdown terminal in the lain project. I don’t want the whole lain setup for myself so I dug around a bit to push it into my existing, reasonably vanilla config.

Here are the steps.

  1. Download the quake.lua file into a directory called util in your config directory (/home/user/.config/awesome for me).
  2. Go to the line where screens are attached, look for connect_for_each_screen. Then add two quake lines like the ones below.
local quake = require("util/quake")
awful.screen.connect_for_each_screen(function(s)
    -- Wallpaper
    s.quake = quake({ app = "alacritty",argname = "--title %s",extra = "--class QuakeDD -e tmux", visible = true, height = 0.9 })

This sets up the quake app to each screen to be invoked via hotkey.

  1. Add a keyboard shortcut by adding the below line somewhere where you add other key bindings.
awful.key({ modkey, }, "z", function () awful.screen.focused().quake:toggle() end, {description = "dropdown application", group = "launcher"})

This adds a Mod+Z binding that will bring up the console.

That’s it! Enjoy your new fast drop-down terminal!