27.09.2024 #Life

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

О боли. Два года сижу на мак и никак не мог нормально переназначить 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

Шаг 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

    Диагностика

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

    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.
    • Скрипт автоматически запускается при входе в систему и работает в фоновом режиме.
    Так выглядит счастье

    Всё!