Macを利用している方はご存知と思いますが、起動させる時に起動音として「ジャーンッ!!」という音が鳴ります。
電源を入れたときに行われる「Power On Self Test」に合格し、EFIブートが開始されると「ジャーンッ!」と鳴る仕組みです。
ハードウェアの初期化や確認/メモリ関連のテストなどを行っているみたいです。
でも、カフェなどで起動した時に空気を読まず、「ジャーンッ!」て鳴って欲しくない場合もありますので、鳴らないようにしたくなりました。
久しぶりのlaptop型のMacを使用することもあり調べてみたら、「AppleScript」とMacの「LogoutHook」を利用してログアウトのタイミングで次回起動する時の音量をミュートし、「LoginHook」を利用してログインしたタイミングでミュートを解除することで実現できるとわかりました。
まず、AppleScriptを実行するコマンドの「/usr/bin/osascript」を使用して、「set volume」コマンドで音量を制御する2つのshellスクリプトを作成します。
AppleScript Language Guide : set volume
1 2 3 4 5 6 7 8 9 |
MacBookPro $ cat without_mute.sh #!/bin/bash osascript -e 'set volume without output muted' MacBookPro $ cat with_mute.sh #!/bin/bash osascript -e 'set volume with output muted' MacBookPro $ |
作成したShellに実行ができるように権限を付与したうえで任意の場所(自分は/Library/Scripts)へ配置します。
次のコマンドを実行して、「LogoutHook」と「LoginHook」を次のファイルへ登録をします。
ファイル | /var/root/Library/Preferences/com.apple.loginwindow.plist |
登録 | sudo defaults write com.apple.loginwindow KEY SHELL |
確認 | sudo defaults read com.apple.loginwindow |
1 2 3 4 5 6 7 8 9 |
MacBookPro $ sudo defaults write com.apple.loginwindow LogoutHook /Library/Scripts/with_mute.sh Password: (パスワードを入力します) MacBookPro $ sudo defaults write com.apple.loginwindow LoginHook /Library/Scripts/without_mute.sh MacBookPro $ sudo defaults read com.apple.loginwindow { LoginHook = "/Library/Scripts/without_mute.sh"; LogoutHook = "/Library/Scripts/with_mute.sh"; } MacBookPro $ |
起動させる時に起動音として「ジャーンッ!!」という音にドッキリする事がなくなりますね。
(Macには別のボリューム管理機構があるようで、一つだけ注意が必要ですが。。。)
com.apple.loginwindow.plist にはこんな情報が定義されます。
バイナリーのプロパティリストファイルなので、plutilコマンドでXML型式へ書き出すと確認ができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
MacBookPro $ sudo plutil -convert xml1 -o ~/Desktop/com.apple.loginwindow.xml /var/root/Library/Preferences/com.apple.loginwindow.plist MacBookPro $ cat ~/Desktop/com.apple.loginwindow.xml <?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>LoginHook</key> <string>/Library/Scripts/without_mute.sh</string> <key>LogoutHook</key> <string>/Library/Scripts/with_mute.sh</string> </dict> </plist> MacBookPro $ |