2020-10-26 edit: small fix to the apple script to launch Kitty first
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 kitty with
--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 file named
macos-launch-services-cmdline in your
~./config/kitty/ folder, the content of this file will automatically be used as command line argument to Kitty.
In Alfred, in the terminal settings, choose “Custom”, and input the following appleScript:
on alfred_script(q) tell application "kitty" to activate do shell script "/Applications/Kitty.app/Contents/MacOS/kitty @ --to unix:/tmp/mykitty new-window --new-tab" 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 !