Vladyslav Didyk

KeySticker — панель сочетаний клавиш для macOS

Плавающая панель для Mac, которая показывает сочетания клавиш того приложения, которым вы пользуетесь, на одиннадцати языках.

KeySticker — панель сочетаний клавиш для macOS

KeySticker — небольшая утилита для Mac: одна горячая клавиша открывает плавающую панель с сочетаниями клавиш того приложения, которое перед вами. Я проектирую и пишу её один с 2024 года.

KeySticker — утилита для Mac, которая помнит сочетания клавиш за вас. Нажмите одну горячую клавишу, и появляется плавающая стеклянная панель с сочетаниями клавиш того приложения, которым вы пользуетесь: переключились в Figma — она показывает Figma. В комплекте около 2 790 сочетаний для 75 приложений, она говорит на одиннадцати языках и сделана без единой сторонней библиотеки.

Роль
Один — дизайн и код
Сроки
2024 — по настоящее время
Стек
Swift 5.9 · AppKit (lifecycle) · SwiftUI (UI) · Carbon (hotkeys) · Combine · Supabase PostgREST · XcodeGen · Fastlane · XCTest · MetricKit
Лендинг — превью панели рядом с клавиатурой, на которой можно действительно нажимать клавиши.
Лендинг — превью панели рядом с клавиатурой, на которой можно действительно нажимать клавиши.
Учитывает контекст — панель замечает, какое приложение впереди, и мгновенно меняет содержимое.
Учитывает контекст — панель замечает, какое приложение впереди, и мгновенно меняет содержимое.
Ваши сочетания — открывайте приложения, запускайте ссылки, выполняйте команды Apple Shortcuts или храните личную заметку за одной горячей клавишей.
Ваши сочетания — открывайте приложения, запускайте ссылки, выполняйте команды Apple Shortcuts или храните личную заметку за одной горячей клавишей.

Замысел

Плавающая панель, которая помнит сочетание, которое вы забыли.

Проблема.

В любом серьёзном приложении для Mac сотни сочетаний клавиш. Никто не помнит сотню. Два варианта — копаться в меню или переключаться на сайт-шпаргалку — оба отрывают от того, чем вы занимались. Справочник полезен, только если он уже на экране.

Продукт.

KeySticker — плавающая панель, которая показывает сочетания клавиш того приложения, которым вы пользуетесь прямо сейчас. Переключились на Xcode — получили Xcode. Переключились на Figma — получили Figma. Одна горячая клавиша показывает или скрывает панель, клик по любой строке копирует сочетание, а искать можно всё по названию: встроено 75 приложений и около 2 790 сочетаний, и есть место для новых.

Нативно, намеренно

Чистые технологии Apple, ноль сторонних библиотек.

Сделано классическим способом.

Приложение целиком написано на собственных инструментах Apple — ни одной строки стороннего кода. Это сделано намеренно: сторонние библиотеки склонны ломаться при обновлении системы, а детали от Apple — нет. Даже подключение к облаку — это обычная системная работа с сетью.

Стеклянная панель, слой за слоем.

  • Настоящее системное размытие — Эффект матового стекла — это собственный материал системы, а не картинка с размытием.
  • Мягкая тёмная тонировка — Поверх размытия лежит лёгкий тёмный слой, чтобы текст оставался читаемым на любом фоне.
  • По-настоящему прозрачная — Небольшой собственный слой убирает все сплошные фоны, которые пытается добавить интерфейс, и стекло просвечивает чисто.
  • Никогда не отнимает фокус — Панель плавает над вашей работой, следует за вами по рабочим столам и никогда не забирает клавиатуру у приложения, которым вы пользуетесь.

Содержимое

Три источника сочетаний, одна полка.

Сочетания — это данные, а не код.

Приложению всё равно, откуда взялось сочетание. В комплекте идёт встроенная база примерно из 2 790 записей, она может обновляться из облака в фоне и принимает наборы сочетаний, которые вы импортируете сами. Все три источника попадают на одну полку.

Сначала офлайн, в четыре шага.

  • Мгновенный старт — Приложение открывается со встроенной базой. При первом запуске интернет не нужен.
  • Чтение сохранённой копии — Если предыдущее обновление из облака сохранено на диске, оно загружается следующим.
  • Тихое обновление — В фоне приложение проверяет облако на новые сочетания и сохраняет их. Если не получилось, ничего не ломается — остаются текущие данные.
  • Ваши наборы — Импортированные файлы с сочетаниями безопасно запоминаются между запусками, как этого требует песочница безопасности Mac.

Контекст

Панель знает, в каком вы приложении.

Она следит за приложением на переднем плане.

Крошечный наблюдатель замечает каждое переключение приложений, находит сочетания клавиш этого приложения и перерисовывает панель на месте — без вспышки и перезагрузки. Переход из Xcode в Figma просто меняет содержимое.

Настоящие значки приложений.

Каждая категория показывает настоящий значок приложения, если оно установлено на вашем Mac, а если нет — аккуратный запасной символ.

Ваши сочетания

Создавайте свои — заметки или настоящие горячие клавиши.

Два вида своих сочетаний.

Кнопка «+» открывает небольшой редактор. Своё сочетание может быть карточкой-напоминанием, просто тем, что вы хотите запомнить, или настоящей системной горячей клавишей, которая что-то делает в момент нажатия.

Четыре действия, все безопасные для App Store.

  • Открыть приложение — Одна комбинация клавиш запускает любое выбранное вами приложение.
  • Открыть ссылку — Открывает браузер по умолчанию с сохранённым адресом.
  • Запустить Apple Shortcut — Любая автоматизация, которую вы собрали в приложении Apple «Команды», запускается одной горячей клавишей.
  • Скопировать текст — Кладёт ваш сохранённый текст в буфер обмена, готовый для вставки куда угодно.

Одна аккуратная деталь.

Горячие клавиши регистрируются в системе Mac на уровне всей системы, поэтому работают в любом приложении. А само приложение вежливо не даёт занять комбинацию, которая нужна ему самому, — ту, что открывает панель.

Одиннадцать языков

Переведено, зеркально отражено и переключается на месте.

Никакого жёстко заданного текста.

Каждая надпись в приложении берётся из каталога переводов на одиннадцать языков, включая арабский, иврит и урду, для которых весь интерфейс автоматически зеркально отражается справа налево. Смена языка обновляет приложение мгновенно, без перезапуска.

Что остаётся на месте.

Символы клавиш (⌘ ⇧ ⌥ ⌃) и названия приложений вроде Finder, Safari и Xcode на всех языках остаются английскими, потому что так их выпускает Apple.

Сборка

Один файл описывает весь проект.

Один источник истины.

Вся настройка сборки — номера версий, данные подписи, каждая часть проекта — лежит в одном файле настроек. Каждый инструмент конвейера читает один и тот же файл. Измените его один раз, и всё дальше подстроится.

Выпуск

Проверено, подписано и выпущено одним git-тегом.

От пуша до App Store.

  • Более 85 автоматических тестов — Логика покрыта тестами с чистыми, заменяемыми частями, поэтому изменение не сломает функцию втихую.
  • Настоящие запуски UI-тестов — Скриптовые запуски открывают приложение, показывают панель, ищут и даже измеряют, как быстро оно запускается.
  • Встроенные отчёты о состоянии — Сбои и замедления у реальных пользователей автоматически появляются в панели разработчика Apple.
  • Выпуск одним тегом — Отправьте тег версии, и конвейер сам соберёт, подпишет, нотаризует и загрузит приложение в App Store.

Следующий проект: DepoDart — Subsurface Intelligence