- Music Decoy는 실행 중인 프로세스로 존재해, 실수로 ▶ Play를 눌렀을 때 시스템 Music 앱이 열리지 않게 하는 앱
- 백그라운드에서 전혀 작업하지 않고, Music 앱과 같은 번들 식별자를 사용해 시스템이 Music 앱을 이미 실행 중으로 인식하게 만드는 방식
- v1.1부터 mediaAppPath 설정으로 ▶ Play 입력 시 Spotify 같은 다른 앱을 실행하도록 구성 가능
- Music 앱 자동 실행은 키보드 ▶ Play 입력, 블루투스 헤드셋 연결 후 재생 명령, 통화 종료 뒤 헤드셋이 통화 모드에서 음악 모드로 전환될 때 발생
rcd는 재생 이벤트 때 현재 오디오 재생 앱이 있으면 해당 앱에 명령을 보내고, 없으면 시스템 Music 앱을 실행하며, 데몬 비활성화는 키보드 미디어 재생 제어까지 끄는 결과
Music Decoy
-
Music 앱 실행 막기
- Music Decoy가 실행 중인 동안, 실수로 ▶ Play를 눌러도 시스템 Music 앱이 실행되지 않음
- 앱은 백그라운드에서 전혀 작업하지 않으며, Music 앱과 같은 번들 식별자를 가진 실행 중 프로세스로 존재하는 방식
-
작동 방식
- 번들 식별자
com.apple.Music을 사용해 시스템이 Music 앱이 이미 실행 중이라고 판단하게 만드는 구조
- 번들 식별자
-
설정
- v1.1부터 ▶ Play 버튼을 눌렀을 때 다른 앱을 실행하도록 Music Decoy 설정 가능
- Spotify 예시 설정 명령:
defaults write com.lowtechguys.MusicDecoy mediaAppPath /Applications/Spotify.app - 설정 초기화 명령:
defaults delete com.lowtechguys.MusicDecoy mediaAppPath
-
종료 방법
- Dock 아이콘과 메뉴 막대 아이콘이 없으므로 다음 중 하나로 종료 필요
- Activity Monitor를 열고 Music Decoy를 찾은 뒤 상단 ❌ 버튼 선택
- Terminal에서
killall 'Music Decoy'실행
- Dock 아이콘과 메뉴 막대 아이콘이 없으므로 다음 중 하나로 종료 필요
자동 실행 조건, 원인, 대안
-
언제 Music이 스스로 실행되는가?
- 키보드의 ▶ Play 키를 눌렀고 다른 앱이 오디오를 재생 중이지 않을 때 발생
- 블루투스 헤드셋이 연결되고 재생 명령을 보낼 때 발생
- 통화 종료로 블루투스 헤드셋이 통화 모드에서 음악 모드로 전환될 때 발생
-
왜 이런 일이 발생하는가?
rcd는 Remote Control Daemon의 줄임말이며, 미디어 키 처리를 담당하는 데몬- 재생 이벤트가 발생하면
rcd는 현재 오디오를 재생하는 앱이 있는지 확인 - 오디오 재생 앱이 있으면 그 앱에 재생 명령을 보내고, 없으면 시스템 Music 앱 실행
- 해당 데몬을 비활성화하는 방법은 있지만, 키보드로 미디어 재생을 제어하는 기능도 함께 비활성화
-
대안
- StackExchange 답변 기준으로 같은 효과를 얻는 몇 가지 방법 존재
launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist- 문제점: Play 버튼을 완전히 비활성화
- noTunes는 실행된 앱을 감지하고 Music이 실행되는 즉시 종료하는 방식
- 문제점: 백그라운드에서 아주 작은 CPU를 사용하지만, 실행 앱 감지는 매우 적은 작업