Анимация переключения полноэкранного режима в macOS: чем отличаются yabai и AeroSpace и почему это так раздражает

macOS до сих пор не предлагает понятного, надёжного, официально поддерживаемого переключателя, который полностью отключал бы анимацию Spaces при переходе между «полноэкранными приложениями» и «обычным рабочим столом/обычными окнами». На первый взгляд это мелочь, но при длительном использовании она реально выматывает: это не просто вопрос визуального стиля — система насильно утаскивает внимание пользователя в кусок переходной анимации, который нельзя отменить. Для тех, кто ценит минимальную задержку, часто пользуется Cmd-Tab, легко сбивается из‑за анимаций или просто не хочет их видеть, это какое-то совершенно больное дизайнерское решение. Пользователь уже включил «Уменьшить движение», уже явно сказал «не хочу анимаций», а система всё равно упорно сохраняет этот эффект переключения — это решение откровенно антипользовательское.

По состоянию на 2026-05-06, на публичной странице последняя стабильная версия — macOS Tahoe 26.4.1. У Apple есть опция «Уменьшить движение», а также некоторые системные defaults, которые уменьшают анимации окон, Dock, Finder, Mission Control. Но ключевое ограничение здесь такое: эти настройки лишь сокращают часть эффектов, но не позволяют полностью отключить нативную анимацию переключения между Spaces/полноэкранными приложениями.

Принципиальная разница между двумя подходами

Сейчас наиболее реалистичные варианты — это yabai и AeroSpace. Но они решают проблему на разных уровнях.

Идея yabai — перехватить или «подлатать» нативный механизм окон/Spaces в macOS.

Обычные возможности yabai опираются на Accessibility API — для управления окнами, фокусом, раскладкой и т. п. Более глубокие возможности по Spaces раньше в основном зависели от scripting addition — то есть от инъекции расширения в Dock.app, чтобы управлять нативным поведением Spaces. Именно поэтому раньше yabai часто «шёл в комплекте» с «частичным отключением SIP».

Для требования «при Cmd-Tab из обычного рабочего стола в полноэкранное приложение не должно быть анимации» yabai подходит точнее, потому что он как раз работает с нативным путём фокуса Space в macOS. В документации новых версий yabai есть даже такой параметр:

yabai -m config skip_window_focus_animation on

Его описание как раз про это: когда фокусируется приложение или окно на неактивном Space, обходить анимацию Spaces в macOS. В документации также сказано, что включать это стоит как раз если вы не используете scripting addition; scripting addition обеспечивает аналогичную возможность и при этом более robust. Иными словами: если ваш главный запрос — сохранить нативный full-screen, сохранить поведение Cmd-Tab, но убрать анимацию переключения, то yabai остаётся инструментом, который ближе всего к сути проблемы.

Идея AeroSpace — обойти нативные Spaces в macOS.

AeroSpace не пытается глубоко «чинить» Spaces от Apple. Он предлагает собственную модель workspace: окна неактивного workspace просто сдвигаются за пределы видимой области, а при возврате восстанавливаются. Плюс очевиден: не нужно отключать SIP, переключение workspace по природе не включает нативную анимацию Space, в целом получается «чище» и менее уязвимо к поломкам после обновлений системы.

Но и цена столь же ясная: рекомендуемый способ использования AeroSpace — оставить только один macOS Space и больше не полагаться глубоко на нативный workflow Mission Control/Spaces. Если вы продолжаете пользоваться нативным полноэкранным режимом через зелёную кнопку, то приложение всё равно уедет в нативный full-screen Space macOS; когда Cmd-Tab перепрыгнет туда, всё ещё может сработать тот самый механизм переключения full-screen/Space от Apple. AeroSpace не для того, чтобы чинить этот путь — он для того, чтобы вы по возможности вообще не ходили по этому пути.

Так как выбрать

Если вы принципиально хотите пользоваться нативным полноэкранным режимом macOS и основной болевой пункт — анимация при Cmd-Tab между полноэкранными и обычными приложениями, тогда в первую очередь выбирайте yabai. Минимальный вариант — просто запускать yabai и выставить skip_window_focus_animation on; skhd может и не понадобиться. skhd — это инструмент для привязки клавиш, а не ключ к отключению анимаций.

Если вы готовы отказаться от нативного full-screen и перестроить workflow на «максимизированные обычные окна + tiling/workspace», то AeroSpace будет чище. Он обходит самую упрямую «анимационную» дорожку Apple, не требует отключения SIP и имеет ниже стоимость долгосрочной поддержки.

Если вам нужно лишь уменьшить обычные системные анимации, можно включить «Уменьшить движение» в настройках, плюс добавить несколько defaults:

defaults write -g NSAutomaticWindowAnimationsEnabled -bool false
defaults write -g NSScrollAnimationEnabled -bool false
defaults write -g NSWindowResizeTime -float 0.001
defaults write com.apple.finder DisableAllAnimations -bool true
defaults write com.apple.dock expose-animation-duration -float 0
killall Finder
killall Dock

Это самый «дешёвый» вариант по накладным расходам, потому что не требует резидентного процесса. Но он не решает полностью анимацию нативного переключения полноэкранных Spaces.

Настоящая проблема — в Apple

Самое абсурдное здесь то, что пользователи не просят какую-то сложную функциональность — они просят лишь чёткий переключатель:

Когда пользователь включает Reduce Motion, или отдельно включает “Disable Space transition animations”, переключения через Cmd-Tab, клики по Dock, Mission Control, переходы между полноэкранными приложениями и обычным рабочим столом должны иметь возможность завершаться мгновенно — без принудительного проигрывания анимации.

Это не вопрос эстетики — это вопрос контроля. Для части пользователей анимации — это красота, для другой части — это задержка, помехи, укачивание и потеря эффективности. macOS позволяет настраивать массу мелочей, но в таком высокочастотном взаимодействии не даёт возможности полностью отключить эффект, вынуждая выбирать между yabai, scripting addition, SIP или полной сменой workflow. Это крайне неразумный дизайн.

Идеальная ситуация должна быть очень простой: Apple даёт официальный, стабильный, без побочных эффектов пункт настройки. Пользователь может сохранить нативный full-screen, нативный Cmd-Tab, нативные Spaces — и при этом полностью отключить анимацию переключения. Не превращайте «Уменьшить движение» в расплывчатый компромисс и не перекладывайте на сторонние инструменты тот контроль, который должна предоставлять сама система.

参考: