Неделю назад у меня возникла проблема. Я начал использовать всё больше параллельных воркфлоу и всё больше вкладок в терминале. Я пользуюсь Ghostty, но справляться с таким количеством вкладок, даже с учётом довольно удобного UX, стало просто невозможно. У меня было открыто 3 - 4 окна с двумя-четырьмя вкладками параллельно, и весь рабочий процесс зависел только от порядка окон и того, какое из них сейчас в фокусе. Для работы с агентами сразу над несколькими проектами и под несколькими клиентами - это тактика, которая больше не работает.

Я попробовал Cmux - новый эмулятор терминала на базе Ghostty - но там ещё сыровато: нет нативных вкладок, некрасивый UI, нет блюра. Концепция хорошая, но реализации нужно подождать. Впрочем, знаю много людей, которые cmux очень довольны - если вы не такой привереда в плане UI/UX, как я, вам сильно понравится его модель, основанная на воркспейсах: в каждом воркспейсе - отдельная вкладка с одной терминальной сессией. Ещё можно попробовать Codex App, но так как у меня свой агент, я не хотел переходить на десктопное Electron-приложение с нехваткой нужных фич только из-за того, что у меня тяжело управлять окнами. Решением для меня стали tiling window managers, которые я давно хотел попробовать.

Что такое tiling window manager

Tiling window manager - это штука, пришедшая из Linux. Это нетрадиционная система управления окнами: вместо того чтобы вручную перетаскивать и ресайзить окна, за вас всё это делает сам window manager по различным алгоритмам при открытии окна или изменении его границ. Вы говорите: вот у меня X окон, я хочу, чтобы они занимали весь экран в наиболее удобном порядке - и менеджер делает это за вас. Tiling WM просто не позволяет оставить ни капли свободного пространства на экране: он постоянно изменяет размер окон так, чтобы они были прицеплены друг к другу с адекватным распределением.

Из вариантов для Mac существует всего три, потому что у macOS серьёзные ограничения - другой window manager, как на Linux, здесь попробовать нельзя. Ваш опыт всегда будет второсортным по сравнению с Linux, но рабочие решения всё же есть.

Главный баг macOS, который надо знать

В macOS есть крупный баг, который будет серьёзно портить воркфлоу. Именно поэтому я и говорю, что опыт будет второсортным. Все нативные табы в macOS-приложениях считаются новыми окнами для window manager’ов - невозможно понять, таб это или окно. macOS всегда отправляет сигнал об открытии нового окна, даже если на самом деле была открыта новая вкладка в старом. Это значит, что ваш tiling WM будет считать все открытые вкладки новыми окнами, и на экране будет плодиться пустое пространство в зависимости от количества открытых табов.

Пофиксить это никак нельзя, и любое приложение с нативными табами macOS будет работать в tiling WM с проблемами. В Ghostty табы как раз нативные - именно поэтому мне пришлось полностью уйти от концепции табов в терминале.

Мой рабочий процесс сейчас

Я выключил в Ghostty вкладки и даже affordances для окон, и перешёл максимально на управление с клавиатуры - в том числе в рамках общего фокуса на уход от мышки. Сейчас у меня даже не видно кнопок закрытия и сворачивания в терминале. Остальные приложения их сохраняют - например, Android Studio, которая спамит модальными окнами и требует разворачивания на весь экран, или Telegram, который я хочу открывать поверх всего.

Для терминала я открываю, закрываю и сворачиваю окна хоткеями, которые гибко настраиваются в Ghostty. Логика разбивки экрана следующая:

  • Открываю первый терминал - он занимает весь экран.
  • Открываю второй через CMD+N - пространство тут же делится надвое, каждый терминал занимает ровно 50%.
  • Открываю третье окно - та половина, где был фокус, делится ещё раз. Новый терминал открывается в той же папке, в которой я находился в момент открытия.
  • Каждое следующее окно делит пространство по принципу золотого сечения (Binary Space Partitioning): в зависимости от того, чего в конкретном участке экрана больше - горизонтального или вертикального пространства.

Это позволяет из одного окна плодить дочерние в той же директории и запускать в них, например, Vim или несколько копий агента для разработки.

Здесь только до 1/8й

В какой-то момент, как видно на скриншоте выше, я уже близок к лимиту того, что может выдержать мой мозг. Поэтому я разделяю воркфлоу по проектам через стандартные Spaces в macOS: отдельный Space для моего агента, для Respawn, для каждого клиентского проекта - и один лишний для общих задач.

Spaces

Три варианта tiling WM для macOS

Сразу уточню: всю конфигурацию для меня делал мой ассистент OpenClaw, а не я сам. Tiling window managers - достаточно нишевый продукт, ориентированный на разработчиков, конфигурация везде через YAML-файлы в разных папках или через bash-макросы для управления хоткеями. Сам бы я очень долго с этим разбирался.

