Отключить звук при отключении наушников?

Одно из решений может использовать Guake в качестве замены терминала.

sudo apt-get install guake

Он по-прежнему показывает содержимое сверху вниз, но вы можете настроить высоту по умолчанию на то, что не повредит вашей шее, и есть ярлык (F11), чтобы показать терминал в полноэкранном режиме.

Кроме того, команда clear очищает терминал и помещает курсор в первую строку. Иногда его выдавать может помочь и вашей шее.

9
задан 8 May 2012 в 17:40

4 ответа

Как обнаружить отключение

В принципе, для меня это было:

# 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]

Итак, я основывал обнаружение на найденной разности.

Howto mute

С помощью этих знаний вы можете иметь скрипт, работающий в фоновом режиме. Если отключено, скрипты приглушают ваши колонки, используя 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

Как автоматически изменить уровень громкости, когда не подключайте наушники?

8
ответ дан 25 May 2018 в 11:41
  • 1
    Это отлично работает на Mint 17.3. Благодаря! – Briscoooe 31 December 2015 в 16:03
  • 2
    Наличие сценария с бесконечным циклом while (без какой-либо небольшой инструкции сна), непрерывно работающей в фоновом режиме, далека от идеального решения; это уродливое и взломанное обходное решение, помимо того, что он является процессором и батареей. Я попробовал это и перешел из обычной ситуации с постоянным 5% -ным использованием процессора (с браузером, spotify, terminal, IDE, Telegram и другими приложениями) до 45% постоянного использования процессора. – LeartS 22 August 2017 в 19:06

Это работало для меня на Ubuntu 14.04:

", когда наушники отключены от него. Вставьте наушники и поднимите громкость. Удалите наушники и проверьте, чтобы они были отключены."

Кредит: RevDrStrangelove на https://www.reddit.com/r/LifeProTips/comments/369k76/lpt_request_automaticly_mute_laptop_after_headset/

0
ответ дан 25 May 2018 в 11:41

Для 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
0
ответ дан 25 May 2018 в 11:41

Если у вас есть проблемы с перехватом событий в /etc/acpi/handler.sh, см. мой ответ. Это также коды устройств как Node 0x16.

0
ответ дан 25 May 2018 в 11:41

Другие вопросы по тегам:

Похожие вопросы: