Как я улучшил управление окнами в macOS. hotkeys.. hotkeys. macOS.. hotkeys. macOS. Open source.. hotkeys. macOS. Open source. shortcuts.. hotkeys. macOS. Open source. shortcuts. Swift.. hotkeys. macOS. Open source. shortcuts. Swift. swiftui.. hotkeys. macOS. Open source. shortcuts. Swift. swiftui. window manager.

Написал приложение, которое добавляет в 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.

Благодарен за ваши звезды на GitHub ;)

Автор: Medvedev91

Источник