Бесплатные снимки и запись экрана для Mac, а ещё текст и цвет с экрана. По сочетанию клавиш на каждое; снимок сохраняется, копируется или и то, и другое.
Apple silicon, macOS 13 или новее. Интерфейс на английском, украинском и русском. «Скопировать текст» работает как OCR, «Скопировать цвет» как #HEX.
Для продвинутых пользователей и языковых моделей
Снимки экрана в macOS (Shift-Command-3, 4 и 5) идут либо в файл, либо в буфер обмена, что-то одно, а запись экрана требует нескольких кликов. Pixlift даёт каждому виду снимка одно сочетание клавиш и умеет и то, и другое: файл в папке и тот же снимок в буфере обмена. Своего движка съёмки в нём нет: снимки делает собственный screencapture macOS, запись ScreenCaptureKit, текст Vision от Apple, цвет пипетка macOS. Всё идёт на самом Mac, без интернета. Без редактора, истории, облака и логов.
Что умеет
Шесть сочетаний клавиш, которые работают везде, по умолчанию Option-Command-7, 8, 9, 0, 6 и 5, каждое меняется в окне. Первые четыре названы так же, как эти действия называет сама macOS.
Две настройки для снимков и две для записей: «Место сохранения» (рабочий стол, папка, выбранная через «Другое расположение…», или «Нет») и «Буфер обмена». Выбор, который выключил бы оба, недоступен, так что снимок всегда куда-то попадает. Если имя файла занято, добавляется (2), (3) и так далее.
При первом запуске место снимков самой macOS читается из com.apple.screencapture (location, а в macOS 27 location-screenshot и location-screenrecording); если ничего не задано, это рабочий стол. Если macOS отправляет снимки в буфер обмена, снимки Pixlift сначала тоже только копируются. Дальше настройки уже собственные. На Mac, обновлённом с 0.1, сначала включено и то, и другое, место: рабочий стол.
В буфере обмена один элемент: файл и, для снимка, сама картинка в PNG. Приложение, которое принимает файлы, получает файл с его именем, приложение, которое принимает картинки, получает картинку. Запись копируется как файл. Несохранённый снимок идёт только картинкой. Несохранённая запись лежит в ~/Library/Caches/com.geragaraza.pixlift/Clipboard, потому что запись вставляется как файл; она удаляется, когда её уже нет в буфере обмена и прошло больше часа.
Запись: весь экран, где указатель, вместе с указателем, звуком Mac и микрофоном. Обратного отсчёта нет, и Pixlift ничего не рисует поверх экрана и в строке меню.
Ничего в Dock и в строке меню. Открытие при входе выключено, пока его не включить.
Как это устроено
Снимки делает /usr/sbin/screencapture, программа, которая стоит за снимками экрана самой macOS, с её прицелом и выбором окна. PNG получается таким же, как собственный снимок macOS: родные пиксели дисплея, его цветовой профиль, 144 dpi на дисплее Retina. Потом Pixlift даёт файлу имя и сохраняет его, копирует или и то, и другое, как задано.
Звук затвора тот же, что в macOS, и следует её настройке «Воспроизводить звуковые эффекты интерфейса»; пока идёт запись, его нет.
Запись идёт через ScreenCaptureKit: картинка и звук Mac оттуда, микрофон через AVFoundation, всё сведено в одну звуковую дорожку, потому что плееры и мессенджеры играют только первую. Собственные звуки приложения в запись не попадают.
MP4 это H.264 (профиль High) в родном разрешении дисплея, с переменной частотой кадров до частоты обновления дисплея: кадры приходят только тогда, когда экран меняется, поэтому неподвижный экран почти ничего не стоит. Цвета bt709, звук AAC, 48 кГц стерео. Битрейт примерно вдвое выше, чем у собственной записи macOS, около 20 Мбит/с для дисплея 3456 x 2234.
Запись пишется во временный файл и переносится на своё место, когда она остановлена. Если завершить приложение во время записи, файл сначала дописывается.
«Скопировать текст» это движок OCR: область читает Vision от Apple на самом Mac, на всех языках, какие Vision знает в установленной macOS; область без текста даёт то, что записано в её QR-коде или другом штрихкоде.
«Скопировать цвет» это пипетка #HEX: лупа это NSColorSampler, цвет переводится в sRGB и копируется заглавными буквами как #RRGGBB.
Сочетания клавиш это горячие клавиши Carbon (RegisterEventHotKey), универсальный доступ им не нужен. Они хранятся как физические клавиши, поэтому работают в любой раскладке.
macOS не сообщает, что сочетание уже занято другим приложением, и тогда на одно нажатие срабатывают оба. Пока OCR или #HEX работает с тем же сочетанием, в этой строке написано «Занято: OCR» или «Занято: #HEX», и Pixlift уступает ему клавишу, пока оно не завершится.
Вопросы
Какие разрешения ему нужны и зачем?
Запись экрана и системного звука (до macOS 15 «Запись экрана»), для снимков, записи и копирования текста. macOS спрашивает при первом нажатии, которому это нужно; пока доступа нет, каждое такое нажатие показывает окно с кнопкой в Системные настройки. Микрофон, для записи: macOS спрашивает при первой записи, а если доступа нет, запись можно сделать только со звуком Mac. Копированию цвета разрешения не нужны.
Почему macOS снова спрашивает про запись экрана?
Начиная с macOS 15 сама macOS время от времени спрашивает, может ли приложение и дальше записывать экран. Это спрашивается у всех приложений, кроме собственных приложений Apple, и подпись Developer ID этого не меняет.
Можно сохранять в другую папку или только в буфер обмена?
Да, и так, и так, отдельно для снимков и записей: «Место сохранения» (рабочий стол, любая папка через «Другое расположение…» или «Нет») и «Буфер обмена», включён или выключен. Одно из двух всегда остаётся включённым. Если выбранной папки нет, например диск отключён, снимок сохраняется на рабочий стол, и об этом говорит сообщение.
Работает без интернета?
Да. Снимкам, записи и распознаванию сеть не нужна; единственный сетевой вызов: проверка обновлений раз в день. Ссылки в окне открываются, только если по ним кликнуть.
Работает на Mac с Intel?
Нет. Только Apple silicon, macOS 13 или новее.
Обновления
Раз в день приложение читает ленту своего последнего релиза на GitHub (appcast.xml) через Sparkle. О самом Mac ничего не отправляется. Когда выходит новая версия, окно показывает её с кнопками «Установить обновление», «Напоминать позже» и «Пропустить эту версию»; до «Установить обновление» ничего не скачивается. Проверка обновлений в окне проверяет сразу.
Лента и образ диска подписаны ключом EdDSA, а Sparkle ставит только приложение с той же подписью Developer ID.
Настройки и удаление
Он хранит сочетания клавиш, куда идут снимки, открывали ли его раньше и спрашивал ли он доступ к экрану, и время последней проверки обновлений в defaults com.geragaraza.pixlift, а скомпилированную модель Vision и запись, которая есть только в буфере обмена, в ~/Library/Caches/com.geragaraza.pixlift. Сами снимки это файлы там, куда они сохранены.
Чтобы удалить Pixlift: «Завершить» в его окне, Pixlift.app в Корзину, удалить ту папку кэша и стереть настройки командой:
defaultsdeletecom.geragaraza.pixlift
Если ставили через Homebrew, эта команда закрывает его и удаляет приложение, настройки и кэш:
brewuninstall--zappixlift
В обоих случаях его записи в «Запись экрана и системного звука» и «Микрофон» убираются в Системных настройках, «Конфиденциальность и безопасность».
Из Терминала
Эта команда печатает текст картинок вместо копирования: