Переназначаем кнопку Play с iTunes на Яндекс.Музыку без доп.программ
О боли. Два года сижу на мак и никак не мог нормально переназначить Play на своем Mac. Чтобы поменять этот сценарий, у тебя в фоне всегда должно работать приложение. Я нашел решение лучше.
Шаг 1: Запуск Terminal
- Нажмите
Command (⌘) + Space
- Введите
Terminal
- Нажмите
Enter
Шаг 2: Создание конфигурационного файла
Скопируйте и вставьте следующую команду в терминал:
cat > ~/Library/LaunchAgents/com.musicswitcher.daemon.plist << 'EOL'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.musicswitcher</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>
# Clear and create log files
echo "" > /Users/admin/musicswitcher.log
echo "" > /Users/admin/musicswitcher_error.log
while true; do
if pgrep -f "/System/Applications/Music.app/Contents/MacOS/Music" > /dev/null; then
echo "$(date): Music detected, closing..." >> /Users/admin/musicswitcher.log
pkill -x Music
sleep 1
echo "$(date): Starting Yandex Music..." >> /Users/admin/musicswitcher.log
/usr/bin/osascript -e 'tell application "Yandex Music" to activate'
else
echo "$(date): Music is not running" >> /Users/admin/musicswitcher.log
fi
sleep 2
done
</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/Users/admin/musicswitcher.log</string>
<key>StandardErrorPath</key>
<string>/Users/admin/musicswitcher_error.log</string>
</dict>
</plist>
EOL
Шаг 3: Настройка прав и активация службы
Выполните следующие команды по очереди:
# Создаем лог-файл и устанавливаем права
touch ~/musicswitcher.log
chmod 644 ~/musicswitcher.log
# Перезагружаем службу
launchctl unload ~/Library/LaunchAgents/com.musicswitcher.daemon.plist
launchctl bootstrap gui/$UID ~/Library/LaunchAgents/com.musicswitcher.daemon.plist
Шаг 4: Проверка работоспособности
Проверьте статус службы:
launchctl list | grep musicswitcher
# Вы должны увидеть что-то вроде:
47544 0 com.example.musicswitcher
Проверьте логи (по запускайте Music, я это делал с помощью Play клавишы):
tail -f ~/musicswitcher.log
# Вы должны увидеть что-то вроде:
Fri Mar 28 21:22:14 MSK 2025: Music is not running
Fri Mar 28 21:22:16 MSK 2025: Music is not running
Fri Mar 28 21:22:19 MSK 2025: Music is not running
Fri Mar 28 21:22:21 MSK 2025: Music detected, closing...
Fri Mar 28 21:22:22 MSK 2025: Starting Yandex Music...
Fri Mar 28 21:22:29 MSK 2025: Pressing Play...
Fri Mar 28 21:22:31 MSK 2025: Music detected, closing...
Fri Mar 28 21:22:33 MSK 2025: Starting Yandex Music...
Fri Mar 28 21:22:40 MSK 2025: Pressing Play...
Fri Mar 28 21:22:42 MSK 2025: Music is not running
Fri Mar 28 21:22:44 MSK 2025: Music is not running
Fri Mar 28 21:22:46 MSK 2025: Music is not running
Fri Mar 28 21:22:48 MSK 2025: Music detected, closing...
Fri Mar 28 21:22:49 MSK 2025: Starting Yandex Music...
Fri Mar 28 21:22:56 MSK 2025: Pressing Play...
Fri Mar 28 21:22:59 MSK 2025: Music detected, closing...
Fri Mar 28 21:23:00 MSK 2025: Starting Yandex Music...
Fri Mar 28 21:23:07 MSK 2025: Pressing Play...
Fri Mar 28 21:23:09 MSK 2025: Music is not running
Диагностика
Если что-то не работает, проверьте:
- Права доступа к конфигурационному файлу:
ls -l ~/Library/LaunchAgents/com.musicswitcher.daemon.plist
# Вы должны увидеть что-то вроде:
-rw-r--r-- 1 admin staff 1371 Mar 28 21:12 /Users/admin/Library/LaunchAgents/com.musicswitcher.daemon.plist
- Содержимое лога ошибок:
tail -f ~/musicswitcher_error.log
- Подробный статус процесса:
ls -l ~/Library/LaunchAgents/com.musicswitcher.daemon.plist
# Вы должны увидеть что-то вроде:
-rw-r--r-- 1 admin staff 1371 Mar 28 21:12 /Users/admin/Library/LaunchAgents/com.musicswitcher.daemon.plist
Важные замечания
- Скрипт будет работать только для пользователя с именем
admin
. Если ваше имя пользователя другое, заменитеadmin
на ваше имя пользователя в путях файлов. - Убедитесь, что у вас установлено приложение Yandex Music.
- Скрипт автоматически запускается при входе в систему и работает в фоновом режиме.

Всё!