Using Kitty as a custom terminal for Alfred
10x macOS productivity (not really)
Kitty is an excellent GPU powered terminal application that’s awesome in many ways. iTerm2 is also a good option on macOS but, compared to Kitty, it just feels sluggish and bloated.
Another macOS tool that I use daily is Alfred, it’s a featureful spotlight replacement that can basically make coffee (as we say in French, not sure that’s a thing in English).
Alfred allows you to send a command directly to the terminal, it works with the default Terminal.app out of the box, but using anything else requires a bit of work.
It uses AppleScript to interact with applications, but Kitty does not offer an AppleScript API…. BUT Kitty does offer its own API, which allows you to control any aspects of kitty from outside kitty (yes even over ssh if you wish).
Setting it up
By default kitty disables this feature for security reasons, to enable it you
need to have
allow_remote_control yes in your
kitty.conf or run kitty with
That only allows to control kitty from within the kitty instance.
We want to do that from another process, in order to do that you need to spawn
--listen-on unix:A_PATH_THAT_YOU_CHOOSE, that will open a UNIX
socket that will be used to interact with this kitty instance.
Given that on macOS you’re launching an app, it’s tough to send it a command
line argument, but do not worry, Kitty’s got you covered, by creating a special
macos-launch-services-cmdline in your
the content of this file will automatically be used as command line argument to
In Alfred, in the terminal settings, choose “Custom”, and input the following appleScript:
on alfred_script(q) do shell script "/Applications/Kitty.app/Contents/MacOS/kitty @ --to unix:/tmp/mykitty new-window --new-tab" tell application "kitty" to activate tell application "System Events" to keystroke q tell application "System Events" key code 36 -- enter key end tell end alfred_script
This script will ask kitty to open a new tab (using the socket we defined), and then use AppleScript to activate the window and send key events.
Hope it helps !