Commit Graph

150 Commits

Author SHA1 Message Date
Kovid Goyal
01055d36b0 Move roundtrip on exit flag into terminal options to have a consistent API 2026-04-10 15:37:20 +05:30
Kovid Goyal
3fe884a29a DRYer 2026-04-10 15:32:27 +05:30
Kovid Goyal
5e158f90a7 Fix some responses from terminal sometimes leaking into shell on after kitten exit
Always do a roundtrip at kitten exit, except for special purpose
kittens. This slows down exit by one round trip time (capped at 2
seconds), however it ensures that we never get terminal response leak.

Fixes #9839
2026-04-10 15:14:38 +05:30
copilot-swe-agent[bot]
6a0efbfdba Refactor ShortcutTracker.Match() to respect AllowFallback priority order
Co-authored-by: kovidgoyal <1308621+kovidgoyal@users.noreply.github.com>
Agent-Logs-Url: https://github.com/kovidgoyal/kitty/sessions/85fbf706-4688-4901-9a23-907cebc91da3
2026-03-26 04:31:37 +00:00
Павел Мешалкин
8ffdf7d7ee feat: add per-mapping --allow-fallback for layout-independent shortcuts
Add --allow-fallback option to the map command that controls shifted
and ascii (alternate_key) fallback for individual key mappings.

For non-Latin keyboard layouts, when the current layout key is
non-ascii (codepoint > 127 and < 0xE000), the alternate_key from
the base layout is used for matching if the mapping opts in via
--allow-fallback=shifted,ascii.

Default kitty bindings use --allow-fallback=shifted,ascii so they
work out of the box with non-Latin layouts. User custom mappings
default to --allow-fallback=shifted (preserving existing shifted_key
behavior without ascii fallback).

--allow-fallback=none disables all fallback for a mapping.

Python side: parse_options_for_map() in options/utils.py handles flag
parsing, ShortcutMapping uses it in __init__. get_shortcut() filters
candidates by per-mapping allow_fallback.

Go side: ParseMap() handles --allow-fallback, KeyAction stores
AllowFallback, ShortcutTracker.Match passes it to matching.
MatchesParsedShortcut defaults to shifted,ascii for hardcoded shortcuts.

Migrated kittens (themes, command_palette, diff, choose_files) to
use ShortcutTracker with configurable map entries.

Tests added for Python (5 test methods) and Go (ParseMap + key matching).
2026-03-25 19:34:13 +03:00
newwares
828bd56fa5 ssh kitten: Push and pop keyboard encoding flags 2026-02-07 20:26:28 -05:00
Kovid Goyal
fee4cb0975 fix warning from linter 2025-12-02 23:37:53 +05:30
Kovid Goyal
b627d2e4ab Move error handling code into its own library 2025-10-12 13:51:16 +05:30
Kovid Goyal
f067e9cd92 Make various goroutines panic-safe 2025-10-09 07:17:53 +05:30
Kovid Goyal
ee00bfa01a ... 2025-09-21 10:15:06 +05:30
Kovid Goyal
2bdbbd909c Handle color scheme changes in choose-files kitten 2025-07-20 13:43:59 +05:30
Kovid Goyal
4d3bbd82e0 Extend the SGR Pixel mouse reporting protocol to also report when the mouse leaves the window 2025-07-12 11:59:23 +05:30
Kovid Goyal
d22244d135 Micro-optimization 2025-07-12 09:22:27 +05:30
Kovid Goyal
4a13c53438 Turn off focus tracking while doing tty remote control
Fixes #8733
2025-06-16 21:57:19 +05:30
Kovid Goyal
3feea5b279 DRYer 2025-06-05 20:59:09 +05:30
Kovid Goyal
7657b2b8c6 Get correct stacktraces for goroutine panics 2025-06-01 13:07:11 +05:30
Kovid Goyal
d1faccdd1c Loop API print proper stack traces for panics in go routines 2025-06-01 12:51:59 +05:30
Kovid Goyal
ecb9c46b95 ... 2025-06-01 12:35:23 +05:30
Kovid Goyal
b55013944e More work on choose-files 2025-05-20 14:16:49 +05:30
Kovid Goyal
e015ebefab Implement focus tracking in kitten infrastructure 2025-05-16 12:48:21 +05:30
Kovid Goyal
c861259e3b Rename go module from kitty -> github.com/kovidgoyal/kitty
Makes the code more easily re-useable in other projects
2025-05-16 08:43:39 +05:30
Kovid Goyal
7ec0085a0b Also report panic via debugprintln 2025-05-14 12:06:01 +05:30
Kovid Goyal
237bb35ee9 More CodeQL fixes 2025-04-20 21:53:11 +05:30
Kovid Goyal
adfcffa5d7 Various fixes to make CodeQL happy 2025-04-20 21:34:42 +05:30
Kovid Goyal
3a4d32b85b Get basic full string width tests running 2025-04-11 10:45:39 +05:30
Kovid Goyal
f3db7e7554 diff kitten: Automatically change colors on terminal color scheme change 2025-01-05 06:00:24 +05:30
Kovid Goyal
134271be93 diff kitten: Abort when run inside a terminal that does not support the kitty keyboard protocol
Fixes #8185
2025-01-03 21:34:38 +05:30
Kovid Goyal
fc463aaba5 Code to query terminal for capabilities 2025-01-03 21:30:05 +05:30
Kovid Goyal
4cb190130f Document why we explicitly turn off in band resize 2024-11-19 08:08:35 +05:30
Tim Culverhouse
4b354fbd30 tui: explicitly turn off in-band resize mode
Explicitly turn off in-band resize notifications if they were requested
as part of the loop. Kitty implicitly resets this mode when `XTRESTORE`
(`CSI ? r`) is seen, however some terminals implementing mode 2048
(eg foot and Ghostty) follow the xterm behavior of only restoring the
state of explicitly passed modes.

