<no title> - kitty
Description: Screenshots Screenshot, showing the kitty floating quick access terminal above the background which is the program btop, running inside kitty, on macOS macOS, Screenshot, showing the kitty floating...

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

Screenshots

macOS

Linux

A sample panel on Linux

How the screenshots were generated.