Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
kitty(1)			      kitty				kitty(1)

Name
     kitty - The fast, feature rich terminal emulator

	kitty [options] [program-to-run ...]

     Run  the  kitty  terminal emulator. You can also specify the program to run
     inside kitty as normal arguments following the options.  For example: kitty
     --hold sh -c "echo hello, world"

     For   comprehensive   documentation    for    kitty,    please    see:    -
     https://sw.kovidgoyal.net/kitty/

Options
     --app-id <CLS>, --class <CLS>
	    On	Wayland set the application id. On X11 set the class part of the
	    WM_CLASS window property.  Default: kitty

     --name <NAME>, --os-window-tag <NAME>
	    On Wayland, set the window tag, when specified. On X11, set the name
	    part of the WM_CLASS property, when unset,	defaults  to  using  the
	    value from kitty --class.

     --title <TITLE>, -T <TITLE>
	    Set  the  OS  window  title. This will override any title set by the
	    program running inside kitty, permanently fixing the OS window's ti-
	    tle. So only use this if you are running a program that does not set
	    titles.

     --config <CONFIG>, -c <CONFIG>
	    Specify a path to the configuration file(s) to use.  All  configura-
	    tion  files  are  merged onto the builtin kitty.conf, overriding the
	    builtin values. This option can be specified multiple times to  read
	    multiple  configuration files in sequence, which are merged. Use the
	    special value NONE to not load any config file.

	    If this option is not specified, config files are  searched  for  in
	    the      order:	 $XDG_CONFIG_HOME/kitty/kitty.conf,	 ~/.con-
	    fig/kitty/kitty.conf, $XDG_CONFIG_DIRS/kitty/kitty.conf.  The  first
	    one that exists is used as the config file.

	    If	the  environment  variable  KITTY_CONFIG_DIRECTORY is specified,
	    that directory is always used and the above searching does not  hap-
	    pen.

	    If	/etc/xdg/kitty/kitty.conf exists, it is merged before (i.e. with
	    lower priority) than any user config files. It can be used to  spec-
	    ify  system-wide  defaults	for  all  users. You can use either - or
	    /dev/stdin to read the config from STDIN.

     --override <OVERRIDE>, -o <OVERRIDE>
	    Override individual configuration options, can be specified multiple
	    times. Syntax: name=value. For example: kitty -o font_size=20

     --directory <DIRECTORY>, --working-directory <DIRECTORY>, -d <DIRECTORY>
	    Change to the specified directory when launching.  Default: .

     --detach [=no]
	    Detach from the controlling terminal, if any. On macOS use	open  -a
	    kitty.app -n instead.

     --detached-log <DETACHED_LOG>
	    Path to a log file to store STDOUT/STDERR when using --detach

     --session <SESSION>
	    Path  to  a file containing the startup session (tabs, windows, lay-
	    out, programs). Use - to read from STDIN. See Sessions  for  details
	    and an example. Environment variables in the file name are expanded,
	    relative  paths are resolved relative to the kitty configuration di-
	    rectory. The special value none means no session will be used,  even
	    if the startup_session option has been specified in kitty.conf. Note
	    that  using  this  option  means the command line arguments to kitty
	    specifying a program to run are ignored.

     --hold [=no]
	    Remain open, at a shell prompt, after child process exits. Note that
	    this only affects the first window. You can quit by either using the
	    close window shortcut or running the exit command.

     --single-instance [=no], -1 [=no]
	    If specified only a single instance of kitty will run.  New  invoca-
	    tions  will  instead  create  a new top-level window in the existing
	    kitty instance. This allows kitty to share a single sprite cache  on
	    the  GPU  and  also reduces startup time. You can also have separate
	    groups of kitty instances by using the  kitty  --instance-group  op-
	    tion.

     --instance-group <INSTANCE_GROUP>
	    Used  in  combination  with  the kitty --single-instance option. All
	    kitty invocations with the same kitty --instance-group  will  result
	    in new windows being created in the first kitty instance within that
	    group.

     --wait-for-single-instance-window-close [=no]
	    Normally,  when using kitty --single-instance, kitty will open a new
	    window in an existing instance and quit immediately. With  this  op-
	    tion,  it will not quit till the newly opened window is closed. Note
	    that if no previous instance is found, then kitty will wait  anyway,
	    regardless of this option.

     --listen-on <LISTEN_ON>
	    Listen on the specified socket address for control messages. For ex-
	    ample,   kitty   --listen-on=unix:/tmp/mykitty   or   kitty   --lis-
	    ten-on=tcp:localhost:12345. On Linux systems, you can also	use  ab-
	    stract  UNIX  sockets,  not associated with a file, like this: kitty
	    --listen-on=unix:@mykitty. Environment variables  are  expanded  and
	    relative paths are resolved with respect to the temporary directory.
	    To	control  kitty,  you can send commands to it with kitten @ using
	    the kitten @ --to option to specify this address. Note that  if  you
	    run  kitten @ within a kitty window, there is no need to specify the
	    kitten @ --to option as it will automatically read from the environ-
	    ment. Note that this will be ignored unless allow_remote_control  is
	    set  to  either: yes, socket or socket-only. This can also be speci-
	    fied in kitty.conf.  To start in headless mode,  without  an  actual
	    window, use kitty --start-as=hidden.

     --start-as <START_AS>
	    Control  how  the initial kitty OS window is created. Note that this
	    is applies to all OS Windows if you use the kitty  --session  option
	    to create multiple OS Windows. Any OS Windows state specified in the
	    session  file  gets overriden.  Default: normal Choices: fullscreen,
	    hidden, maximized, minimized, normal

     --position <POSITION>
	    The position, for example 10x20, on screen at  which  to  place  the
	    first  kitty  OS  Window created by this invocation. This may or may
	    not work depending on the policies of the desktop environment/window
	    manager.	It    never    works	on     Wayland.     See     also
	    remember_window_position  to have kitty automatically try to restore
	    the previous window position.

     --grab-keyboard [=no]
	    Grab the keyboard. This means global shortcuts  defined  in  the  OS
	    will  be passed to kitty instead. Useful if you want to create an OS
	    modal window. How well this works  depends	on  the  OS/window  man-
	    ager/desktop environment. On Wayland it works only if the compositor
	    implements	the  inhibit-keyboard-shortcuts protocol. On macOS Apple
	    doesn't allow applications to grab the keyboard without special per-
	    missions, so it doesn't work.

   Debugging options
     --version [=no], -v [=no]
	    The current kitty version.

     --dump-commands [=no]
	    Output commands received from child process to STDOUT.

     --replay-commands <REPLAY_COMMANDS>
	    Replay previously dumped commands. Specify the path to a  dump  file
	    previously	created  by  kitty  --dump-commands.  You can open a new
	    kitty window to replay the commands with:

	       kitty sh -c "kitty --replay-commands /path/to/dump/file; read"

     --dump-bytes <DUMP_BYTES>
	    Path to file in which to store the raw bytes received from the child
	    process.

     --debug-gl [=no], --debug-rendering [=no]
	    Debug rendering commands. This will cause all OpenGL calls to  check
	    for  errors  instead of ignoring them. Also prints out miscellaneous
	    debug information. Useful when debugging rendering problems.

     --debug-input [=no], --debug-keyboard [=no]
	    Print out key and mouse events as they are received.

     --debug-font-fallback [=no]
	    Print out information about the  selection	of  fallback  fonts  for
	    characters not present in the main font.

     --watcher <WATCHER>
	    This  option  is  deprecated  in  favor  of  the  watcher  option in
	    kitty.conf and should not be used.

