Hide navigation sidebar
Hide table of contents sidebar
Skip to content

- Quickstart
  Toggle navigation of Quickstart
  - Install kitty
    Toggle navigation of Install kitty
    - Binary install
    - Manually installing
    - Desktop integration on Linux
    - Customizing the installation
    - Uninstalling
    - Building from source
  - Build from source
    Toggle navigation of Build from source
    - Building in debug mode
      Toggle navigation of Building in debug mode
      - Building the documentation
      - Dependencies
      - Build and run from source with Nix
      - Notes for Linux/macOS packagers
      - Cross compilation
- Overview
  Toggle navigation of Overview
  - Design philosophy
  - Tabs and Windows
    Toggle navigation of Tabs and Windows
    - Scrolling
    - Tabs
    - Windows
  - Other keyboard shortcuts
  - Configuring kitty
    Toggle navigation of Configuring kitty
    - kitty.conf
      Toggle navigation of kitty.conf
      - Fonts
      - Text cursor customization
      - Scrollback
      - Mouse
        Toggle navigation of Mouse
        - Mouse actions
      - Performance tuning
      - Terminal bell
      - Window layout
      - Tab bar
      - Color scheme
        Toggle navigation of Color scheme
        - The color table
      - Advanced
      - OS specific tweaks
      - Keyboard shortcuts
        Toggle navigation of Keyboard shortcuts
        - Clipboard
        - Scrolling
        - Window management
        - Tab management
        - Layout management
        - Font sizes
        - Select and act on visible text
        - Miscellaneous
      - Sample kitty.conf
      - All mappable actions
        Toggle navigation of All mappable actions
        - Mappable actions
        - Copy/paste
        - Debugging
        - Layouts
        - Marks
        - Miscellaneous
        - Mouse actions
        - Scrolling
        - Tab management
        - Window management
  - Layouts
    Toggle navigation of Layouts
    - Arrange windows
    - The Stack Layout
    - The Tall Layout
    - The Fat Layout
    - The Grid Layout
    - The Splits Layout
    - The Horizontal Layout
    - The Vertical Layout
    - Resizing windows
  - Extending kitty
    Toggle navigation of Extending kitty
    - Extend with kittens
      Toggle navigation of Extend with kittens
      - icat
        Toggle navigation of icat
        - Source code for icat
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
      - kitty-diff
        Toggle navigation of kitty-diff
        - Major Features
        - Installation
        - Usage
        - Keyboard controls
        - Integrating with git
        - Why does this work only in kitty?
        - Configuration
        - Diffing
        - Colors
        - Keyboard shortcuts
        - Source code for diff
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
        - Sample diff.conf
      - Unicode input
        Toggle navigation of Unicode input
        - Source code for unicode_input
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
      - Changing kitty colors
        Toggle navigation of Changing kitty colors
        - How it works
        - Change color themes automatically when the OS switches between light and dark
        - Using your own themes
        - Contributing new themes
        - Changing the theme non-interactively
        - Source code for themes
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
      - Changing kitty fonts
        Toggle navigation of Changing kitty fonts
        - The font specification syntax
      - Hints
        Toggle navigation of Hints
        - Completely customizing the matching and actions of the kitten
        - Source code for hints
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
      - Make a Quake like quick access terminal
        Toggle navigation of Make a Quake like quick access terminal
        - Configuration
        - Window appearance
        - Source code for quick_access_terminal
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
        - Sample quick-access-terminal.conf
      - Draw a GPU accelerated dock panel on your desktop
        Toggle navigation of Draw a GPU accelerated dock panel on your desktop
        - Controlling panels via remote control
          Toggle navigation of Controlling panels via remote control
          - Source code for panel
          - Command Line Interface
        - Options
        - How the screenshots were generated
        - Compatibility with various platforms
      - Remote files
        Toggle navigation of Remote files
      - Hyperlinked grep
        Toggle navigation of Hyperlinked grep
      - Transfer files
        Toggle navigation of Transfer files
        - Basic usage
        - Avoiding the confirmation prompt
        - Delta transfers
        - Source code for transfer
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
      - Truly convenient SSH
        Toggle navigation of Truly convenient SSH
        - A real world example
        - How it works
        - Host bootstrap configuration
        - Login shell environment
        - SSH configuration
        - The copy command
          Toggle navigation of The copy command
          - Options
        - Copying terminfo files manually
      - Custom kittens
        Toggle navigation of Custom kittens
        - kitty API to use with kittens
        - Passing arguments to kittens
        - Passing the contents of the screen to the kitten
        - Using kittens to script kitty, without any terminal UI
        - Sending mouse events
        - Using remote control inside the main() kitten function
        - Debugging kittens
        - Adding options to kittens
        - Developing builtin kittens for inclusion with kitty
        - Kittens created by kitty users
      - broadcast
        Toggle navigation of broadcast
        - Source code for broadcast
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
      - Selecting files, fast
        Toggle navigation of Selecting files, fast
        - Configuration
        - Filesystem scanning
        - Keyboard shortcuts
        - Source code for choose_files
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
      - clipboard
        Toggle navigation of clipboard
        - Source code for clipboard
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
      - Using terminal programs to provide Linux desktop components
        Toggle navigation of Using terminal programs to provide Linux desktop components
      - Developing builtin kittens
        Toggle navigation of Developing builtin kittens
        - Getting started
          Toggle navigation of Getting started
          - Template for main.py
          - Template for main.go
          - Edit `tools/cmd/tool/main.go`
      - notify
        Toggle navigation of notify
        - Source code for notify
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
      - Query terminal
        Toggle navigation of Query terminal
        - Source code for query_terminal
        - Command Line Interface
          Toggle navigation of Command Line Interface
          - Options
  - Remote control
    Toggle navigation of Remote control
    - Control kitty from scripts
    - Tutorial
    - Remote control via a socket
    - The builtin kitty shell
    - Allowing only some windows to control kitty
    - Fine grained permissions for remote control
      Toggle navigation of Fine grained permissions for remote control
      - Customizing authorization with your own program
    - Mapping key presses to remote control commands
    - Broadcasting what you type to all kitty windows
    - The remote control protocol
    - Matching windows and tabs
      Toggle navigation of Matching windows and tabs
      - Matching windows
      - Matching tabs
        Toggle navigation of Matching tabs
        - The kitty remote control protocol
          Toggle navigation of The kitty remote control protocol
          - Encrypted communication
          - Async and streaming requests
          - action
          - close-tab
          - close-window
          - create-marker
          - detach-tab
          - detach-window
          - disable-ligatures
          - env
          - focus-tab
          - focus-window
          - get-colors
          - get-text
          - goto-layout
          - kitten
          - last-used-layout
          - launch
          - load-config
          - ls
          - new-window
          - remove-marker
          - resize-os-window
          - resize-window
          - run
          - scroll-window
          - select-window
          - send-key
          - send-text
          - set-background-image
          - set-background-opacity
          - set-colors
          - set-enabled-layouts
          - set-font-size
          - set-spacing
          - set-tab-color
          - set-tab-title
          - set-user-vars
          - set-window-logo
          - set-window-title
          - signal-child
    - kitten @
      Toggle navigation of kitten @
      - Options
    - kitten @ action
      Toggle navigation of kitten @ action
      - Options
    - kitten @ close-tab
      Toggle navigation of kitten @ close-tab
      - Options
    - kitten @ close-window
      Toggle navigation of kitten @ close-window
      - Options
    - kitten @ create-marker
      Toggle navigation of kitten @ create-marker
      - Options
    - kitten @ detach-tab
      Toggle navigation of kitten @ detach-tab
      - Options
    - kitten @ detach-window
      Toggle navigation of kitten @ detach-window
      - Options
    - kitten @ disable-ligatures
      Toggle navigation of kitten @ disable-ligatures
      - Options
    - kitten @ env
    - kitten @ focus-tab
      Toggle navigation of kitten @ focus-tab
      - Options
    - kitten @ focus-window
      Toggle navigation of kitten @ focus-window
      - Options
    - kitten @ get-colors
      Toggle navigation of kitten @ get-colors
      - Options
    - kitten @ get-text
      Toggle navigation of kitten @ get-text
      - Options
    - kitten @ goto-layout
      Toggle navigation of kitten @ goto-layout
      - Options
    - kitten @ kitten
      Toggle navigation of kitten @ kitten
      - Options
    - kitten @ last-used-layout
      Toggle navigation of kitten @ last-used-layout
      - Options
    - kitten @ launch
      Toggle navigation of kitten @ launch
      - Options
    - kitten @ load-config
      Toggle navigation of kitten @ load-config
      - Options
    - kitten @ ls
      Toggle navigation of kitten @ ls
      - Options
    - kitten @ new-window
      Toggle navigation of kitten @ new-window
      - Options
    - kitten @ remove-marker
      Toggle navigation of kitten @ remove-marker
      - Options
    - kitten @ resize-os-window
      Toggle navigation of kitten @ resize-os-window
      - Options
    - kitten @ resize-window
      Toggle navigation of kitten @ resize-window
      - Options
    - kitten @ run
      Toggle navigation of kitten @ run
      - Options
    - kitten @ scroll-window
      Toggle navigation of kitten @ scroll-window
      - Options
    - kitten @ select-window
      Toggle navigation of kitten @ select-window
      - Options
    - kitten @ send-key
      Toggle navigation of kitten @ send-key
      - Options
    - kitten @ send-text
      Toggle navigation of kitten @ send-text
      - Options
    - kitten @ set-background-image
      Toggle navigation of kitten @ set-background-image
      - Options
    - kitten @ set-background-opacity
      Toggle navigation of kitten @ set-background-opacity
      - Options
    - kitten @ set-colors
      Toggle navigation of kitten @ set-colors
      - Options
    - kitten @ set-enabled-layouts
      Toggle navigation of kitten @ set-enabled-layouts
      - Options
    - kitten @ set-font-size
      Toggle navigation of kitten @ set-font-size
      - Options
    - kitten @ set-spacing
      Toggle navigation of kitten @ set-spacing
      - Options
    - kitten @ set-tab-color
      Toggle navigation of kitten @ set-tab-color
      - Options
    - kitten @ set-tab-title
      Toggle navigation of kitten @ set-tab-title
      - Options
    - kitten @ set-user-vars
      Toggle navigation of kitten @ set-user-vars
      - Options
    - kitten @ set-window-logo
      Toggle navigation of kitten @ set-window-logo
      - Options
    - kitten @ set-window-title
      Toggle navigation of kitten @ set-window-title
      - Options
    - kitten @ signal-child
      Toggle navigation of kitten @ signal-child
      - Options
  - Startup Sessions
  - Creating tabs/windows
    Toggle navigation of Creating tabs/windows
    - The launch command
    - The piping environment
    - Special arguments
    - Watching launched windows
    - Finding executables
    - Syntax reference
      Toggle navigation of Syntax reference
      - Options
  - Mouse features
    Toggle navigation of Mouse features
    - Scripting the mouse click
      Toggle navigation of Scripting the mouse click
      - Matching criteria
      - Scripting the opening of files with kitty
  - Font control
  - The scrollback buffer
  - Integration with shells
    Toggle navigation of Integration with shells
    - Shell integration
    - Features
    - Configuration
      Toggle navigation of Configuration
      - More ways to browse command output
    - How it works
    - Shell integration over SSH
    - Shell integration in a container
    - Clone the current shell into a new window
    - Edit files in new kitty windows even over SSH
    - Using shell integration in sub-shells, containers, etc.
    - Manual shell integration
    - Integration with other shells
    - Notes for shell developers
  - Multiple copy/paste buffers
  - Marks
    Toggle navigation of Marks
    - Mark text on screen
    - Examples
    - Creating markers dynamically
    - Scrolling to marks
    - The full syntax for creating marks
    - Arbitrary marker functions
- Frequently Asked Questions
  Toggle navigation of Frequently Asked Questions
  - Some special symbols are rendered small/truncated in kitty?
  - Using a color theme with a background color does not work well in vim?
  - I get errors about the terminal being unknown or opening the terminal failing or functional keys like arrow keys don’t work?
  - I cannot use the key combination X in program Y?
  - How do I change the colors in a running kitty instance?
  - How do I specify command line options for kitty on macOS?
  - I catted a binary file and now kitty is hung?
  - kitty is not able to use my favorite font?
  - How can I assign a single global shortcut to bring up the kitty terminal?
  - I do not like the kitty icon!
  - How do I map key presses in kitty to different keys in the terminal program?
  - How do I open a new window or tab with the same working directory as the current window?
  - Things behave differently when running kitty from system launcher vs. from another terminal?
  - I am using tmux/zellij and have a problem
  - I opened and closed a lot of windows/tabs and top shows kitty’s memory usage is very high?
  - Why does kitty sometimes start slowly on my Linux system?
- Support kitty development ❤️
- Performance
  Toggle navigation of Performance
  - Benchmarks
    Toggle navigation of Benchmarks
    - Keyboard to screen latency
    - Throughput
    - Energy usage
  - Instrumenting kitty
- Changelog
  Toggle navigation of Changelog
  - Recent major new features
    Toggle navigation of Recent major new features
    - Access kitty with a single keypress [0.42]
    - Multiple sized text [0.40]
    - Cursor trails [0.37]
    - Variable font support [0.36]
    - Desktop notifications [0.36]
    - Wayland goodies [0.34]
    - Cheetah speed 🐆 [0.33]
  - Detailed list of changes
    Toggle navigation of Detailed list of changes
    - 0.42.2 [2025-07-16]
    - 0.42.1 [2025-05-17]
    - 0.42.0 [2025-05-11]
    - 0.41.1 [2025-04-03]
    - 0.41.0 [2025-03-29]
    - 0.40.1 [2025-03-18]
    - 0.40.0 [2025-03-08]
    - 0.39.1 [2025-02-01]
    - 0.39.0 [2025-01-16]
    - 0.38.1 [2024-12-26]
    - 0.38.0 [2024-12-15]
    - 0.37.0 [2024-10-30]
    - 0.36.4 [2024-09-27]
    - 0.36.3 [2024-09-25]
    - 0.36.2 [2024-09-06]
    - 0.36.1 [2024-08-24]
    - 0.36.0 [2024-08-17]
    - 0.35.2 [2024-06-22]
    - 0.35.1 [2024-05-31]
    - 0.35.0 [2024-05-25]
    - 0.34.1 [2024-04-19]
    - 0.34.0 [2024-04-15]
    - 0.33.1 [2024-03-21]
    - 0.33.0 [2024-03-12]
    - 0.32.2 [2024-02-12]
    - 0.32.1 [2024-01-26]
    - 0.32.0 [2024-01-19]
    - 0.31.0 [2023-11-08]
    - 0.30.1 [2023-10-05]
    - 0.30.0 [2023-09-18]
    - 0.29.2 [2023-07-27]
    - 0.29.1 [2023-07-17]
    - 0.29.0 [2023-07-10]
    - 0.28.1 [2023-04-21]
    - 0.28.0 [2023-04-15]
    - 0.27.1 [2023-02-07]
    - 0.27.0 [2023-01-31]
    - 0.26.5 [2022-11-07]
    - 0.26.4 [2022-10-17]
    - 0.26.3 [2022-09-22]
    - 0.26.2 [2022-09-05]
    - 0.26.1 [2022-08-30]
    - 0.26.0 [2022-08-29]
    - 0.25.2 [2022-06-07]
    - 0.25.1 [2022-05-26]
    - 0.25.0 [2022-04-11]
    - 0.24.4 [2022-03-03]
    - 0.24.3 [2022-02-28]
    - 0.24.2 [2022-02-03]
    - 0.24.1 [2022-01-06]
    - 0.24.0 [2022-01-04]
    - 0.23.1 [2021-08-17]
    - 0.23.0 [2021-08-16]
    - 0.22.2 [2021-08-02]
    - 0.22.1 [2021-07-31]
    - 0.22.0 [2021-07-26]
    - 0.21.2 [2021-06-28]
    - 0.21.1 [2021-06-14]
    - 0.21.0 [2021-06-12]
    - 0.20.3 [2021-05-06]
    - 0.20.2 [2021-04-28]
    - 0.20.1 [2021-04-19]
    - 0.20.0 [2021-04-19]
    - 0.19.3 [2020-12-19]
    - 0.19.2 [2020-11-13]
    - 0.19.1 [2020-10-06]
    - 0.19.0 [2020-10-04]
    - 0.18.3 [2020-08-11]
    - 0.18.2 [2020-07-28]
    - 0.18.1 [2020-06-23]
    - 0.18.0 [2020-06-20]
    - 0.17.4 [2020-05-09]
    - 0.17.3 [2020-04-23]
    - 0.17.2 [2020-03-29]
    - 0.17.1 [2020-03-24]
    - 0.17.0 [2020-03-24]
    - 0.16.0 [2020-01-28]
    - 0.15.1 [2019-12-21]
    - 0.15.0 [2019-11-27]
    - 0.14.6 [2019-09-25]
    - 0.14.5 [2019-09-23]
    - 0.14.4 [2019-08-31]
    - 0.14.3 [2019-07-29]
    - 0.14.2 [2019-06-09]
    - 0.14.1 [2019-05-29]
    - 0.14.0 [2019-05-24]
    - 0.13.3 [2019-01-19]
    - 0.13.2 [2019-01-04]
    - 0.13.1 [2018-12-06]
    - 0.13.0 [2018-12-05]
    - 0.12.3 [2018-09-29]
    - 0.12.2 [2018-09-24]
    - 0.12.1 [2018-09-08]
    - 0.12.0 [2018-09-01]
    - 0.11.3 [2018-07-10]
    - 0.11.2 [2018-07-01]
    - 0.11.1 [2018-06-17]
    - 0.11.0 [2018-06-12]
    - 0.10.1 [2018-05-24]
    - 0.10.0 [2018-05-21]
    - 0.9.1 [2018-05-05]
    - 0.9.0 [2018-04-15]
    - 0.8.4 [2018-03-31]
    - 0.8.3 [2018-03-29]
    - 0.8.2 [2018-03-17]
    - 0.8.1 [2018-03-09]
    - 0.8.0 [2018-02-24]
    - 0.7.1 [2018-01-31]
    - 0.7.0 [2018-01-24]
    - 0.6.1 [2017-12-28]
    - 0.6.0 [2017-12-18]
    - 0.5.1 [2017-12-01]
    - 0.5.0 [2017-11-19]
    - 0.4.2 [2017-10-23]
    - 0.4.0 [2017-10-22]
