Денис Корнилов

В бою · поддерживается

Mac Display Fixer

Приложение для macOS, которое открывает правильные разрешения, скрытые HiDPI-режимы, высокую частоту обновления, DDC/CI и виртуальные дисплеи.

Скачать Mac Display Fixer Исходный код на GitHub
Версия
1.1.0
Платформа
macOS 13+ · Apple Silicon и Intel
Лицензия
MIT
Технологии
Swift, SwiftUI, CoreGraphics, IOKit, Objective-C

О продукте

Лёгкое open-source приложение в строке меню для настройки мониторов macOS и альтернатива BetterDisplay.

Mac Display Fixer показывает полный список режимов, включая скрытые GPU-scaled HiDPI-варианты, позволяет поворачивать изображение, управлять яркостью и контрастом внешних мониторов и создавать виртуальные дисплеи с зеркалированием физических экранов.

Выбранный режим сохраняется по атрибутам дисплея и автоматически восстанавливается после сна или переподключения. Интерфейс локализован на русский, английский, немецкий, испанский и упрощённый китайский языки. Драйверы, разрешения и entitlements не требуются.

Системные требования

  • macOS 13 Ventura или новее
  • Apple Silicon для DDC/CI яркости и контраста внешних мониторов
  • Intel поддерживается для остальных функций
  • Для сборки из исходников — Swift и Xcode Command Line Tools
  • Драйверы, разрешения и entitlements не требуются

Возможности

  • Полный список разрешений и скрытых HiDPI framebuffer-режимов
  • Частота обновления до возможностей монитора и кабеля
  • Виртуальные дисплеи 720p–8K с десятью пресетами пропорций
  • Зеркалирование физического монитора на виртуальный дисплей
  • Поворот изображения на 0°, 90°, 180° и 270°
  • DDC/CI яркость и контраст на Apple Silicon
  • Сохранение и автоматическое восстановление режимов
  • CLI с диагностикой и smoke-тестами
  • Пять языков интерфейса

Установка и сборка

1. Скачайте Mac-Display-Fixer-1.1.0.zip и распакуйте архив.
2. Переместите Mac Display Fixer.app в /Applications.
3. Откройте приложение — иконка появится в строке меню.

Приложение подписано ad-hoc. Если Gatekeeper блокирует запуск, откройте через контекстное меню «Открыть» или выполните:
xattr -dr com.apple.quarantine "Mac Display Fixer.app"

Сборка из исходников:
swift build
./build-app.sh
open "build/Mac Display Fixer.app"

Техническая документация

Режимы дисплеев

Для списка используются CGGetActiveDisplayList и CGDisplayCopyAllDisplayModes. Скрытые GPU-scaled режимы применяются через CGS внутри конфигурационной транзакции — во многих случаях dummy-заглушка не нужна.

Виртуальные дисплеи

CGVirtualDisplay создаёт экраны с пропорциями от 16:9 до 32:9 и лестницей режимов 720p–8K, всегда HiDPI. Зеркалирование выполняется через CGConfigureDisplayMirrorOfDisplay, настройки сохраняются в UserDefaults.

DDC/CI и яркость

На Apple Silicon используется IOAVServiceRead/WriteI2C, VCP 0x10 для яркости и 0x12 для контраста. Для встроенного дисплея применяется DisplayServices.framework.

Автовосстановление

Режим хранится по UUID дисплея и атрибутам, а не временному mode ID. После сна или переподключения приложение применяет сохранение только при точном совпадении с доступным режимом.

CLI

Утилита nbd умеет выводить список дисплеев и скрытых режимов, менять разрешение, поворот, яркость, зеркалирование и запускать end-to-end тест виртуального дисплея.

Ограничения и совместимость

DDC/CI реализован только для Apple Silicon.

macOS на Apple Silicon ограничивает виртуальные дисплеи 60 Гц. Для 120/144 Гц и HiDPI используйте скрытые CGS-режимы физического монитора.

Максимальная частота зависит от кабеля и входа монитора. Поворот использует private MonitorPanel API, которое не является публичным контрактом Apple. Некоторые мониторы не отвечают на чтение DDC, хотя запись работает.

Частые вопросы

Нужна ли заглушка для HiDPI?

Не всегда. Сначала проверьте скрытые режимы физического монитора: GPU-scaled framebuffer-режимы часто работают без dummy.

Работает ли приложение на Intel?

Да, кроме DDC/CI яркости и контраста внешних мониторов — эта часть реализована только для Apple Silicon.

Нужны ли драйверы или специальные разрешения?

Нет. Приложение работает как launch agent в строке меню и не требует драйверов, разрешений или entitlements.

Как собрать приложение самостоятельно?

Выполните swift build для CLI, затем ./build-app.sh для release-сборки и ad-hoc подписи. Готовое приложение появится в build/Mac Display Fixer.app.

Почему виртуальный дисплей показывает только 60 Гц?

Это текущее ограничение macOS на Apple Silicon. Для высокой частоты используйте скрытые режимы физического монитора.