Commit Graph

651 Commits

Author SHA1 Message Date
Kovid Goyal
2ead0de844 Only parse color options for key=val specs in parse_colors 2026-04-26 10:15:28 +05:30
Kovid Goyal
827b4b9e02 Option to have focus_follows_mouse only on drops
Fixes #9896
2026-04-21 20:05:00 +05:30
Kovid Goyal
e9f3844f64 Implement auto reload of config 2026-04-16 14:41:29 +05:30
copilot-swe-agent[bot]
a348cabe23 Skip generation increment in background_images() when paths unchanged 2026-04-16 08:13:14 +05:30
Kovid Goyal
12a87929c6 Fix various minor bugs in the multiple bgimage code 2026-04-15 23:02:11 +05:30
Kovid Goyal
df4d3218a3 ... 2026-04-15 22:43:48 +05:30
Kovid Goyal
2c9541cf21 Allow preloading multiple background images to GPU for fast switching
Fixes #9836
2026-04-15 22:34:20 +05:30
Kovid Goyal
d5cf828482 Update changelog 2026-04-10 08:42:52 +05:30
Kovid Goyal
2f8f3ab40f Merge branch 'pdobrev/macos-opt-to-ignore-safe-area' of https://github.com/pdobrev/kitty 2026-04-10 08:38:59 +05:30
Kovid Goyal
543bb5d330 Cleanup previous PR 2026-04-09 14:20:46 +05:30
Kovid Goyal
139a0fac25 Merge branch 'fix-inactive-text-alpha' of https://github.com/zzhaolei/kitty 2026-04-09 14:09:43 +05:30
Petar Dobrev
a4170d4b59 Added macos_fullscreen_ignore_safe_area_insets option 2026-04-09 10:27:01 +03:00
zhaolei
40c2012eeb Support negative inactive_text_alpha values for active-window-only fading 2026-04-09 13:04:01 +08:00
Kovid Goyal
f87f15bd1d ... 2026-04-09 09:19:21 +05:30
David Thiel
faed62e993 Make focus_follows_mouse only switch on window-boundary crossings
The previous implementation reverted any keyboard-driven window switch
on the next mouse motion event because it compared the hovered window
against the active window rather than against the previously hovered
window. Move the focus-follows-mouse trigger into
set_currently_hovered_window so it fires only when the hover ID
actually transitions, which also covers OS-window-entry.
2026-04-07 14:18:54 +01:00
Kovid Goyal
c88adfba98 Allow optionally dragging URLs with the mouse
Fixes #9804
2026-04-06 10:40:11 +05:30
Kovid Goyal
0584cbfadc Implement sending drag start message to client 2026-04-03 09:42:57 +05:30
Kovid Goyal
07f4d3c7ae Unify the two drag threshold settings 2026-04-02 13:49:15 +05:30
Kovid Goyal
12ea072fce remove unused code 2026-03-31 22:57:19 +05:30
Kovid Goyal
ea7a82c0c6 Cleanup previous PR 2026-03-31 22:49:54 +05:30
copilot-swe-agent[bot]
973c5fb650 Implement OSC 9;4 progress bar rendering in kitty window
Fixes #9777
Fixes #9786
2026-03-31 22:45:25 +05:30
copilot-swe-agent[bot]
35ca3a178d Implement smooth animated scrolling for scroll_line_up and scroll_line_down
Fixes #9784
2026-03-31 21:02:53 +05:30
Kovid Goyal
9e79d3be9c Merge branch 'feat-draggable-window-title-bars' of https://github.com/mcrmck/kitty 2026-03-28 10:02:14 +05:30
Kovid Goyal
f9e8d8d232 ... 2026-03-27 21:46:55 +05:30
Kovid Goyal
65cd74bfa0 Cleanup previous PR 2026-03-27 21:36:07 +05:30
Kovid Goyal
bad02b1d31 Merge branch 'master' of https://github.com/mc36/kitty 2026-03-27 21:32:22 +05:30
Kovid Goyal
801718e38a Update changelog 2026-03-27 20:11:48 +05:30
Jake Stewart
1a62cde212 Add option to generate 256 color palette from first 16 colors
Needs more work to test and possibly implement reporting and setting
of the nullable color table colors.

