Add a tutorial for controlling kitty from scripts

This commit is contained in:
Kovid Goyal 2018-01-10 12:54:21 +05:30
parent 23f2b29069
commit 102823809b
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 71 additions and 0 deletions

View File

@ -231,6 +231,15 @@ windows are:
|===
== Controlling kitty from scripts
You can control kitty from the command line/scripts by sending it messages.
You can tell kitty to open/close/rename tabs and windows. You can even send
arbitrary input/text to any specified window. Messages can be sent using
```kitty @```. Note that you must set `allow_remote_control yes` in your
kitty.conf to use this feature. It even works over SSH connections. This
feature is best illustrated with a link:remote-control.asciidoc[tutorial].
== The scrollback buffer

62
remote-control.asciidoc Normal file
View File

@ -0,0 +1,62 @@
= Controlling kitty from scripts or the shell
kitty can be controlled from scripts or the shell prompt. You can open new
windows, send arbitrary text input to any window, name windows and tabs, etc.
Let's walk through a few examples of controlling kitty.
Start by running kitty as:
kitty -o allow_remote_control=yes --window-layout tall
In order for control to work, `allow_remote_control` must be enabled in
kitty.conf. Here we turn it on explicitly at the command line.
Now, in the new kitty window, enter the command:
kitty @ new-window --title Output --keep-focus cat
This will open a new window, running the ``cat`` program that will appear next
to the current window.
Let's send some text to this new window:
kitty @ send-text --match cmdline:cat Hello, World
This will make `Hello, World` show up in the window running the `cat` program.
The `--match` option is very powerful, it allows selecting windows by their
titles, the command line of the program running in the window, the working
directory of the program running in the window, etc. See `kitty @ send-text
--help` for details.
More usefully, you can pipe the output of a command running in one window to
another window, for example:
ls | kitty @ send-text --match title:Output --stdin
This will show the output of ls in the output window instead of the current
window. You can use this technique to, for example, show the output of running
make in your editor in a different window. The possibilities are endless.
You can even have things you type show up in a different window. Run:
kitty @ send-text --match title:Output --stdin
And type some text, it will show up in the output window, instead of the current
window. Type `Ctrl+D` when you are ready to stop.
Now, let's open a new tab.
kitty @ new-window --new-tab --tab-title "My Tab" --keep-focus bash
This will open a new tab running the bash shell with the title "My Tab".
We can change the title of the tab with:
kitty @ set-tab-title --match title:My New Title
Let's change the title of the current tab:
kitty @ set-tab-title Master Tab
As you can see, it is very easy to control kitty using the
`kitty @` messaging system. This tutorial touches only the
surface of what is possible. See `kitty @ --help` for more details.