Some of the kittens have become very useful outside of just Kitty
(`show-key`, for example). Add an explicit reset of mode 2048 to support
the behavior of other terminal emulators.
2024-11-18 10:51:14 -06:00
Kovid Goyal
62d5e13cbd themes kitten: fix some keybaord shortcuts not working with weird IME systems on Linux that convert key events into text events 2024-10-15 09:51:52 +05:30
Kovid Goyal
2ac26b0e6d Fix #7752 2024-08-20 17:27:13 +05:30
Kovid Goyal
573058d861 Fix panic on empty style 2024-07-21 18:41:04 +05:30
Kovid Goyal
9c9041cf57 Dont need to reset inband resize since it is saved and restored on the private setting stack 2024-07-20 17:02:08 +05:30
Kovid Goyal
33131ff5eb ... 2024-07-20 14:06:39 +05:30
Kovid Goyal
95aeaa390f ... 2024-07-19 12:05:52 +05:30
Kovid Goyal
10bd0f71d8 Use inband resize events in kittens 2024-07-18 21:57:53 +05:30
Kovid Goyal
5a189b1afe Fix graphics being freed instead of deleted in draw_screen() 2024-06-24 07:54:15 +05:30
Kovid Goyal
b6e92dd79d Query font size and DPI from terminal 2024-06-24 07:54:13 +05:30
Kovid Goyal
27a2e3c488 Use correct pointer shape for hyperlinks 2024-06-24 07:54:13 +05:30
Kovid Goyal
a0bed32614 ... 2024-06-24 07:54:13 +05:30
Kovid Goyal
405f5ce148 Use stdlib maps/slices 2024-06-24 07:54:13 +05:30
Kovid Goyal
51472e1e88 Infrastructure for simple internal hyperlink handling 2024-06-24 07:54:13 +05:30
Kovid Goyal
814412b8ac kitten @ send-key: Fix some keys being sent in kitty keyboard protocol encoding when not using socket for remote control
The @ kitten no longer changes keyboard mode unless actually needed.
2024-05-02 11:04:41 +05:30
Kovid Goyal
5e12c0b144 Fix #7405 2024-05-01 09:40:22 +05:30
Kovid Goyal
934f2ede0b Start work on simple benchmark tool 2024-02-25 09:57:26 +05:30
Kovid Goyal
52025ff030 misc parser and test fixes 2024-02-25 09:57:22 +05:30
Kovid Goyal
24d9d502b1 Set window title when showing errors 2023-10-29 08:24:08 +05:30
Kovid Goyal
6a50af12d3 Make set_pointer_shapes private 2023-10-17 21:47:03 +05:30
Kovid Goyal
187fa996f8 Add the cell pointer shape 2023-10-16 20:33:12 +05:30