If you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.
Find a file
ttyS3 dc36e21654
fix(tabs): mouse handling stuck after aborted tab drag on Wayland
A quick click-and-flick on a tab could leave all of kitty with mouse
input permanently redirected to the tab bar, making every window
unclickable and text selection impossible.

Starting a tab drag is asynchronous: the drag thumbnail is rendered on
the next frame before glfwStartDrag is called. If the button is
released in that window, wl_data_device_start_drag is sent with a stale
serial that no longer matches an active pointer implicit grab, so the
compositor silently ignores it. The wl_data_source then never receives
any event, on_drag_source_finished never runs, and the
tab_being_dragged state is stuck forever, hijacking all mouse events.

Fix in layers:
- glfw/Wayland: track the implicit grab (serial of the first button
  press and pressed-button count), use that serial for start_drag and
  refuse with EAGAIN when there is no active implicit grab instead of
  letting the compositor silently drop the request
- mouse.c: a left button release arriving while a tab drag is marked
  started but no system DND is active means the drag never launched
  (an active DND consumes the release on all platforms), so clear the
  drag state instead of waiting for DND events that will never come
- tabs.py: handle OSError from start_drag_with_data for tab drags the
  same way window drags already do; clear the potential-drag state when
  the release lands on the new-tab button or empty tab bar area
- tabs.py/boss.py: clear drag state on drag finish/drop even when the
  dragged tab has already been closed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 03:43:25 +00:00
.github Bump actions/checkout from 6 to 6.0.2 in the actions group 2026-06-08 03:44:39 +00:00
3rdparty
bypy Bump dependency for CVE 2026-05-20 20:32:08 +05:30
docs Fix splits layout options serialization 2026-06-10 07:34:47 +05:30
gen Add detection for dnd protocol 2026-05-06 08:48:26 +05:30
glad More robust detection of support for GL_FRAMEBUFFER_SRGB 2025-08-11 09:13:49 +05:30
glfw fix(tabs): mouse handling stuck after aborted tab drag on Wayland 2026-06-10 03:43:25 +00:00
kittens Add a note about interaction of --reload-in and auto reload 2026-06-07 08:55:48 +05:30
kitty fix(tabs): mouse handling stuck after aborted tab drag on Wayland 2026-06-10 03:43:25 +00:00
kitty_tests Add tests for splits layout serialization 2026-06-10 07:41:02 +05:30
logo macOS: Switch to Tahoe style application icon 2026-04-18 13:28:22 +05:30
shell-integration Avoid shell quoting in ssh login fallback 2026-05-19 23:14:08 +05:00
terminfo Update Se terminfo entry to reset cursor to configured default 2026-04-26 17:50:16 -05:00
tools dnd kitten: Create regular files with O_EXCL to avoid symlink attacks 2026-06-03 12:17:38 +05:30
.editorconfig
.gitattributes Move parsing of colors fully into C 2025-12-31 14:21:45 +05:30
.gitignore Add XI2 smooth scrolling support for X11 backend 2026-01-09 17:13:24 +05:30
__main__.py
benchmark.py Make mypy 1.16 happy 2025-05-30 10:06:38 +05:30
Brewfile
build-terminfo
CHANGELOG.rst
CONTRIBUTING.md
count-lines-of-code
dev.sh
embeds.go Code to serialize/unserialize loaded images 2025-10-07 17:25:47 +05:30
go.mod Bump dep version 2026-06-09 06:23:34 +05:30
go.sum Bump dep version 2026-06-09 06:23:34 +05:30
INSTALL.md
key_encoding.json
LICENSE
Makefile
publish.py Fix pkill invocation 2026-02-24 07:47:22 +05:30
pyproject.toml Update minimum python to 3.11 from 3.10 2026-04-19 21:41:58 +05:30
README.asciidoc Update some docs 2025-10-07 20:20:19 +05:30
rsync-and-build.sh
SECURITY.md ... 2025-09-14 21:31:43 +05:30
session.vim
setup.py macOS: Switch to Tahoe style application icon 2026-04-18 13:28:22 +05:30
shell.nix Update shell.nix 2026-03-23 17:26:53 -04:00
staticcheck.conf
test.py
update-on-ox

= kitty - the fast, feature-rich, cross-platform, GPU based terminal

If you live in the terminal, *kitty* is made for **you**!

See https://sw.kovidgoyal.net/kitty/[the kitty website].

image:https://github.com/kovidgoyal/kitty/workflows/CI/badge.svg["Build status", link="https://github.com/kovidgoyal/kitty/actions?query=workflow%3ACI"]

https://sw.kovidgoyal.net/kitty/faq/[Frequently Asked Questions]

To ask other questions about kitty usage, use either the https://github.com/kovidgoyal/kitty/discussions/[discussions on GitHub] or the
https://www.reddit.com/r/KittyTerminal[Reddit community]

Packaging status in various repositories:

image:https://repology.org/badge/vertical-allrepos/kitty-terminal.svg?columns=3&header=kitty["Packaging status", link="https://repology.org/project/kitty-terminal/versions"]