27.09.2024 #Hack #Life

Переназначаем кнопку Play с iTunes на Яндекс.Музыку в mac без доп.программ

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

Шаг 1: Запуск Terminal

  1. Нажмите Command (⌘) + Space
  2. Введите Terminal
  3. Нажмите 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

Если у вас русская система, то вам необходимо изменить одну строку перед выполнением:

#измените строку 
/usr/bin/osascript -e 'tell application "Yandex Music" to activate'

#на строку
/usr/bin/osascript -e 'tell application "Яндекс Музыка" to activate'

Шаг 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: Проверка работоспособности

  1. Проверьте статус службы:
launchctl list | grep musicswitcher

# Вы должны увидеть что-то вроде: 
47544	0	com.example.musicswitcher

2. Проверьте логи (по запускайте 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

3. Проверьте отсутсвие ошибок:

tail -f ~/musicswitcher_error.log

Как выключить

1.Выгрузка службы из launchd

# Выгружаем службу из текущего пользовательского окружения
launchctl bootout gui/$UID ~/Library/LaunchAgents/com.musicswitcher.daemon.plist

# Если команда выше не сработает, попробуйте альтернативный вариант
launchctl unload ~/Library/LaunchAgents/com.musicswitcher.daemon.plist

2. Удаление файла .plist

# Удаляем файл конфигурации
rm ~/Library/LaunchAgents/com.musicswitcher.daemon.plist

# Удаляем лог-файл, если он больше не нужен
rm ~/musicswitcher.log

Диагностика

Если что-то не работает, проверьте:

  1. Права доступа к конфигурационному файлу:
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
  1. Содержимое лога ошибок:
tail -f ~/musicswitcher_error.log
  1. Подробный статус процесса:
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.
  • Скрипт автоматически запускается при входе в систему и работает в фоновом режиме.
Так выглядит счастье

Всё!