Есть ли способ заглушить звук с моего компьютера каждый раз, когда я отсоединяю наушники (например, телефон), чтобы остановить звук, а затем проиграть из моих динамиков?
В принципе, для меня это было:
# When plugged in:
cat /proc/asound/card0/codec#0 > pluggedin.txt
# When not plugged in:
cat /proc/asound/card0/codec#0 > notplugged.txt
# Then compare the differences
diff pluggedin.txt notplugged.txt
Для меня разница была в «Node 0x16» в разделе «Amp-Out vals»: [ ! d2] Node 0x16 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Node 0x16 [PinComplex] wcaps 0x40058d: Stereo Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out caps:ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80] | Amp-Out vals: [0x00 0x00]
Итак, я основывал обнаружение на найденной разности.
С помощью этих знаний вы можете иметь скрипт, работающий в фоновом режиме. Если отключено, скрипты приглушают ваши колонки, используя amixer sset Master playback 0% (или любую другую команду).
#!/bin/bash
# This scripts detecs unplugging headphones.
oldstatus="unrelated string"
while [ 1 ]; do
# The following line has to be changed depending on the difference (use diff) in '/proc/asound/card0/code#0'
status=$(grep -A 4 'Node 0x16' '/proc/asound/card0/codec#0' | grep 'Amp-Out vals: \[0x80 0x80\]')
if [ "$status" != "$oldstatus" ]; then
if [ -n "$status" ]; then
echo "Plugged in"
amixer sset Master playback 80% # Set volume to 80%
oldstatus="$status"
else
echo "Unplugged"
amixer sset Master playback 0% # Mute
oldstatus="$status"
fi
fi
done
Вы можете сделать его исполняемым с помощью chmod +x scriptname.sh и поместить в загрузочные приложения. Вам придется настроить обнаружение отключений, хотя, обнаружив свою собственную разницу в /proc/asound/card0/codec#0 (возможно, даже измените номера здесь для нескольких звуковых карт.
Ссылки по теме:
https: // wiki.ubuntu.com/Audio/PreciseJackDetectionTesting
https://wiki.ubuntu.com/Audio/PreciseJackDetectionTesting
Как автоматически изменить уровень громкости, когда не подключайте наушники?
В принципе, для меня это было:
# When plugged in:
cat /proc/asound/card0/codec#0 > pluggedin.txt
# When not plugged in:
cat /proc/asound/card0/codec#0 > notplugged.txt
# Then compare the differences
diff pluggedin.txt notplugged.txt
Для меня разница была в «Node 0x16» в разделе «Amp-Out vals»: [ ! d2] Node 0x16 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out Node 0x16 [PinComplex] wcaps 0x40058d: Stereo Amp-Out
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out caps:ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals: [0x80 0x80] | Amp-Out vals: [0x00 0x00]
Итак, я основывал обнаружение на найденной разности.
С помощью этих знаний вы можете иметь скрипт, работающий в фоновом режиме. Если отключено, скрипты приглушают ваши колонки, используя amixer sset Master playback 0% (или любую другую команду).
#!/bin/bash
# This scripts detecs unplugging headphones.
oldstatus="unrelated string"
while [ 1 ]; do
# The following line has to be changed depending on the difference (use diff) in '/proc/asound/card0/code#0'
status=$(grep -A 4 'Node 0x16' '/proc/asound/card0/codec#0' | grep 'Amp-Out vals: \[0x80 0x80\]')
if [ "$status" != "$oldstatus" ]; then
if [ -n "$status" ]; then
echo "Plugged in"
amixer sset Master playback 80% # Set volume to 80%
oldstatus="$status"
else
echo "Unplugged"
amixer sset Master playback 0% # Mute
oldstatus="$status"
fi
fi
done
Вы можете сделать его исполняемым с помощью chmod +x scriptname.sh и поместить в загрузочные приложения. Вам придется настроить обнаружение отключений, хотя, обнаружив свою собственную разницу в /proc/asound/card0/codec#0 (возможно, даже измените номера здесь для нескольких звуковых карт.
Ссылки по теме:
https: // wiki.ubuntu.com/Audio/PreciseJackDetectionTesting
https://wiki.ubuntu.com/Audio/PreciseJackDetectionTesting
Как автоматически изменить уровень громкости, когда не подключайте наушники?
Для ubuntu-16.10 я сделал несколько изменений в этом ответе.
oldresult="Some Random String"
while [ 1 ]; do
# incase of plugged out result will contain some data
result=$(grep "EAPD 0x2: EAPD" /proc/asound/card0/codec#0)
# checking for oldresult if not same then only go inside
if [ "$oldresult" != "$result" ]; then
oldresult=$result
if [[ -z "$result" ]]; then
notify-send "Plugged In"
amixer sset Master playback 80% # Set volume to 80%
else
notify-send "Plugged Out"
amixer sset Master playback 0% # Set volume to 0%
fi
fi
done
Если у вас есть проблемы с перехватом событий в /etc/acpi/handler.sh, см. мой ответ. Это также коды устройств как Node 0x16.
Это работало для меня на Ubuntu 14.04:
", когда наушники отключены от него. Вставьте наушники и поднимите громкость. Удалите наушники и проверьте, чтобы они были отключены."
Кредит: RevDrStrangelove на https://www.reddit.com/r/LifeProTips/comments/369k76/lpt_request_automaticly_mute_laptop_after_headset/
Для ubuntu-16.10 я сделал несколько изменений в этом ответе.
oldresult="Some Random String"
while [ 1 ]; do
# incase of plugged out result will contain some data
result=$(grep "EAPD 0x2: EAPD" /proc/asound/card0/codec#0)
# checking for oldresult if not same then only go inside
if [ "$oldresult" != "$result" ]; then
oldresult=$result
if [[ -z "$result" ]]; then
notify-send "Plugged In"
amixer sset Master playback 80% # Set volume to 80%
else
notify-send "Plugged Out"
amixer sset Master playback 0% # Set volume to 0%
fi
fi
done
Если у вас есть проблемы с перехватом событий в /etc/acpi/handler.sh, см. мой ответ. Это также коды устройств как Node 0x16.
Это работало для меня на Ubuntu 14.04:
", когда наушники отключены от него. Вставьте наушники и поднимите громкость. Удалите наушники и проверьте, чтобы они были отключены."
Кредит: RevDrStrangelove на https://www.reddit.com/r/LifeProTips/comments/369k76/lpt_request_automaticly_mute_laptop_after_headset/