macOS: Предотвращение оглушения

За компьютером я сижу в наушниках. Наушники подключены к внешней звуковой карте "Sound Blaster Omni" и в этом конфиге громкость наушников в 20% является достаточной, а громкость выше 40% процентов уже слишком громкой.

когда забыл убавить громкость

Изначально я решил этот вопрос простым скриптом login.sh который выполняется при входе в систему:

#!/bin/bash

osascript -e 'set volume 1'

При входе звук сбрасывается в минимальное значение, а его делаю громче когда мне нужно. Жил я с такой системой много лет, пока не начал использвать iPad в качестве второго монитора. Для подключения iPad у меня стоит программа Duet и либо с ней проблемы, либо с системой из-за переодического подключения/отключения мониторов, но, временами, громкость звука стала подниматься до 90%-100%.

90% громкость в моей системе это можно наушники бросить под стол и прекрасно слышать все происходящее, абсолютно без проблем.

Так вот, дабы не оглохнуть раньше времени, пришлось добавить "бота" в систему который каждые несколько секунд проверяет громкость звука и если она выше положенной, то возвращает её на допустимый уровень.

~/Library/LaunchAgents/com.local.volumelevel.plist
<?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.local.volumelevel</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/osascript</string>
        <string>-e</string>
        <string>if (output volume of (get volume settings)) > 25 then set volume output volume 25</string>
    </array>
    <key>StartInterval</key>
    <integer>10</integer>
</dict>
</plist>

Нативный обработчик Apple Script, запускается каждые 10 секунд и выполняет команду

if (output volume of (get volume settings)) > 25 then set volume output volume 25

Все. Теперь не оглохну.


macos