Aerospace

Первый вариант, который я хотел попробовать. У него довольно удобная YAML-конфигурация, хотя мне всё равно было лень в неё погружаться. Это клон i3 window manager из Linux - кто знает, тот поймёт.

Главная проблема для меня: он ручной. Любое открытое окно не вызывает автоматический relayout остальных. Мне нужно было, чтобы window manager управлял всеми окнами за меня, поэтому пришлось Aerospace бросить.

При этом он стабильный, хорошо конфигурируется, у него есть удобный функционал собственных воркспейсов с быстрым переключением и даже какой-никакой пользовательский интерфейс на Mac. В Aerospace есть группы окон, у каждой - свой режим расстановки внутри. Одна группа разделена вертикально полосками, другая - горизонтально пополам, третья не разделена вообще. Ими нужно управлять вручную через хоткеи. Концепция очень крутая, если готовы учиться работать с ними и всем нужным хоткеям. Если вы уже пользовались tiling WM на Linux - рекомендую именно Aerospace в первую очередь, это наиболее близкий к настоящему профессиональному window manager’у опыт на macOS.

Amethyst

Совершенно другой подход - более упрощённый и user-friendly. В Amethyst есть полноценный графический интерфейс через иконку в верхнем баре, там можно всё сконфигурировать, хотя YAML-конфиги тоже поддерживаются и имеют приоритет.

Для меня самой большой проблемой стало то, что он не поддерживает управление мышкой - всё только через клавиатуру. Иногда у меня настолько сложный лейаут, что я просто хочу мышкой перетащить окно, а не долбиться с комбинациями стрелочек. Ещё у него плохая поддержка модальных окон и диалогов - они считаются отдельными окнами, и когда в Telegram выскакивает крошечное окошко “Вы хотите отправить голосовое?”, весь экран перекорёживает: все окна переезжают, чтобы освободить место для него. Поэтому я просто не стал им дальше пользоваться. Но рекомендую попробовать Amethyst первым, если хочется погрузиться в мир tiling WM - GUI делает заход намного мягче.

Yabai

Последний кандидат, на котором я и остановился. Насколько я знаю, это самый старый tiling WM проект на macOS. Он поддерживает Fibonacci layout (Binary Space Partitioning), который я и хотел, и вообще все фичи двух предыдущих конкурентов вместе взятые.

Минусов два. Во-первых, у Yabai нет графического интерфейса вообще - вся конфигурация через bash-скрипты и Shell-команды, работает через фоновый сервис, включается и выключается через терминал. С одной стороны, это порог входа, с другой - я просто сказал своему агенту OpenClaw сделать мне нужную конфигурацию, и он написал всё за минуту. Одноразовая настройка намного лучше, чем терпеть какой-то другой постоянный баг.

Во-вторых, у Yabai нет встроенной поддержки хоткеев - для этого нужна отдельная утилита, которая транслирует хоткеи в Shell-команды. OpenClaw посоветовал skhd. Я не разбирался, что это, - просто попросил агента всё настроить и скинул список нужных хоткеев, всё было готово за минуту. Неожиданным плюсом yabai стало то, что он очень хорошо дружит с AI-агентами: мой Gemini уже знал абсолютно всё о его опциях конфигурации, поэтому настройка по одному голосовому сообщению в Telegram заняла 10 секунд.

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

Дополнительно Yabai поддерживает расширенные фичи при частичном отключении системной безопасности macOS - можно убрать тени, скруглённые углы и медленные анимации переходов между Spaces. Главный плюс - он использует нативные Spaces macOS вместо своих, а это означает поддержку разных Spaces для разных мониторов. Все остальные конкуренты требуют эту возможность отключить, иначе ломаются. Системные расширения я сам не устанавливал: каждое обновление требует перезагрузки и повторного отключения безопасности, а это раздражает больше, чем медленные анимации.

Yabai также просто отключается одной Shell-командой - удобно, когда хочется поиграть в игры или дать кому-то попользоваться компом.

Если у вас есть агент, который всё настроит за вас, и вы хотите лучший вариант с максимальным контролем - берите Yabai. Но я бы не стал его устанавливать, чтобы просто попробовать: по умолчанию он идёт без какой-либо конфигурации и практически не работает, пока вы не создадите конфиг-файлы.

Вывод

Буду ли я продолжать пользоваться tiling window manager’ом? Однозначно да - по крайней мере до тех пор, пока не решится проблема управления десятками окон при работе с агентами. Может быть, допилят cmux, и я перейду на него, но с каждым днём tiling WM мне нравится всё больше, и я понимаю, что мышку использую всё меньше. К нативным возможностям macOS вроде Stage Manager я возвращаться не буду уже никогда - этим пользоваться объективно нереально.