Вышла новая версия Ghostty — терминального эмулятора с открытым исходным кодом. Ghostty 1.4.0 стала результатом семи месяцев разработки. Среди изменений — повышение производительности в Linux и macOS, улучшенная работа по SSH и возможность менять расположение разделённых областей терминала перетаскиванием.

Приложение, написанное на Zig, получило полную поддержку графического протокола Kitty, включая анимацию и относительное позиционирование изображений. Ghostty стал первым терминалом, помимо Kitty, с полной поддержкой этого протокола. Это пригодится тем, кто использует текстовые интерфейсы или скрипты для отображения изображений в терминале.

Полная поддержка протокола Kitty и меньшее потребление памяти

По словам разработчиков, производительность приложения значительно выросла. В частности, Ghostty 1.4.0 сжимает невидимую часть истории прокрутки, когда терминал бездействует. Благодаря этому использование физической оперативной памяти для больших текстовых историй может снизиться до 90%.

Данные распаковываются при прокрутке истории или использовании поиска по тексту, появившегося в Ghostty 1.3.0.

В GTK-приложении для Linux текст теперь чётко отображается при дробном масштабировании экрана, например 125% и 150%. Это должно решить часто возникавшую проблему размытого текста.

Кроме того, GtkGLArea заменили конвейером рендеринга EGL, который работает в отдельном потоке и передаёт кадры в GTK с помощью DMA-BUF. Для этого нужна системная библиотека EGL. Если видеокарта не поддерживает экспорт DMA-BUF, вместо него используется более медленное копирование с помощью процессора.

Перетаскивание разделённых областей

В GTK-сборке расположение областей терминала внутри вкладки теперь можно менять перетаскиванием. Если вкладка разделена на две или более частей, у каждой появляется специальный маркер: его можно захватить и перетащить область на другую.

Другие изменения

  • Добавлена отдельная SSH-обёртка.
  • Повышена точность эмуляции терминала.
  • Реализована поддержка протокола буфера обмена Kitty.
  • Улучшена производительность на разных платформах.

Изменения в Linux

  • Уведомления на рабочем столе скрываются, когда терминал получает фокус или закрывается.
  • Обновлён шрифт эмодзи Noto: новые последовательности ZWJ теперь отображаются одним глифом.
  • Команда Dolphin «Открыть Ghostty здесь» открывает новое окно в уже запущенном экземпляре приложения.
  • Изменение размера разделённых областей больше не вызывает мерцания и не позволяет уменьшать их ниже допустимого размера.
  • При выделении текста курсор мыши сохраняет форму текстового указателя.
  • Если установлено значение window-theme = ghostty, цветовая палитра командной строки соответствует цветам терминала.
  • Ссылки открываются через XDG Desktop Portal.

В GTK-сборке доступны и новые параметры конфигурации. gtk-horizontal-tab-scroll можно установить в false, чтобы прокрутка двумя пальцами не переключала вкладки. Параметр gtk-tabs-inverted перемещает кнопку закрытия в начало каждой вкладки.

Как установить Ghostty

Ghostty доступен в репозиториях одного из выпусков Ubuntu, но там может быть не самая новая версия. Чтобы получить перечисленные выше изменения, потребуется альтернативный способ установки.

Для Ubuntu можно использовать неофициальный DEB-пакет Ghostty, который поддерживается сообществом; для него также есть собственный PPA, упрощающий обновления. Кроме того, доступны AppImage и неофициальный Snap-пакет.

Для macOS Ghostty предлагает официальные сборки, которые рекомендуются разработчиками и поддерживают обновление внутри приложения. Программа также доступна через Homebrew и другие менеджеры пакетов для командной строки.

Прекращена поддержка Ubuntu 24.04 LTS

Для работы Ghostty 1.4.0 нужны GTK 4.18 и libadwaita 1.7. Согласно политике проекта в отношении версий GTK и Adwaita, Ubuntu 24.04 LTS этим требованиям больше не соответствует. Поэтому установить DEB-версию Ghostty, например из упомянутого PPA, в этой системе нельзя.

Библиотека эмуляции терминала libghostty будет использоваться в будущих версиях IDE JetBrains. Новый терминал Velocitty в Linux Mint на этой библиотеке не основан, хотя его дизайн, как сообщается, вдохновлён Ghostty.