This is not possible to do in a cross-platform manner, as it depends on the details of the desktop environment/window manager. Really this function should be implemented in the window manager, so it can be performed with any window.
For instance, I use a tiling window manager, and I have a key binding to instantly bring up a terminal.
also, tdrop works well
Does anyone have a method for OSX?
Edit: I have solved this using BetterTouchTool
@dbousamra How did you do this with BTT?
@dbousamra Could you do this on https://github.com/jwilm/alacritty ???
@zx1986 I recommend Alfred. Create a Hotkey workflow for any app you want to launch it or toggle visibility of it.
@NightMachinary
How did you do this with BTT?
I've got it working with a global keyboard trigger to "show/hide a specific application", but would be great to hear if anyone is doing it differently.

There's also https://github.com/koekeishiya/skhd
I build kitty in ~/git/other/kitty/, and start kitty with ctrl+return using this line in my .skhdrc
ctrl - return : open ~/git/other/kitty/kitty/launcher/kitty.app -n --args --single-instance --title="zsh"
I tried many ways of doing this and eventually settled on Hammerspoon. I prefer it because it's free, flexible, easy to set up programmatically in my dotfiles, and fast. (That last point is important. For example, you can avoid installing external software and instead make a shortcut in System Preferences for an Automator "Service", but there's a second-long delay after pressing the keys.)
Putting this in ~/.hammerspoon/init.lua will show/hide kitty when you press CtrlSpace:
hs.hotkey.bind({"ctrl"}, "space", function()
local app = hs.application.get("kitty")
if app then
if not app:mainWindow() then
app:selectMenuItem({"kitty", "New OS window"})
elseif app:isFrontmost() then
app:hide()
else
app:activate()
end
else
hs.application.launchOrFocus("kitty")
end
end)
Or, if you want it to always open a new window:
hs.hotkey.bind({"ctrl"}, "space", function()
local app = hs.application.get("kitty")
if app then
app:selectMenuItem({"kitty", "New OS window"})
else
hs.application.launchOrFocus("kitty")
end
end)
@mk12 Very nice this inspired me to make this which turns Kitty into a drop down quake and iTerm like style, i bound it to F15 which is the Break/Pause key because c+spc is frequently used to trigger auto complete in vscode and other editor. paired with hide_window_decorations yes in kitty.conf it makes for a very viable alternative to iTerm
hs.hotkey.bind({}, "F15", function()
local app = hs.application.get("kitty")
if app then
if not app:mainWindow() then
app:selectMenuItem({"kitty", "New OS window"})
elseif app:isFrontmost() then
app:hide()
else
app:activate()
end
else
hs.application.launchOrFocus("kitty")
app = hs.application.get("kitty")
end
app:mainWindow():moveToUnit'[100,50,0,0]'
app:mainWindow().setShadows(false)
end)
@NightMachinary
How did you do this with BTT?
I've got it working with a global keyboard trigger to "show/hide a specific application", but would be great to hear if anyone is doing it differently.
This doesn't seem to work if kitty is in legacy full screen mode
macos_traditional_fullscreen true
And specifically for i3: https://github.com/LandingEllipse/kitti3
I suggest adding it to integrations.rst.
Not a dropdown, but a very simple solution to run Kitty instead of default terminal via standard Ctrl+Alt+T shortcut:
lxqt-config-globalkeyshortcuts)/home/USER/.local/kitty.app/bin/kittyUSER with your username (alas neither $USER nor $HOME can be used here)This also allows to avoid manual desktop integration steps:
https://sw.kovidgoyal.net/kitty/binary.html#desktop-integration-on-linux
Most helpful comment
@mk12 Very nice this inspired me to make this which turns Kitty into a drop down quake and iTerm like style, i bound it to
F15which is the Break/Pause key becausec+spcis frequently used to trigger auto complete in vscode and other editor. paired withhide_window_decorations yesinkitty.confit makes for a very viable alternative toiTerm