Kitty 0.50
Kitty 0.50

原始链接: https://sw.kovidgoyal.net/kitty/changelog/#

此 kitty 版本新增可停靠窗口、注销/重启后会话恢复、类似命名标签页的工作区支持、改进的 Wayland 装饰与触摸屏支持、高级自定义着色器、图形协议功能、Program Status Protocol、自动明/暗主题处理、布局与缩放改进、字体缩放、鼠标滚轮映射、超链接显示选项、快速访问终端增强、会话、命令面板、标签栏、MIME 检测、IME 改进、shell 集成、性能与安全修复,以及终端模拟、窗口/标签页、ssh、kittens、Wayland、Linux、macOS 和 zsh 等方面的众多 bug 修复。

这是关于 Kovid Goyal 开发的终端模拟器 Kitty 0.50 的 Hacker News 讨论。该帖有 40 点和 11 条评论。用户称赞 Kitty 的速度、可定制性、资源效率和活跃开发。提到的功能包括退出登录后恢复/会话恢复和快速访问终端;着色器被提及,但有些人觉得动画光标过于忙碌。与 Ghostty 的比较指出功能类似,但 Kitty 在 macOS 上更大(约 246MB 对比 67MB),且有轻微的调整大小抖动。总体情绪积极,用户称其为可靠的首选终端,尽管维护者偶尔有些尖锐。
相关文章

