如何在 HDMI 切換後保持 Linux Mint 音量媒體鍵和托盤音量控制正常運作

如何在 HDMI 切換後保持 Linux Mint 音量媒體鍵和托盤音量控制正常運作

通常,在 Acer Aspire E15 筆記型電腦上最近全新安裝 Linux Mint 19.3 x64 MATE 後,媒體鍵(使用內建鍵盤上的 Fn+箭頭鍵,或外部鍵盤上的專用鍵)可以很好地更改音量:彈出一個模式,顯示目前音量級別,並在不調整音量一段時間後消失。此外,當我拖曳滑桿時,預設音量控制托盤圖示會影響相同的音量等級。

現在,有時我們會插入具有內建揚聲器的 HDMI 設備,並希望音訊通過揚聲器。通常,軟體音訊來源(例如瀏覽器)已經打開,這是我發現將其輸出切換到 HDMI 的唯一方法沒有必須重新啟動瀏覽器,才能進入預設的聲音小程式:

聲音首選項小程式顯示已啟用類比立體聲雙工,已選擇並停用 HDMI

...並將類比輸出設為關閉,將 HDMI 輸出設為 HDMI。

問題是,一旦我完成了此操作(或相反 - 從 HDMI 開始,然後切換回模擬立體聲),媒體鍵就不再對音量水平產生影響。 (但他們仍然會彈出一個顯示等級變化的視窗...它實際上並不會影響聽到的內容! )

此外,音量控制托盤小程式不再對聽到的內容產生影響。滑桿在視覺上仍然有效,但奇怪的是,似乎已經獨立於媒體鍵產生的彈出視窗。然後,托盤小程式通常會完全消失(我猜是崩潰了。)

此時,更改音量的唯一(基於 GUI)方法是打開上圖所示的聲音小程序,然後從那裡的滑桿進行調整。

我的主要問題是,按照所述切換音訊輸出後如何讓它們繼續工作?

或者,如果碰巧有一種方法可以透過使用與強制音訊輸出變更所描述的方法不同的方法來避免此問題,那麼這也將是一個受歡迎的答案。

答案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

設定耳機或藍牙耳機時也會出現相同的問題。嘗試重啟聲音:

pulseaudio --kill

pulseaudio -D

相關內容