Como manter as teclas de mídia de volume do Linux Mint e o controle de volume da bandeja funcionando após a troca de HDMI

Como manter as teclas de mídia de volume do Linux Mint e o controle de volume da bandeja funcionando após a troca de HDMI

Normalmente, após uma nova instalação recente do Linux Mint 19.3 x64 MATE em um laptop Acer Aspire E15, as teclas de mídia (usando Fn + teclas de seta no teclado integrado ou teclas dedicadas em um teclado externo) funcionam bem para alterar o volume: Um modal aparece mostrando o nível de volume atual e desaparece após um momento sem ajustar o volume. Além disso, o ícone padrão da bandeja de controle de volume afeta o mesmo nível de volume quando arrasto o controle deslizante.

Agora, às vezes conectamos um dispositivo HDMI que possui alto-falantes integrados e queremos que o áudio passe pelos alto-falantes. Muitas vezes a fonte de áudio do software (navegador, por exemplo) já está aberta, e a única maneira que encontrei de mudar sua saída para HDMIsemter que reiniciar o navegador é entrar no miniaplicativo de sons padrão:

Miniaplicativo de preferências de som mostrando duplex estéreo analógico ativado, com HDMI selecionado e desativado

...e defina a saída analógica como Desligada e a saída HDMI como HDMI.

O problema é que, depois de fazer isso (ou vice-versa - comecei com HDMI e depois voltei para estéreo analógico), as teclas de mídia não afetam mais o nível de volume. (Mas elesfazerainda faz um pop-up mostrando uma mudança de nível... isso simplesmente não afeta o que é ouvido!)

Além disso, o miniaplicativo da bandeja de controle de volume não afeta mais o que é ouvido. O controle deslizante ainda funciona visualmente, mas estranhamente parece ter se tornado independente do pop-up produzido pelas teclas de mídia. Então, muitas vezes o miniaplicativo da bandeja simplesmente desaparece completamente (travou, eu acho).

Nesse ponto, a única maneira (baseada em GUI) de alterar o volume é abrir o miniaplicativo Sounds mostrado acima e ajustá-lo no controle deslizante.

Minha principal questão é: como posso mantê-los funcionando depois de trocar as saídas de áudio conforme descrito?

Ou, se houver uma maneira de evitar esse problema usando um método diferente do descrito para forçar uma alteração na saída de áudio, essa também seria uma resposta bem-vinda.

Responder1

O seguinte não é o ideal, pois elimina a bela exibição na tela que mostra o volume atual, mas pelo menos funciona de maneira confiável mesmo depois que o miniaplicativo da bandeja desaparece e os vários controles de volume parecem estar desconectados uns dos outros.

Crie um script em algum lugar com o seguinte:

#!/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

No mesmo diretório, crie um arquivo chamado volume-incrementque tenha o volume percentual absoluto que você gostaria de alterar cada vez que for ativado. Por exemplo, você pode ter um arquivo que consiste em uma linha com o caractere 5nela.

Um script semelhante pode ser usado para diminuir o volume:

#!/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% ;

Em seguida, abra o miniaplicativo Atalhos de teclado, desative os controles de volume originais e adicione os personalizados apontando para os scripts acima.

A razão pela qual o "aumentar o volume" é um pouco mais longo é limitá-lo a 100%. Sem isso, você poderá definir o volume muito alto (acima do limite de 140% do miniaplicativo de som) e talvez danificar seu hardware (ou pelo menos sua audição).

(Isso também poderia ser refatorado, mas funciona bem o suficiente.)

Responder2

O mesmo problema ao definir fones de ouvido ou fone de ouvido bluetooth. Tente reiniciar o som:

pulseaudio --kill

pulseaudio -D

informação relacionada