Tabs and windows
     kitty is capable of running multiple programs organized into tabs and  win-
     dows.   The top level of organization is the OS window. Each OS window con-
     sists of one or more tabs. Each tab consists of one or more kitty	windows.
     The  kitty windows can be arranged in multiple different layouts, like win-
     dows are organized in a tiling window manager. The keyboard controls (which
     are all customizable) for tabs and windows are:

   Scrolling
	    +---------------------------+-----------------------------+
	    | Action			| Shortcut		      |
	    +---------------------------+-----------------------------+
	    | Line up			| ctrl+shift+up (also  ^a=Y+^a+^a |
	    |				| and ^a+^a on macOS)	      |
	    +---------------------------+-----------------------------+
	    | Line down 		| ctrl+shift+down	(also |
	    |				| ^a=Y+^a+^a and ^a+^a on macOS)    |
	    +---------------------------+-----------------------------+
	    | Page up			| ctrl+shift+page_up	(also |
	    |				| ^a+^a on macOS) 	      |
	    +---------------------------+-----------------------------+
	    | Page down 		| ctrl+shift+page_down	(also |
	    |				| ^a+^a on macOS) 	      |
	    +---------------------------+-----------------------------+
	    | Top			| ctrl+shift+home  (also  ^a+^a |
	    |				| on macOS)		      |
	    +---------------------------+-----------------------------+
	    | Bottom			| ctrl+shift+end (also ^a+^a on |
	    |				| macOS)		      |
	    +---------------------------+-----------------------------+
	    | Previous shell prompt	| ctrl+shift+z (see Shell in- |
	    |				| tegration)		      |
	    +---------------------------+-----------------------------+
	    | Next shell prompt 	| ctrl+shift+x (see Shell in- |
	    |				| tegration)		      |
	    +---------------------------+-----------------------------+
	    | Browse scrollback in less | ctrl+shift+h		      |
	    +---------------------------+-----------------------------+
	    | Browse last cmd output	| ctrl+shift+g (see Shell in- |
	    |				| tegration)		      |
	    +---------------------------+-----------------------------+
	    | Search scrollback in less | ctrl+shift+/	(also  ^a+F on |
	    |				| macOS)		      |
	    +---------------------------+-----------------------------+

     The scroll actions only take effect  when	the  terminal  is  in  the  main
     screen.  When the alternate screen is active (for example when using a full
     screen program like an editor) the key events are instead passed to program
     running in the terminal.

   Tabs
		+-------------------+-----------------------------+
		| Action	    | Shortcut			  |
		+-------------------+-----------------------------+
		| New tab	    | ctrl+shift+t  (also  ^a+t on |
		|		    | macOS)			  |
		+-------------------+-----------------------------+
		| Close tab	    | ctrl+shift+q (also  ^a+w  on |
		|		    | macOS)			  |
		+-------------------+-----------------------------+
		| Next tab	    | ctrl+shift+right (also ^a+^a=Y |
		|		    | and  ^a<section>+^a+]  on ma- |
		|		    | cOS)			  |
		+-------------------+-----------------------------+
		| Previous tab	    | ctrl+shift+left	    (also |
		|		    | ^a<section>+^a+^a=Y	      and |
		|		    | ^a<section>+^a+[ on macOS)	  |
		+-------------------+-----------------------------+
		| Next layout	    | ctrl+shift+l		  |
		+-------------------+-----------------------------+
		| Move tab forward  | ctrl+shift+.		  |
		+-------------------+-----------------------------+
		| Move tab backward | ctrl+shift+,		  |
		+-------------------+-----------------------------+
		| Set tab title     | ctrl+shift+alt+t	    (also |
		|		    | ^a<section>+^a+i on macOS)	  |
		+-------------------+-----------------------------+

   Windows
	      +-----------------------+-----------------------------+
	      | Action		      | Shortcut		    |
	      +-----------------------+-----------------------------+
	      | New window	      | ctrl+shift+enter      (also |
	      | 		      | ^a+^a(C) on macOS)	    |
	      +-----------------------+-----------------------------+
	      | New OS window	      | ctrl+shift+n (also  ^a+n  on |
	      | 		      | macOS)			    |
	      +-----------------------+-----------------------------+
	      | Close window	      | ctrl+shift+w	      (also |
	      | 		      | ^a<section>+^a+d on macOS)    |
	      +-----------------------+-----------------------------+
	      | Resize window	      | ctrl+shift+r (also  ^a+r  on |
	      | 		      | macOS)			    |
	      +-----------------------+-----------------------------+
	      | Next window	      | ctrl+shift+]		    |
	      +-----------------------+-----------------------------+
	      | Previous window       | ctrl+shift+[		    |
	      +-----------------------+-----------------------------+
	      | Move window forward   | ctrl+shift+f		    |
	      +-----------------------+-----------------------------+
	      | Move window backward  | ctrl+shift+b		    |
	      +-----------------------+-----------------------------+
	      | Move window to top    | ctrl+shift+`		    |
	      +-----------------------+-----------------------------+
	      | Visually focus window | ctrl+shift+f7		    |
	      +-----------------------+-----------------------------+
	      | Visually swap window  | ctrl+shift+f8		    |
	      +-----------------------+-----------------------------+
	      | Focus specific window | ctrl+shift+1,  ctrl+shift+2 |
	      | 		      | ... ctrl+shift+0 (also ^a+1, |
	      | 		      | ^a+2  ...  ^a+9	on   macOS) |
	      | 		      | (clockwise     from	the |
	      | 		      | top-left)		    |
	      +-----------------------+-----------------------------+

     Additionally, you can define shortcuts in kitty.conf to  focus  neighboring
     windows and move windows around (similar to window movement in vim):

	map ctrl+left neighboring_window left
	map shift+left move_window right
	map ctrl+down neighboring_window down
	map shift+down move_window up
	...

     You can also define a shortcut to switch to the previously active window:

	map ctrl+p nth_window -1

     nth_window  will  focus  the nth window for positive numbers (starting from
     zero) and the previously active windows for negative numbers.

     To switch to the nth OS window, you can define nth_os_window. Only positive
     numbers are accepted, starting from one.

     You can define shortcuts to detach the current window and move  it  to  an-
     other tab or another OS window:

	# moves the window into a new OS window
	map ctrl+f2 detach_window
	# moves the window into a new tab
	map ctrl+f3 detach_window new-tab
	# moves the window into the previously active tab
	map ctrl+f3 detach_window tab-prev
	# moves the window into the tab at the left of the active tab
	map ctrl+f3 detach_window tab-left
	# moves the window into a new tab created to the left of the active tab
	map ctrl+f3 detach_window new-tab-left
	# asks which tab to move the window into
	map ctrl+f4 detach_window ask

     Similarly, you can detach the current tab, with:

	# moves the tab into a new OS window
	map ctrl+f2 detach_tab
	# asks which OS Window to move the tab into
	map ctrl+f4 detach_tab ask

     Note  that tabs can be re-arranged, detached and moved to another OS Window
     in the same kitty instance using drag and drop.

     Finally, you can define a shortcut to close all windows in a tab other than
     the currently active window:

	map f9 close_other_windows_in_tab

Other keyboard shortcuts
     The full list of actions that can be mapped to  key  presses  is  available
     here.  To	learn  how  to	do more sophisticated keyboard mappings, such as
     modal mappings, per application mappings, etc.  see  Making  your	keyboard
     dance.
	   +-----------------------------+-----------------------------+
	   | Action			 | Shortcut		       |
	   +-----------------------------+-----------------------------+
	   | Show this help		 | ctrl+shift+f1	       |
	   +-----------------------------+-----------------------------+
	   | Copy to clipboard		 | ctrl+shift+c  (also	^a+c on |
	   |				 | macOS)		       |
	   +-----------------------------+-----------------------------+
	   | Paste from clipboard	 | ctrl+shift+v (also  ^a+v  on |
	   |				 | macOS)		       |
	   +-----------------------------+-----------------------------+
	   | Paste from selection	 | ctrl+shift+s 	       |
	   +-----------------------------+-----------------------------+
	   | Pass selection to program	 | ctrl+shift+o 	       |
	   +-----------------------------+-----------------------------+
	   | Increase font size 	 | ctrl+shift+equal  (also ^a++ |
	   |				 | on macOS)		       |
	   +-----------------------------+-----------------------------+
	   | Decrease font size 	 | ctrl+shift+minus (also  ^a+- |
	   |				 | on macOS)		       |
	   +-----------------------------+-----------------------------+
	   | Restore font size		 | ctrl+shift+backspace  (also |
	   |				 | ^a+0 on macOS)	       |
	   +-----------------------------+-----------------------------+
	   | Toggle fullscreen		 | ctrl+shift+f11 (also  ^a+^a+f |
	   |				 | on macOS)		       |
	   +-----------------------------+-----------------------------+
	   | Toggle maximized		 | ctrl+shift+f10	       |
	   +-----------------------------+-----------------------------+
	   | Input Unicode character	 | ctrl+shift+u 	 (also |
	   |				 | ^a+^a+space on macOS)	       |
	   +-----------------------------+-----------------------------+
	   | Open URL in web browser	 | ctrl+shift+e 	       |
	   +-----------------------------+-----------------------------+
	   | Reset the terminal 	 | ctrl+shift+delete	 (also |
	   |				 | ^a=Y+^a+r on macOS)	       |
	   +-----------------------------+-----------------------------+
	   | Edit kitty.conf		 | ctrl+shift+f2  (also ^a+, on |
	   |				 | macOS)		       |
	   +-----------------------------+-----------------------------+
	   | Reload kitty.conf		 | ctrl+shift+f5  (also  ^a+^a+, |
	   |				 | on macOS)		       |
	   +-----------------------------+-----------------------------+
	   | Debug kitty.conf		 | ctrl+shift+f6  (also ^a=Y+^a+, |
	   |				 | on macOS)		       |
	   +-----------------------------+-----------------------------+
	   | Open a kitty shell 	 | ctrl+shift+escape	       |
	   +-----------------------------+-----------------------------+
	   | Increase background opacity | ctrl+shift+a>m	       |
	   +-----------------------------+-----------------------------+
	   | Decrease background opacity | ctrl+shift+a>l	       |
	   +-----------------------------+-----------------------------+
	   | Full background opacity	 | ctrl+shift+a>1	       |
	   +-----------------------------+-----------------------------+
	   | Reset background opacity	 | ctrl+shift+a>d	       |
	   +-----------------------------+-----------------------------+

See also
     See kitty.conf(5)

Author
     Kovid Goyal

Copyright
     2026, Kovid Goyal

0.47.4				  Aug 30, 2026				kitty(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=kitty&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help