Написал приложение, которое добавляет в macOS две функции:

  1. Открытие приложений сочетанием клавиш, например ⌥-1 для Chrome, ⌥-2 для Slack;

  2. Открытие проектов сочетанием клавиш, например ⌥-3 откроет Option1.xcodeproj в Xcode. Работает с любым приложением.

В статье покажу принцип работы и возможности macOS о которых вы могли не знать.

Текст и код подготовлены без использования технологий искусственного интеллекта.


Исходный код — https://github.com/Medvedev91/Option1

В чем проблема?

Я работаю над несколькими проектами. Когда открыто 3 проекта VS Code или несколько окон Finder, то переключаться между окнами одного приложения крайне неудобно.

Год назад начал разработку идеального для себя способа работать с окнами. В итоге, кроме переключения между окнами, реализовал ряд других функций.

Текущая версия покрывает все мои потребности. Пора это отпускать в народ. Подготовил интерфейс, написал документацию, держите!

Ниже делюсь своим опытом от простого к сложному. Не нужно ничему переучиваться, смотрите на это как на дополнительные возможности macOS.

1. Встроенный ⌘‑Tab

Для переключения между окнами чаще всего использую встроенный ⌘-Tab. Ничего нового, все как обычно.

2. Сочетания клавиш для часто используемых приложений

Для открытия приложений которые использую чаще всего, например веб‑браузер или мессенджер я задаю сочетания клавиш. Например, так:

⌥-1 для Chrome, ⌥-2 для Slack
⌥-1 для Chrome, ⌥-2 для Slack

Если приложение закрыто — оно откроется, иначе просто получит фокус.

3. Сочетания клавиш для проектов, файлов, сайтов...

Для меня это главная функция!

Пример: как разработчик Option1, я часто открываю проект Option1.xcodeproj в Xcode. Вот что я сделал:

⌥-8 откроет Option1.xcodeproj в Xcode
⌥-8 откроет Option1.xcodeproj в Xcode

Теперь я не думаю, открыт проект или нет. Я просто нажимаю ⌥-8. Если проект закрыт — он откроется, иначе просто получит фокус.

Особенно удобно когда открыто несколько Xcode проектов. Ибо встроенный ⌘-Tab переключает приложения, а не проекты или окна.

Работает с любым приложением. Несколько примеров:

Примеры открытия проектов, папок, файлов или сайтов в разных приложениях
Примеры открытия проектов, папок, файлов или сайтов в разных приложениях

Прошу заметить, ⌥-0 не только открывает Google Chrome как ⌥-1, но еще в новой вкладке открывает habr.com.

4. Полноэкранный режим

Теперь, когда есть быстрый доступ к окнам и проектам, многие окна открываю в полноэкранном режиме. Особенно актуально в профессиональном ПО.

Дополнительно, в полноэкранном режиме настроил скрытие строки меню (Menu Bar):

Системные настройки для скрытия строки меню
Системные настройки для скрытия строки меню

5. Рабочие столы и «Assign To This Desktop»

Был удивлен узнав что в macOS есть такая функция. Отлично сочетается с моей программой!

Пример: я использую отдельный рабочий стол для рабочих окон: Slack и Firefox — Desktop 2:

Desktop 2 - Рабочий стол для рабочих окон
Desktop 2 — Рабочий стол для рабочих окон

Поскольку ⌥-2 открывает Slack, я еще хочу чтобы он всегда открывался на втором рабочем столе. Для этого перехожу на второй рабочий стол (Desktop 2) и делаю это:

Закрепить приложение на рабочем столе
Закрепить приложение на рабочем столе

Теперь я не думаю открыт Slack или нет. Я просто нажимаю ⌥-2. Я всегда буду перемещен на второй рабочий стол где Slack будет запущен и получит фокус.

Поскольку у меня заданы комбинации для всех часто используемых приложений, я предпочитаю скрывать Dock:

Системные настройки для автоматического скрытия Dock
Системные настройки для автоматического скрытия Dock

6. Рабочие пространства

Я работаю над двумя проектами: Option1 и timeto.me. Я не хочу задавать разные сочетания клавиш для разных проектов, я хочу чтобы ⌥-8 всегда открывал проект над которым сейчас работаю.

Для этого создал два рабочих пространства (workspaces): Option1 и timeto.me:

Рабочие пространства для разных проектов
Рабочие пространства для разных проектов

Обратите внимание, что ⌥-1 и ⌥-2 из Shared по‑прежнему работают!

Для смены рабочих пространств использую строку меню:

Смена рабочих пространств из строки меню
Смена рабочих пространств из строки меню

One more thing. ⌥‑Tab.

Удобно для переключения между окнами одного приложения так как встроенный ⌘-Tab переключает приложения, а не окна или проекты.

Пример ⌥-Tab
Пример ⌥-Tab

Дополнительные возможности ⌥-Tab:

  • Закрепленные приложения вверху списка;

  • Двойное нажатие Option отображает список окон. Удобно для просмотра уведомлений приложений;

  • ⌥-` и ⌘-` «прыгает» только по приложениям с уведомлениями;

  • Сортировка окон по приложению, истории или специальный JK‑режим;

  • Вдохновленный Vim‑ом JK‑режим это комбинация сортировок по приложению и истории. При нажатии ⌥-Tab — по приложению, ⌥-J — по истории;

  • ⌥-(A-Z) для окон. Для каждого окна автоматически задается комбинация клавиш. Например на снимке выше для Recent задан ⌥-R. ВНИМАНИЕ Если вы используете эти комбинации в других приложения — отключите это в настройках;

  • Избранное (Favourites).

Честно говоря, я нечасто использую ⌥-Tab, но иногда это просто незаменимо.

Post Scriptum

Создавая приложение я фокусировался на функциях которых мне не хватало. Это не замена, а дополнение к встроенным возможностям macOS:

  • поддержка нескольких дисплеев,

  • поддержка встроенных рабочих столов macOS,

  • поддержка полноэкранного режима.

Готов добавлять функционал по вашему заказу.

Исходный код — https://github.com/Medvedev91/Option1, веб‑сайт — https://option1.io.