Как сохранить работоспособность клавиш управления громкостью мультимедиа и регулятора громкости в трее Linux Mint после переключения HDMI

Как сохранить работоспособность клавиш управления громкостью мультимедиа и регулятора громкости в трее Linux Mint после переключения HDMI

Обычно после недавней свежей установки Linux Mint 19.3 x64 MATE на ноутбуке Acer Aspire E15 клавиши мультимедиа (используя Fn+клавиши со стрелками на встроенной клавиатуре или специальные клавиши на внешней клавиатуре) работают нормально для изменения громкости: появляется модальное окно, показывающее текущий уровень громкости, и исчезает через мгновение, если громкость не регулируется. Кроме того, значок управления громкостью по умолчанию в трее влияет на тот же уровень громкости, когда я перетаскиваю ползунок.

Теперь, иногда мы подключаем HDMI-устройство со встроенными динамиками и хотим, чтобы звук шел через динамики. Часто программный источник звука (браузер, например) уже открыт, и единственный способ, который я нашел, переключить его выход на HDMIбезнеобходимость перезапустить браузер, чтобы перейти в апплет Звуки по умолчанию:

Апплет настроек звука, показывающий включенный аналоговый стереодуплекс с выбранным и отключенным HDMI

...и установите аналоговый выход в положение «Выкл.», а выход HDMI — в положение «HDMI».

Проблема в том, что как только я это сделал (или наоборот — начал с HDMI, а затем переключился обратно на аналоговое стерео), клавиши управления мультимедиа больше не влияют на уровень громкости. (Но ониделать(Все равно сделайте всплывающее окно, показывающее изменение уровня... просто это на самом деле не влияет на то, что слышно!)

Также апплет управления громкостью в трее больше не влияет на то, что слышно. Ползунок визуально все еще работает, но, как ни странно, он, похоже, стал независимым от всплывающего окна, которое вызывают клавиши мультимедиа. Затем, часто апплет в трее просто полностью исчезает (вылетает, я полагаю).

В этот момент единственный (на основе графического интерфейса) способ изменить громкость — открыть апплет «Звуки», изображенный выше, и отрегулировать громкость с помощью ползунка.

Мой главный вопрос: как мне сохранить их работоспособность после переключения аудиовыходов, как описано?

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

решение1

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

Создайте где-нибудь скрипт следующего содержания:

#!/bin/bash
CURVOL=`pacmd list-sinks | grep 'volume: [^0-9]' | sed 's/.* \([0-9]\{1,3\}\)\%.*/\1/'`
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
VOLCHANGE=`cat $DIR/volume-increment`
if (($CURVOL > (100 - $VOLCHANGE))) ; then
  pactl set-sink-volume @DEFAULT_SINK@ 100% ;
else 
  pactl set-sink-volume @DEFAULT_SINK@ +$VOLCHANGE% ;
fi

В том же каталоге создайте файл с именем volume-increment, который содержит абсолютный процентный объем, на который вы хотите изменять каждый раз при активации. Например, у вас может быть файл, состоящий из одной строки с символом 5в ней.

Похожий скрипт можно использовать для уменьшения громкости:

#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
VOLCHANGE=`cat $DIR/volume-increment`
pactl set-sink-volume @DEFAULT_SINK@ -$VOLCHANGE% ;

Затем откройте апплет «Сочетания клавиш», отключите исходные сочетания клавиш управления громкостью и добавьте пользовательские, указывающие на указанные выше скрипты.

Причина, по которой «увеличение громкости» немного длиннее, заключается в том, что оно ограничено 100%. Без этого вы сможете установить слишком высокую громкость (выше 140% ограничения апплета «Звук»), что может привести к поломке вашего оборудования (или, по крайней мере, вашего слуха).

(Это тоже можно было бы переработать, но работает достаточно хорошо.)

решение2

Та же проблема при установке наушников или гарнитуры Bluetooth. Попробуйте перезапустить звук:

pulseaudio --kill

pulseaudio -D

Связанный контент