Apple Musicアプリが起動するのを防ぐ
(lowtechguys.com)- Music Decoyは実行中のプロセスとして存在し、誤って ▶ Play を押したときにシステムのMusicアプリが開かないようにするアプリ
- バックグラウンドでは 一切何もせず、Musicアプリと同じバンドル識別子を使って、システムにMusicアプリがすでに実行中だと認識させる仕組み
- v1.1からは mediaAppPath 設定により、▶ Play入力時にSpotifyのような別アプリを起動するよう構成可能
- Musicアプリの自動起動は、キーボードの▶ Play入力、Bluetoothヘッドセット接続後の再生命令、通話終了後にヘッドセットが通話モードから音楽モードへ切り替わるときに発生
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 キーを押し、他のアプリがオーディオを再生していないときに発生
- Bluetoothヘッドセットが接続され、再生命令を送るときに発生
- 通話終了によりBluetoothヘッドセットが通話モードから音楽モードへ切り替わるときに発生
-
なぜこれが起こるのか?
rcdは Remote Control Daemon の略で、メディアキー処理を担当するデーモン- 再生イベントが発生すると、
rcdは現在オーディオを再生しているアプリがあるか確認する - オーディオ再生アプリがあればそのアプリに再生命令を送り、なければシステムのMusicアプリを起動
- このデーモンを無効化する方法はあるが、キーボードでメディア再生を制御する機能も一緒に無効化される
-
代替手段
- StackExchangeの回答によると、同じ効果を得るいくつかの方法がある
launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist- 問題点: Playボタンを完全に無効化する
- noTunes は起動したアプリを検知し、Musicが起動すると即座に終了させる方式
- 問題点: バックグラウンドでごくわずかにCPUを使用するが、起動アプリの検知作業は非常に軽い
1件のコメント
Hacker News のコメント
アプリがバックグラウンドで何もせず、Music アプリと同じ バンドル識別子 を持つ実行中プロセスとして存在しているだけで機能するという点が本当に巧妙だ
こういうローコード/ノーコード的な解決策は、システムを非常に深く理解していないと出てこない優雅さがある。macOS で再生ボタンを押したときに正確に何が起きるのか、バンドル識別子がどう機能するのかを理解している必要があり、成果物はほとんどコードのない 1 つの「衝突」だけというのが美しい
余談だが、こういう問題はコーディングエージェントが苦手だ。今の Codex なら、Music アプリの起動をループで監視しては終了させる大げさなアプリを作ってしまいがちだろう
「Apple Music アプリの起動を止めて」と頼めば、多くの人がそうするように、監視して終了する方式に向かいがちだろう。だが「なぜ Apple Music が起動するのか調べて」と頼めば、調査結果をもとに Music と衝突する ノーコードアプリ を作るのが最善だという結論に、ユーザーはすぐたどり着けるはずだ
info.plistで BundleIdentifier をcom.apple.systempreferencesに変更し、自分の開発者証明書で.appに署名して回避したことがある見つかるまではかなり面白かった
いまだに Apple が iTunes をなくしたのが信じられない
昔はデジタル音楽ライブラリ全体を iTunes に入れていて、その大半は CD から自分でリッピングしたものだったが、iTunes で買ったアルバムや TV 番組もあった。Apple が iTunes を丸ごと捨てて Mac OS から削除し、Apple Music のようなもので置き換えたとき、もう二度と信用しないと思った
しばらくのあいだまともな MP3 プレーヤーを探して AIMP も使ってみたが、今は AI を使って、自分向けのインターフェースを持つローカルファイルベースのプレーヤーを自作しようと思っている。ストリーミングは必要ないし、望んでもいない。iTunes でアルバムを買い続けていたかもしれないが、今は CD で買うほうがましだ
去年はほとんどその使い方をしていて、クラウド機能を無効にしたまま、すべてのローカル音楽を Apple Music に入れ、昔の iPod のようにケーブルで iPhone に同期していたが、今でもちゃんと動いていた
Apple Music を契約しなくても、デジタル音楽ライブラリ全体を iTunes/Music に入れて、昔と同じように使っている
内蔵ユーティリティ
hidutilで F3〜F9 キー を好きなキーに再マッピングして使っているF3/F4 はキーボードのバックライト輝度に、F5〜F9 は普通のファンクションキーに変えた。この記事には役立つ情報が多い: https://news.ycombinator.com/item?id=35555475
M1 MacBook では
hidutil property --setとUserKeyMappingを使い、HIDKeyboardModifierMappingSrc/HIDKeyboardModifierMappingDstの値を指定する方式で適用している数か月前、まさにこういうものが必要だった。ライブ公演で MacBook でキーボードリグを動かし、モニタリングには 低遅延ワイヤレスヘッドホン を使っている
ヘッドホンの送信ドングルをノート PC に挿しているのだが、ヘッドホンのボタンを押すと、ドングルが「再生/一時停止」コマンドを送り、Music が起動してデフォルト出力デバイスから音を流し始める。しかもヘッドホン送信機がデフォルト出力として選ばれているかどうかすら気にしないので、複雑なマルチデバイス構成ではまったく別のデバイスから音が出ることがある
公演中に誤ってボタンを押し、デフォルトが P.A. システムにつながったインターフェースだったら、会場全体にランダムな曲が最大音量で鳴り響く可能性がある
今はドングルをノート PC ではなくオーディオインターフェース側につなぐようハードウェア構成を変えたので、当面は問題ではないが、こうした誤動作を防ぐことも再構成の理由の一つだった。創作のプロ向けプレミアム機器で、こうした 設定不能な挙動 はライブ公演環境にはあまりにも不適切だ
Apple がこんな低級な Microsoft 的戦術を使うのを見ると悲しくなる。ユーザーを無理やり別製品へ誘導するのは ブランドの自己侵食 だ
昔の Microsoft 対 Netscape に似た構図だ
どうしてこういう攻撃的な動作を無効にする簡単な方法がないのか理解できない。意図的に強制的で不快な動きにしているように見えるし、初期の段階で断ち切らなければ、後になってもっと広がり、ユーザーを締めつけることになりかねない
Apple だけの問題ではなく、多くの製品デザイナーがこういう 傲慢な態度 を受け入れてしまっている
オーディオファイルを開くと Music が自動起動するだけでなく、音楽ライブラリ に追加されるのが嫌だ
そのあと自分で削除しつつ「ファイルを保持」を選ばなければならない
あまりに昔のことなので、デフォルトが Music アプリだということすら忘れていた。ファイルを再生したいというのは、そのファイルをライブラリに入れたいという意味ではないと思う
.mp3のようなファイルを右クリックして情報を見るを開き、デフォルトアプリを好きなアプリに変えてから「Change all...」を押せばいいファイル形式ごとに一度ずつやる必要はあるが、一度やれば終わりだ
AirPods を誤ってクリックすると、使ってもいないし望んでもいないアプリが突然起動するのが本当にうっとうしい
https://github.com/tombonez/noTunes を使っている
メニューバーアイコンも使わないので、限られたスペースを節約できるのも良い
このアプローチは本当に気に入った。賢い。ただ、個人的にはキーボードの PLAY ボタン を押したときに Apple Music が開くのは好きだ
以前これを防ごうと検索したが良い結果がなく、Music アプリが開いたらまた閉じる Shortcut を作って使っていた
実際かなりうまく動いていたが、本当に Music アプリを使いたいときには問題になった。Apple のユーザー体験としては今ひとつで腹立たしい