原文
  • Allow docking kitty windows to the edges of other windows or of the tab, for status bars, file trees, etc. Create them with launch --type=window-dock or launch --type=tab-dock, see Docked windows

  • A new option restore_session_after_logout to save the state of every kitty instance, including scrollback, when logging out, restarting or shutting down and restore it the next time kitty starts. On macOS, the state is encrypted with a key in the keychain. On Linux, it requires the Inhibit desktop portal. See Restoring kitty after logging out (#1197, #10659)

  • Allow using tabs like named workspaces: A new launch --focus-existing option to focus an existing window or tab instead of creating a new one, a new by-title value for launch --location to keep tabs in alphabetical order and new options for kitten @ detach-window and the detach_window action to send windows to a named tab, creating it if needed (#10627)

  • Wayland: The client side window decorations used on compositors such as GNOME now look like native GNOME decorations and follow the desktop titlebar font, text scaling, button layout and titlebar click action settings (#10766)

  • Wayland: Support touchscreens. A tap is a click, a finger that moves scrolls with momentum, and a finger held still before it moves selects text (#5432, #10551)

  • Custom shaders: New cursor-trail-railgun, cursor-trail-torpedo and cursor-trail-pixiedust shaders that make particles fly off the cursor as it moves, in the style of neovide. Shaders can now be controlled with key presses via the new shader_event action (see Controlling shaders with key presses), can be faded in and out, reversed and looped with new animation_* pipeline directives and can define a pointer_map() function so that clicks and selections land on the text shown under the mouse, which the crt shader now uses, see Shaders that move content. Also fix animations becoming jerky after kitty has been running for a few hours, shaders specified by path not being found and various pipeline bugs (#10587, #10667, #10693, #10595, #10694, #10639)

  • Graphics protocol: Add two new indexed color image formats whose pixels are indices into the terminal color palette, so that images change color along with the color scheme, and allow clients to detect support for individual protocol features, such as animation and Unicode placeholders, via the new e query key, see Querying support for protocol features (#9379, #10732)

  • Support the Program Status Protocol (OSC 7501) that lets programs report whether they are working, finished, failed or blocked waiting on the user. Shown in the tab bar via a new tab.program_status field for tab_title_template, see Reporting the status of a program

  • Automatic color themes: When the system switches between light and dark, keep colors set by programs running in a window, by the ssh kitten, by launch --color or launch --copy-colors, and use the current theme colors when a program restores its saved colors. launch --color colors now also survive config reloads. The ssh kitten can use different color schemes for remote hosts in dark and light mode via the new kitten-ssh.color_scheme_dark, kitten-ssh.color_scheme_light and kitten-ssh.color_scheme_no_preference options (#10724)

  • Layouts: Align the borders of neighboring windows and keep the gaps between them uniform, and add a new option collapse_window_margins to have the margins of neighboring windows collapse into each other instead of adding up (#10508)

  • Window resizing: A new --strategy=edge mode to select and move a specific internal divider in the Splits layout, and hold Alt with a resize letter to take a fraction of the remaining resize steps, configurable with the new --fraction option

  • Scale the thickness of box drawing characters, cursors and the window title bar border with the font size, so they no longer look too thin when zoomed in or too thick when zoomed out. At the configured font_size nothing changes (#10362)

  • mouse_map can now map the scroll wheel, via the wheel_up, wheel_down, wheel_left and wheel_right buttons, for example, to change the font size with Ctrl+scroll

  • A new option hyperlink_target_position to control where the URL shown by show_hyperlink_targets is displayed, including as a browser style tooltip next to the mouse cursor (#10770)

  • Show the hand pointer and hover highlighting over links only when the pressed modifiers match a configured mouse action for opening the link with a single click, updating immediately when modifiers are pressed or released

  • quick-access-terminal kitten: New kitty +kitten quick_access_terminal --if-running, kitty +kitten quick_access_terminal --listen-on and kitty +kitten quick_access_terminal --hold options to run programs in an already running quick access terminal, use a fixed remote control socket and keep the terminal open after the program exits (#10603)

  • Sessions: A new os_window_position keyword and a new --os-window-geometry option for save_as_session to save the size, position and state of OS Windows in session files. Also fix the OS Window size and os_window_title in sessions sometimes being ignored (#10675)

  • Command palette: Show action and kitten aliases at the top when the search query is empty, so they can be used to pin frequently used actions (#10711)

  • Vertical tab bars: When tab_title_max_length is set, size the tab bar to fit the decorations of the current tab_bar_style, allowing much narrower tab bars (#10680)

  • Linux/BSD: Detect MIME types for open actions and kittens using the shared-mime-info cache, matching the rest of the desktop, including files without an extension, such as Makefile, and MIME type aliases (#3056)

  • IME: Keep the candidate window anchored at the start of the pre-edit text and at the cursor, so it no longer jumps around while composing text. On macOS, commit in-progress IME or dictation text instead of discarding it when the OS window loses focus (#10642, #10644)

  • Shell integration: Make the kitty terminfo files available in commands run via run0, similar to sudo (#10692)

  • kitty --config=NONE now also skips the automatic color theme files, open-actions.conf, launch-actions.conf, mime.types, paste-actions.py, notifications.py and the custom window icon in the kitty config directory

  • Processes kitty inserts to wrap the program it runs, such as /usr/bin/login on macOS or the wrapper for launch --hold, are now skipped when reporting the pid, working directory, command line and environment of a window in kitten @ ls and when matching windows. Also fix launch --cwd=root using the working directory of the foreground process instead of the root process while the shell is running a command

  • Nightly builds now show the date and hash of the commit they were built from in the output of kitty --version and kitten --version

  • Do not render between render frames to reduce flicker from programs that draw with many small partial updates (#10749)

  • Performance: Faster growing of the GPU sprite cache, particularly on macOS, less CPU usage with a non-zero input_delay and no continuous re-rendering when a selection is present and the window is scrolled back (#10714)

  • Remote control: Fix a crafted request being able to bypass password based remote control authentication by masquerading as a cancellation of an asynchronous request

  • Remote control: Fix many commands, including action, send-key, set-colors, set-background-opacity, set-font-size, ls, run and set-enabled-layouts, ignoring options, reporting false success or silently misinterpreting invalid input, particularly when used in remote_control mappings. set-colors now parses color files the same way as kitty.conf. Also fix a single unresponsive peer blocking all remote control communication and a crash when using damaged images with set-window-logo or set-background-image (#10672, #10632, #10688, #10690, #10715)

  • Fix various terminal emulation bugs, including in origin mode cursor position reports, erasing multicell characters, the CHT escape code and copying text containing tabs, wide characters being drawn on the wrong row after colliding with scaled text, emoji sequences being split into multiple cells when wrapped, text typed into a new window before the program is ready sometimes being garbled, as well as a heap buffer overflow, an out of bounds write and a use-after-free when reloading the config (#10609, #10729, #10632, #10682, #10767)

  • Graphics protocol: Allow shared memory object names without a leading slash again, for sandboxed macOS applications, and fix various bugs with animation frames and Unicode placeholders (#10684, #10599, #10632)

  • Fix various window and tab management bugs, with focus moving to the wrong window on close, drag and drop onto title bars, visual window selection, Grid layout placement, title bar padding and tab titles being truncated too early. detach_tab now shows custom titles in the OS Window chooser (#10640)

  • Fix render jitter when scrolled back with a partial line and the client is using the synchronised rendering escape code (#10794)

  • Fix bold or italic Nerd Font icons sometimes being rendered using glyphs from an unrelated font, the cursor trail not always being shown when focus moves to a different window, watcher entries not being removed on config reload and changing text marker colors at runtime, for example with kitten @ set-colors or automatic theme switching, applying the colors of each marker to the next one (#10591)

  • ssh kitten: Preserve the permissions of copied directories, fix copying files outside HOME whose paths share its prefix and files in HOME being copied to an absolute path with --symlink-strategy=resolve when HOME is a symlink, fix hanging when re-using a shared connection that has silently died and fix colors 16-255 being set to white with themes that do not define them (#10691, #10661, #10727, #10737)

  • Desktop UI kitten: Fix D-Bus activation when kitten is installed in a path containing spaces or quoting characters (#10784)

  • Automatic color themes: Stop using cached colors and background images after the corresponding theme file has been deleted and apply theme files created after kitty was started when reloading the config (#10786)

  • Themes kitten: Fix overwriting the Unicode input kitten’s recent entries and input mode, and vice versa, by using separate caches (#10780)

  • Remote file kitten: Preserve the local edited copy and show its recovery path when the final upload fails, including when the SSH connection has died (#10789)

  • Transfer kitten: When receiving files, replace existing symbolic and hard links at the destination instead of overwriting the files they point to, and write to a temporary file that is renamed into place, so an interrupted transfer no longer leaves a truncated file behind (#10713)

  • Drag and drop kitten: Reject copying or moving a directory into itself or one of its subdirectories, and moving a directory into a symlink that points inside it, which would delete the moved files. When moving, do not delete sources that were replaced during the drop, for example by files merged through a symlink in the destination. Respect overwrite confirmation for case and Unicode equivalent names on filesystems that treat them as aliases, list the existing files that will be overwritten under their actual names, including inside symlinked directories, and fix dropping a directory over an existing file. No longer rename remotely dropped files whose names differ only in case on case sensitive filesystems (#10769, #10772)

  • Drag and drop protocol: Fix base64 data with padding at the end being rejected, as allowed by the protocol (#10777)

  • Clipboard kitten: Fix only the last of several outputs that use the same MIME type being saved, for example with kitten clipboard -g picture.png picture.jpg, the data is now downloaded and decoded only once for all such outputs. Reject duplicate output files, including ones that differ only in case on case-insensitive filesystems or whose paths contain a symlink followed by ... Fix a race when replacing an existing output file, losing the original file if writing it fails and kitten clipboard -g -m . formats.txt silently doing nothing. Also preserve the permissions of and follow symlinks at existing output files (#10738, #10744)

  • Kittens: When saving files, such as themes, config files or clipboard output, write to the target of a symlink even when the target does not yet exist, instead of replacing the symlink with a regular file (#10740)

  • Kittens: Fix laggy mouse selection and failures comparing remote directories in the diff kitten, Unicode quotes not being removed from around paths and URLs in the hints kitten, the order of styles with negative or closely spaced fractional axis values in the choose-fonts kitten, various bugs in the choose-files, quick-access-terminal and other kittens and reject command-line options missing their required value (#10634, #10641, #10676, #10687, #10730)

  • Wayland: Fix a crash on compositors without cursor-shape support, kitty being disconnected by GNOME when showing a long covered window, the app_id being lost when hiding and showing windows, kitty --os-window-tag not setting the window tag and various drag and drop bugs (#10597, #10602, #10604, #10759, #10632)

  • Linux: Fix momentum scrolling up or left, X11 wheel events from sources without smooth scrolling being ignored and various desktop notification bugs. Notifications now identify kitty’s desktop file, so desktops such as KDE can group them (#10625, #10695, #10610, #10721)

  • macOS: Fix padding rendering black after sleep, OS windows not staying on all spaces, a duplicate path when dropping items from Apple Mail, emoji from a monochrome emoji font such as Noto Emoji not using the foreground color, a memory leak, reloading config causing Apple injected shortcuts to not work and kitty freezing when opening a new window while another entry in /dev is stuck (#10708, #10581, #10628, #10673, #10741, #10757, #10793)

  • zsh: Respect the user’s descriptions format style for completion group headings, fixing literal %B markers appearing with fzf-tab, and fix a “maximum nested function level reached” error at every prompt after interrupting a command run at shell startup, for example via a session file (#10748, #10768)

  • 联系我们 contact @ memedata.com