Fixes #9426
2026-03-27 20:01:14 +05:30
mc36
a7e5b949a6 adding mouse action line_from_begin see #9755 2026-03-27 08:21:30 +01:00
Kovid Goyal
d3133420ba Micro-optimization 2026-03-26 16:45:04 +05:30
Kovid Goyal
88ee80b327 Cleanup previous PR
Actually respect the fallback order when finding matching shortcuts
2026-03-26 09:30:14 +05:30
Павел Мешалкин
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
Kovid Goyal
0ddad7474b Cleanup previous PR 2026-03-25 09:23:29 +05:30
zhaolei
47d89faa23 Add modifier-based hyperlink target display 2026-03-25 11:06:00 +08:00
Kovid Goyal
7c963a67cf ... 2026-03-23 22:24:56 +05:30
mcrmck
fd6940a0aa Wire tab_bar_show_new_tab_button option into types.py and parse.py
Registers the new bool option so kitty can parse it from kitty.conf
and expose it via get_options(). Default is False (off).
2026-03-22 17:16:22 -04:00
mcrmck
3e85db684d Make always-visible '+' new tab button opt-in via tab_bar_show_new_tab_button
Default is 'no' to avoid forcing the button on all kitty users. When disabled,
the '+' indicator still appears during window drags as a drop target (existing
behaviour). Set to 'yes' to keep it permanently visible as a clickable button.
2026-03-22 17:13:08 -04:00
mcrmck
462f7025fb Merge upstream/master into feat-draggable-window-title-bars
Resolves conflict in kitty/tabs.py by keeping both force_show_title_bars
and renaming_in_window fields.
2026-03-17 22:40:28 -04:00
Kovid Goyal
b3b7d0596d Dont use neighboring tab colors for tab bar margins on translucent OS windows
The colors are rendered semi-transparent which effectively means they blend
with background unlike the neighboring colors and end up not matching
2026-03-15 09:22:43 +05:30
mcrmck
59c963c481 Add draggable window title bars
Implements drag-to-reorder for window title bars, following up on the
merged window title bar feature (#9450) and the design discussion in #9619.

- Drag a title bar and drop on another title bar to swap positions
- Drop on a window body quadrant (left/right/top/bottom) to insert as
  a directional split; Splits layout uses insert_window_next_to(), other
  layouts fall back to move_window_to_group()
- Drop on a tab bar tab to move the window into that tab
- Drop on another OS window to move into its active tab
- Drop outside kitty to detach into a new OS window
- Tab bar highlights the hovered tab during a window drag, mirroring
  how the destination window title bar is highlighted
- toggle_window_title_bars action temporarily force-shows title bars
  for drag-to-reorder when they are normally hidden, auto-hiding after
  the drag completes
- window_title_bar_drag_threshold option (default 5px) controls how far
  the mouse must move before a drag is initiated; 0 disables dragging

MIME type follows the same convention as tab dragging:
application/net.kovidgoyal.kitty-window-{PID}

Ref: #9619
2026-03-08 20:56:38 -04:00
Kovid Goyal
fcdc67a356 Make shift+left click extend the current selection instead of starting a new selection when the mouse is not grabbed by the TUI application
Matches behavior common to most GUI applications and other terminal
emulators. Can be reverted to previous behavior easily.

See https://github.com/kovidgoyal/kitty/discussions/9608
2026-03-05 11:00:43 +05:30
Kovid Goyal
e1a14551fa Cleanup previous PR 2026-03-05 09:25:10 +05:30
Kovid Goyal
b66703ec85 Merge branch 'pane-title-bar' of https://github.com/mcrmck/kitty 2026-03-05 08:31:50 +05:30
mcrmck
f2ae5d0028 Add window_title_bar_min_windows option, simplify window_title_bar
- Add window_title_bar_min_windows (0=never, 1=always, 2+=threshold)
  similar to tab_bar_min_tabs, to control when title bars appear
- Remove 'none' choice from window_title_bar so it purely controls
  position (top/bottom); disabling is now via min_windows 0
- Only hide title bar for truly empty template strings, not
  whitespace-only, so users can have intentionally blank bars

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 21:14:54 -05:00
Kovid Goyal
baca6acdc7 Document the new command palette 2026-03-03 15:34:10 +05:30
copilot-swe-agent[bot]
f13c8cd44d Allow optionally showing unmapped actions in the command palette
Also highlight letters matching the search query.
Fixes #9589
2026-03-03 14:29:10 +05:30
mcrmck
c68f712d19 Fix CI: sort imports and fix Sphinx cross-references
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 00:10:37 -05:00
mcrmck
cc32af250b Rename pane → window title bar per reviewer feedback
- Rename all options from pane_title_* to window_title_*
- Use foreground/background instead of fg/bg in color option names
- Change color options to to_color_or_none defaulting to None,
  falling back to corresponding tab bar colors
- Add bell_symbol, activity_symbol, progress_percent template vars
  using existing bell_on_tab and tab_activity_symbol options
- Add custom script support via window_title_bar.py in config dir
  (draw_window_title function exposed as {custom} in templates)
- Update C structs, Python references, and regenerate config files

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-01 23:53:28 -05:00
mcrmck
ab3a8ca56a Add pane title bar feature for window splits
Add an optional title bar that displays above or below each window pane
when multiple windows are visible in a tab. This is similar to tmux's
pane-border-format or Terminator's pane title bars.

New configuration options:
- pane_title_bar: none/top/bottom (default: none)
- pane_title_template: f-string template (same syntax as tab_title_template)
- active_pane_title_template: override for active pane
- pane_title_bar_active_fg/bg: colors for active pane title
- pane_title_bar_inactive_fg/bg: colors for inactive pane titles
- pane_title_bar_align: left/center/right text alignment

The title bars are rendered using virtual Screen objects registered with
the GPU, following the same model as the tab bar. Title bars are
automatically hidden when only a single window is visible.

Ref: https://github.com/kovidgoyal/kitty/discussions/9448

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-01 23:52:24 -05:00
Kovid Goyal
1a185e7027 ... 2026-02-26 19:11:00 +05:30