- Integrations with other tools
  Toggle navigation of Integrations with other tools
  - Image and document viewers
  - System and data visualisation tools
  - Editor integration
  - Scrollback manipulation
  - Desktop panels
  - Miscellaneous
- Terminal protocol extensions
  Toggle navigation of Terminal protocol extensions
  - Colored and styled underlines
  - Terminal graphics protocol
    Toggle navigation of Terminal graphics protocol
    - Getting the window size
    - A minimal example
    - The graphics escape code
    - Transferring pixel data
      Toggle navigation of Transferring pixel data
      - RGB and RGBA data
      - PNG data
      - Compression
      - The transmission medium
        Toggle navigation of The transmission medium
        - Local client
        - Remote client
      - Querying support and available transmission mediums
    - Display images on screen
      Toggle navigation of Display images on screen
      - Controlling displayed image layout
      - Unicode placeholders
      - Relative placements
    - Deleting images
    - Suppressing responses from the terminal
    - Requesting image ids from the terminal
    - Animation
      Toggle navigation of Animation
      - Transferring animation frame data
      - Controlling animations
      - Composing animation frames
    - Image persistence and storage quotas
    - Control data reference
    - Interaction with other terminal actions
  - Comprehensive keyboard handling in terminals
    Toggle navigation of Comprehensive keyboard handling in terminals
    - Quickstart
    - An overview
      Toggle navigation of An overview
      - Key codes
      - Modifiers
      - Event types
      - Text as code points
      - Non-Unicode keys
    - Progressive enhancement
      Toggle navigation of Progressive enhancement
      - Disambiguate escape codes
      - Report event types
      - Report alternate keys
      - Report all keys as escape codes
      - Report associated text
    - Detection of support for this protocol
    - Legacy key event encoding
      Toggle navigation of Legacy key event encoding
      - Legacy functional keys
      - Legacy text keys
    - Functional key definitions
    - Legacy `ctrl` mapping of ASCII keys
    - Bugs in fixterms
    - Why xterm’s modifyOtherKeys should not be used
  - The text sizing protocol
    Toggle navigation of The text sizing protocol
    - Quickstart
    - The escape code
    - How it works
      Toggle navigation of How it works
      - Fractional scaling
    - Fixing the character width issue for the terminal ecosystem
    - Wrapping and overwriting behavior
    - Detecting if the terminal supports this protocol
    - Interaction with other terminal controls
      Toggle navigation of Interaction with other terminal controls
      - Cursor movement
      - Editing controls
    - The algorithm for splitting text into cells
      Toggle navigation of The algorithm for splitting text into cells
      - Unicode variation selectors
  - File transfer over the TTY
    Toggle navigation of File transfer over the TTY
    - Overall design
      Toggle navigation of Overall design
      - Sending files to the computer running the terminal emulator
      - Receiving files from the computer running terminal emulator
    - Canceling a session
    - Quieting responses from the terminal
    - File metadata
    - Symbolic and hard links
      Toggle navigation of Symbolic and hard links
      - Sending links to the terminal emulator
      - Receiving links from the terminal emulator
    - Transmitting binary deltas
      Toggle navigation of Transmitting binary deltas
      - Sending to the terminal emulator
      - Receiving from the terminal emulator
      - The format of signatures and deltas
    - Compression
    - Bypassing explicit user authorization
    - Encoding of transfer commands as escape codes
  - Desktop notifications
    Toggle navigation of Desktop notifications
    - Allowing users to filter notifications
    - Being informed when user activates the notification
    - Being informed when a notification is closed
    - Updating or closing an existing notification
    - Automatically expiring notifications
    - Adding icons to notifications
      Toggle navigation of Adding icons to notifications
      - Adding icons by transmitting icon data
    - Adding buttons to the notification
    - Playing a sound with notifications
    - Querying for support
    - Specification of all keys used in the protocol
    - Base64
    - Escape code safe UTF-8
    - Identifier
  - Mouse pointer shapes
    Toggle navigation of Mouse pointer shapes
    - Setting the pointer shape
    - Pushing and popping shapes onto the stack
    - Querying support
    - Interaction with other terminal features
    - Pointer shape names
    - Legacy xterm compatibility
  - Unscrolling the screen
  - Color control
    Toggle navigation of Color control
    - Saving and restoring colors
    - Setting and querying colors
      Toggle navigation of Setting and querying colors
      - Querying current color values
      - Setting color values
      - Color value encoding
  - Setting text styles/colors in arbitrary regions of the screen
  - Copying all data types to the clipboard
    Toggle navigation of Copying all data types to the clipboard
    - Reading data from the system clipboard
    - Writing data to the system clipboard
    - Avoiding repeated permission prompts
    - Support for terminal multiplexers
  - Miscellaneous protocol extensions
    Toggle navigation of Miscellaneous protocol extensions
    - Simple save/restore of all terminal modes
    - Independent control of bold and faint SGR properties
    - Reporting when the mouse leaves the window
    - kitty specific private escape codes
- Press mentions of kitty
  Toggle navigation of Press mentions of kitty
  - Video reviews

Back to top
Toggle table of contents sidebar