Когда Apple добавила вырез (notch) в MacBook, реакция у многих была примерно одинаковая:
он есть — и с ним приходится просто мириться.
В отличие от iPhone, где появился Dynamic Island и вырез стал частью интерфейса, на macOS он до сих пор остаётся пассивным элементом. Он не несёт функциональной нагрузки и никак не взаимодействует с пользователем.
У меня возник простой вопрос:
а что если сделать вырез частью UI, а не ограничением?
Так появился проект DynamicNotch.
Идея
Основная идея — перестать воспринимать вырез как «дыру в экране» и начать использовать его как якорную точку для интерфейса.
Вместо того чтобы обходить его стороной, можно:
-
привязать к нему визуальные элементы
-
отображать контекстную информацию
-
использовать его как центр для анимаций и состояний
Фактически, это попытка перенести концепцию «живого» выреза с iOS на macOS.
Что делает DynamicNotch
Приложение создаёт динамическую область вокруг выреза, которая может:
-
Live Activity — постоянно отображаемое содержимое выреза остается видимым до тех пор, пока активно исходное событие, а затем исчезает по его завершении.
-
Temporary Activity — временные уведомления остаются видимыми на определенный промежуток времени, который можно изменять в настройках.
-
Widgets — отображать контент на заблокированном экране, то, что Apple не сделала до сих пор.
-
Settings — настройки выреза, позволяют настраивать под себя.
Техническая сторона
Проект написан на Swift с использованием SwiftUI/AppKit.
Основные сложности оказались не в отрисовке UI, а в интеграции с поведением macOS:
-
корректное позиционирование относительно выреза
-
работа с окнами и слоями поверх системы
-
синхронизация с системными событиями
По сути, это исследование границ того, насколько глубоко можно встроиться в системный UI c приватным API.
Заключение
DynamicNotch — это попытка переосмыслить один из самых спорных элементов современных MacBook и проверить, можно ли сделать его полезным.
Если у вас есть идеи, критика или мысли о том, как можно использовать вырез в macOS — будет очень интересно обсудить.
Также буду благодарен, если поставите звезду на GitHub.
ссылка на оригинал статьи https://habr.com/ru/articles/1025350/