Как переключать источник звука на Mac одной кнопкой
Разработчики MacOS сделали процесс переключения источников звука простым и удобным. В строке меню есть соответствующая пиктограмма, нужно лишь нажать на неё и указать нужный пункт.
К сожалению, переключать звук при помощи всего одной кнопки или сочетания клавиш изначально невозможно. Эх, как бы здорово было переключаться одним нажатием.
Покопавшись в сети и настройках некоторых приложений, я нашел способ сделать этот процесс максимально удобным.
Зачем это нужно
Согласен, что переключение источников звука нужно не всем и не всегда. Однако, многие пользователи Mac в течение дня часто переключаются между наушниками и динамиками, иногда выводят звук на внешний монитор или телевизор по HDMI, включают передачу звука на Apple TV либо колонки с поддержкой AirPlay.
А еще есть bluetooth-гарнитуры, которые можно использовать в паре с компьютером, быстро переключаясь на наушники для разговора по Skype или FaceTime.
Я пользуюсь этим ежедневно, несколько десятков раз приходится переключаться с гарнитуры на внешние колонки, иногда переключаю звук на bluetooth-гарнитуру или вывожу на Apple TV.
Что понадобится
- набор утилит для командной строки;
- специальный скрипт в среде AppleScript;
- настроенная служба в приложении Automator;
- 15 минут свободного времени.
Как все это настроить
Пусть вас не пугает перечень выше, практически все из перечисленного уже есть на каждом Mac, лезть в дебри настроек или ковыряться в командной строке не потребуется. Я сведу данный процесс к минимуму, чтобы повторить его смог каждый.
1. Для начала нужно загрузить набор дополнительных утилит. Нам потребуется приложение для командной строки switchaudio-OSX, которое позволяет управлять источниками ввода и вывода звука. Утилита является бесплатной и распространяется на GitHub.
Проще всего загрузить её в составе пакета Homebrew. Это целый набор утилит, которые пригодятся для работы и дальнейшей настройки macOS. Подробнее о нем можно почитать на сайте проекта.
Для загрузки пакета открываем приложение Терминал и вставляем следующий код:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Видим, что скрипт загрузит несколько пакетов, подтверждаем клавишей Return (Enter), вводим пароль пользователя macOS и ждем окончания процесса.
2. Теперь нужно установить загруженную утилиту switchaudio-osx. Для этого в Терминале пишем такую команду:
brew install switchaudio-osx
Ждем окончания установки.
3. Запускаем утилиту командой:
SwitchAudioSource
Видим возможные ключи для работы с утилитой. Нас интересует запуск утилиты с ключом »-a» для отображения всех устройств ввода и вывода звука. Пишем в терминале:
SwitchAudioSource -a
Запоминаем название нужных устройств вывода звука.
4. Теперь запускам приложение Automator. Создаем новую службу, из боковой панели добавляем Утилиты — Запустить Apple Script.
5. Вверху выбираем пункты «нет входных данных» и «в любой программе». Ниже вставляем следующий код:
set the currentAudioSource to (do shell script "/usr/local/Cellar/switchaudio-osx/1.0.0/SwitchAudioSource -c") if currentAudioSource is equal to "Built-in Output" then do shell script "/usr/local/Cellar/switchaudio-osx/1.0.0/SwitchAudioSource -s \"HDMI\"" else do shell script "/usr/local/Cellar/switchaudio-osx/1.0.0/SwitchAudioSource -s \"Built-in Output\"" end if
Вместо «Built-in Output» и «HDMI» впишите пару своих устройств вывода, между которыми нужно переключаться (мы смотрели их в предыдущем пункте).
Для проверки здесь же запускаем службу нажатием на пиктограмму со стрелкой. Если названия источников ввели верно, произойдет переключение между ними.
При желании можно добавить в код еще одно или несколько условий, так получится вкруговую переключаться между несколькими источниками.
7. В Automator выбираем из меню Файл — Сохранить, вводим имя службы и запоминаем его. Теперь наша служба добавлена в систему. Осталось только задать сочетание клавиш для её запуска.
8. Переходим в Настройки — Клавиатура — Сочетание клавиш. Слева выбираем Службы и ищем сохранённую только что службу.
Задаем удобное сочетание клавиш и пользуемся. Не забывайте, что наша служба универсальная и работает в любом приложении вне зависимости от контекста. Чтобы переключение срабатывало всегда, нужно выбрать сочетание клавиш, которое не используется в других программах.
Вот и все! Можно тестировать. Теперь во время игры, просмотра видео, работы в любом приложении можно мгновенно переключиться между источниками вывода звука.
Что можно улучшить
В указанном процессе плохо лишь одно, если любой из источников вывода, который указан в скрипте будет отключен, его работа прервётся.
Например, одним из источников указали Apple TV, беспроводную колонку или bluetooth-гарнитуру. Пока устройство подключено, все работает, но когда оно выключено или вне зоны досягаемости Mac, скрипт будет выдавать ошибку.
Можно упростить наш процесс, но сделать его более работоспособным. Для этого в Automator можно использовать лишь следующий код:
set the currentAudioSource to (do shell script "/usr/local/Cellar/switchaudio-osx/1.0.0/SwitchAudioSource -n")
Запуск команды с ключом »-n» позволяет просто переключаться на следующее доступное устройство вывода звука. Теперь мы будем по кругу переключаться между устройствами, если одно из них не будет подключено в момент использования службы, никакой ошибки скрипта не будет.
Осталось лишь сделать процесс переключения более наглядным. Для этого добавляем еще одну команду:
set the currentAudioSource to (do shell script "/usr/local/Cellar/switchaudio-osx/1.0.0/SwitchAudioSource -c")
Она позволяет системе идентифицировать текущее устройство.
В Automator добавляем еще два действия: «Установить значение переменной» и «Показать уведомление». В первом блоке присваиваем любое имя для переменной, а во втором — выводим этот параметр в сообщении.
Сохраняем скрипт и проверяем работу службы.
Теперь при переключении между источниками вывода звука будем получать уведомление с текущим выбранным устройством. Просто и наглядно.
Любителям приложения BetterTouchTool
Те, кто использует программу BetterTouchTool, могут добавить соответствующий скрипт прямо в приложение. Для этого:
1. Запускаем настройки BetterTouchTool.
2. Переключаемся в раздел Keyboard. Можно привязать переключение, например, на пульт Apple Remote, для этого выбираем соответствующий раздел.
3. Создаем новое событие, добавляем любую кнопку и выбираем триггер «Run Apple Script».
4. Вставляем код нашего скрипта (первый вариант с переключением между конкретными источниками или второй с циклическим переключением).
Такой способ удобнее тем, что можно привязать переключение не на сочетание клавиш, а на одну любую кнопку. При использовании полноразмерной клавиатуры с цифровым блоком незадействованных клавиш для этого хватает.
Кроме того, BetterTouchTool будет запускать скрипт даже если клавиша используется другой программой или системной службой. В этом случае в приложении будет осуществляться свое действие, а BetterTouchTool запустит нужный нам триггер.
Вот так можно получить удобное средство для переключения между источниками вывода звука.