備忘録:Mac起動音抑止の設定(zsh、bash環境用)
Mac起動音の抑止について検索すると、ターミナルから
sudo nvram SystemAudioVolume=%80
を実行するという情報が多数ヒットしますが、私の手元のiMac(Mojave)、MacBook Pro(Catalina)共に効果がありません。
以前使用してたiMac(Sierra)も同様でした。
今までアプリを使用していましたが、今回はスクリプトを実行する方法をとってみます。
以下全てターミナルからの実行です。
・ホームディレクトリに自作のスクリプトを置く"bin"ディレクトリ作成
cd
mkdir ~/bin
・.zshrc に ~/bin ディレクトリへのパスを設定する(*これは新たなzsh環境で私が使用しやすくするため設定しているだけなので、単に起動音を消したいだけであれば無視してください)
sudo nano .zshrc
でファイルを開き、.zshrcファイルに
path=(~/bin $path)
を追記(保存して終了はctrl+x → y、以下nanoの操作では同様)、その後以下を実施してリフレッシュ。
source ~/.zshrc
rehash
・音量コントロールスクリプトの作成
以下基本的に
https://discussionsjapan.apple.com/docs/DOC-1301
からの引用なのですが、これはbash用であり、また一部文法エラーがあったため、以下ではそれらを修正をしています。
bash環境の場合、以下の"#!/bin/zsh"を、引用元サイトのまま"#!/bin/bash"としてください。
・ログオフ時、ミュート用スクリプト作成
cd ~/bin
nano volumemute.sh
して、以下の内容を書き込み保存。
osascriptで音量を変更(ここではミュート実施)するAppleScriptを実行しています。
#!/bin/zsh
osascript -e 'set volume with output muted'
その後chmod。
chmod 755 ./volumemute.sh
・ログオン時、起動時ミュート解除用スクリプト作成
cd ~/bin
nano volumeon.sh
して、以下の内容を書き込み保存。ミュート解除。
#!/bin/zsh
sleep 10
osascript -e 'set volume without output muted'
テストした範囲ではミュート解除前にsleepしないと高確率でミュート解除に失敗します(OSの初期処理完了前にミュート解除が行われるため?)。
ミュート解除ではなく直接音量を指定することもできます。ここでは50%(volume 50)を指定していますが、環境に合わせて任意の数値を指定してください。
ただしこの方法だと私の環境ではスピーカーの右側から音が出ません。原因は不明です。音量を変更するとスピーカーの左右から音が出るようになります。そのため私は上記のミュート解除を使用しています。
#!/bin/zsh
osascript -e 'set volume output volume 50'
その後chmod。
chmod 755 ./volumeon.sh
・LoginHook/LogoutHookによる起動音の制御スクリプト呼び出し
sudo defaults write com.apple.loginwindow LoginHook ~/bin/volumeon.sh
sudo defaults write com.apple.loginwindow LogoutHook ~/bin/volumemute.sh
この設定を無効化する場合は
sudo defaults delete com.apple.loginwindow LoginHook
sudo defaults delete com.apple.loginwindow LogoutHook
【了】