Как переключать источник звука на Mac одной кнопкой

Разработчики MacOS сделали процесс переключения источников звука простым и удобным. В строке меню есть соответствующая пиктограмма, нужно лишь нажать на неё и указать нужный пункт.

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

volume_menu_bar_sources

Покопавшись в сети и настройках некоторых приложений, я нашел способ сделать этот процесс максимально удобным.

Зачем это нужно

mac121

Согласен, что переключение источников звука нужно не всем и не всегда. Однако, многие пользователи Mac в течение дня часто переключаются между наушниками и динамиками, иногда выводят звук на внешний монитор или телевизор по HDMI, включают передачу звука на Apple TV либо колонки с поддержкой AirPlay.

А еще есть bluetooth-гарнитуры, которые можно использовать в паре с компьютером, быстро переключаясь на наушники для разговора по Skype или FaceTime.

Я пользуюсь этим ежедневно, несколько десятков раз приходится переключаться с гарнитуры на внешние колонки, иногда переключаю звук на bluetooth-гарнитуру или вывожу на Apple TV.

Что понадобится

  • набор утилит для командной строки;
  • специальный скрипт в среде AppleScript;
  • настроенная служба в приложении Automator;
  • 15 минут свободного времени.

Как все это настроить

Пусть вас не пугает перечень выше, практически все из перечисленного уже есть на каждом Mac, лезть в дебри настроек или ковыряться в командной строке не потребуется. Я сведу данный процесс к минимуму, чтобы повторить его смог каждый.

1. Для начала нужно загрузить набор дополнительных утилит. Нам потребуется приложение для командной строки switchaudio-OSX, которое позволяет управлять источниками ввода и вывода звука. Утилита является бесплатной и распространяется на GitHub.

Проще всего загрузить её в составе пакета Homebrew. Это целый набор утилит, которые пригодятся для работы и дальнейшей настройки macOS. Подробнее о нем можно почитать на сайте проекта.

How_to_switch_volume_on_mac_with_one_button_01

Для загрузки пакета открываем приложение Терминал и вставляем следующий код:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Видим, что скрипт загрузит несколько пакетов, подтверждаем клавишей Return (Enter), вводим пароль пользователя macOS и ждем окончания процесса.

2. Теперь нужно установить загруженную утилиту switchaudio-osx. Для этого в Терминале пишем такую команду:

brew install switchaudio-osx

Ждем окончания установки.

How_to_switch_volume_on_mac_with_one_button_02

3. Запускаем утилиту командой:

SwitchAudioSource

Видим возможные ключи для работы с утилитой. Нас интересует запуск утилиты с ключом »-a» для отображения всех устройств ввода и вывода звука. Пишем в терминале:

SwitchAudioSource -a

How_to_switch_volume_on_mac_with_one_button_03

Запоминаем название нужных устройств вывода звука.

How_to_switch_volume_on_mac_with_one_button_04

4. Теперь запускам приложение Automator. Создаем новую службу, из боковой панели добавляем Утилиты — Запустить Apple Script.

How_to_switch_volume_on_mac_with_one_button_05

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 

How_to_switch_volume_on_mac_with_one_button_06

Вместо «Built-in Output» и «HDMI» впишите пару своих устройств вывода, между которыми нужно переключаться (мы смотрели их в предыдущем пункте).

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

При желании можно добавить в код еще одно или несколько условий, так получится вкруговую переключаться между несколькими источниками.

7. В Automator выбираем из меню Файл — Сохранить, вводим имя службы и запоминаем его. Теперь наша служба добавлена в систему. Осталось только задать сочетание клавиш для её запуска.

8. Переходим в Настройки — Клавиатура — Сочетание клавиш. Слева выбираем Службы и ищем сохранённую только что службу.

How_to_switch_volume_on_mac_with_one_button_07

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

Вот и все! Можно тестировать. Теперь во время игры, просмотра видео, работы в любом приложении можно мгновенно переключиться между источниками вывода звука.

Что можно улучшить

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

Например, одним из источников указали Apple TV, беспроводную колонку или bluetooth-гарнитуру. Пока устройство подключено, все работает, но когда оно выключено или вне зоны досягаемости Mac, скрипт будет выдавать ошибку.

How_to_switch_volume_on_mac_with_one_button_08

Можно упростить наш процесс, но сделать его более работоспособным. Для этого в 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")

Она позволяет системе идентифицировать текущее устройство.

How_to_switch_volume_on_mac_with_one_button_09

В Automator добавляем еще два действия: «Установить значение переменной» и «Показать уведомление». В первом блоке присваиваем любое имя для переменной, а во втором — выводим этот параметр в сообщении.

Сохраняем скрипт и проверяем работу службы.

How_to_switch_volume_on_mac_with_one_button_10

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

Любителям приложения BetterTouchTool

Те, кто использует программу BetterTouchTool, могут добавить соответствующий скрипт прямо в приложение. Для этого:

1. Запускаем настройки BetterTouchTool.

2. Переключаемся в раздел Keyboard. Можно привязать переключение, например, на пульт Apple Remote, для этого выбираем соответствующий раздел.

How_to_switch_volume_on_mac_with_one_button_11

3. Создаем новое событие, добавляем любую кнопку и выбираем триггер «Run Apple Script».

4. Вставляем код нашего скрипта (первый вариант с переключением между конкретными источниками или второй с циклическим переключением).

How_to_switch_volume_on_mac_with_one_button_12

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

Кроме того, BetterTouchTool будет запускать скрипт даже если клавиша используется другой программой или системной службой. В этом случае в приложении будет осуществляться свое действие, а BetterTouchTool запустит нужный нам триггер.

Вот так можно получить удобное средство для переключения между источниками вывода звука.

©  iphones.ru