建立一個 PipeWire 輸出切換腳本,用於行動活動音訊
使用 pactl 腳本在指定的 PipeWire 輸出之間切換 Debian 音頻,腳本會更新預設接收器並重新路由正在播放的串流。
對於 Debian 系統,可以pactl使用 PipeWire 的 PulseAudio 相容伺服器來實現簡單的音訊切換。以下腳本會在兩個已命名的輸出之間切換,設定新的預設輸出,並切換已開啟的播放串流。請將範例輸出名稱替換為您機器上顯示的實際名稱。
PipeWire 的pipewire-pulse元件提供了一個與 PulseAudio 相容的伺服器,因此pactl可以使用諸如 PulseAudio 之類的標準工具來控制其音訊輸出(sink)。檢查您的客戶端連接到哪個伺服器,並列出可用的音訊輸出:
pactl info | grep -E 'Server Name|Server Version'
pactl list short sinks
在此過程中,伺服器名稱應包含 PipeWire。輸出清單包含符號名稱,例如 `<output> alsa_output.pci-0000_00_1f.3.analog-stereo`。請準確複製兩個名稱:每個輸出對應一個名稱,以便進行切換。這些名稱特定於連接的硬體和音訊設定檔;請勿從範例複製名稱,也不要使用數位輸出索引,因為該索引在會話期間可能會變更。
如果pactl缺少該pulseaudio-utils客戶端,Debian 會在 中提供。僅在需要時安裝該客戶端軟體包。如果pactl info無法連線或報告了不同的音訊伺服器,請先確認 PipeWire 的 PulseAudio 替代方案是否在您的使用者工作階段中運作;切勿盲目安裝或切換音訊伺服器。

建立一個使用者專屬的腳本目錄,並開啟一個新檔案:
mkdir -p ~/.local/bin
nano ~/.local/bin/toggle-audio-output
貼上此腳本,並將 `and` 中的值替換SINK_A為SINK_B您複製的名稱:
#!/usr/bin/env bash
set -euo pipefail
SINK_A='alsa_output.pci-0000_00_1f.3.analog-stereo'
SINK_B='alsa_output.usb-Generic_Headset-00.analog-stereo'
command -v pactl >/dev/null || { echo "pactl is missing" >&2; exit 1; }
server_name=$(pactl info | sed -n 's/^Server Name: //p')
case "$server_name" in
*PipeWire*) ;;
*) echo "pactl is not connected to PipeWire's Pulse server" >&2; exit 1 ;;
esac
sinks=$(pactl list short sinks | awk '{print $2}')
for sink in "$SINK_A" "$SINK_B"; do
if ! grep -Fqx -- "$sink" <<< "$sinks"; then
printf 'Sink not found: %s\n' "$sink" >&2
exit 1
fi
done
current=$(pactl get-default-sink)
if [[ "$current" == "$SINK_A" ]]; then
target=$SINK_B
else
target=$SINK_A
fi
pactl set-default-sink "$target"
while IFS= read -r input_id; do
[[ -n "$input_id" ]] || continue
pactl move-sink-input "$input_id" "$target"
done < <(pactl list short sink-inputs | awk '{print $1}')
printf 'Default output: %s\n' "$target"
該腳本在進行任何更改之前,會檢查兩個輸出是否都存在。如果目前預設輸出是 `<output>`,則會選擇另一個已配置的輸出SINK_A;如果目前預設輸出是另一個接收器,則會從 `<output>` 開始SINK_A。此set-default-sink指令會影響新建立的音訊串流,而循環move-sink-input則用於路由現有的播放音訊串流。如果您只想讓未來的應用程式使用新的預設輸出,請移除循環while;已在播放的音訊串流將保持在原位。請以擁有 PipeWire 會話的相同已登入桌面使用者身分執行此腳本。請勿使用 `<output>` sudo,因為它可能透過不同的使用者執行時間連接,從而無法控制您的桌面音訊。這些操作在 Debian 的pactl 手冊中有詳細說明。

使用 `nano` 儲存Ctrl+O,按 `Ctrl+C` Enter,然後按 `Ctrl+D` 退出Ctrl+X。將腳本標記為可執行檔並運行它:
chmod +x ~/.local/bin/toggle-audio-output
~/.local/bin/toggle-audio-output
它應該會列印出新的預設輸出裝置。檢查伺服器目前的預設輸出裝置和任何正在播放的串流:
pactl get-default-sink
pactl list short sink-inputs
再次運行腳本即可切換回原來的裝置。為了進行實際的聽力測試,請在切換的同時播放一段簡短的音訊樣本,並確認音訊來自所選設備。特定的裝置名稱和顯示行為會因硬體、藍牙連線狀態和目前音訊設定檔而異。


pactl list short sinks。耳機斷開連接或設定檔變更可能導致接收器名稱變更;請更新符合的變數。pactl info確認 PipeWire Pulse 伺服器。 Debian 的pipewire-pulse 軟體包提供了該替代伺服器,而pulseaudio-utils 軟體包則包含pactl客戶端。pactl list short sink-inputs。某些應用程式會重新開啟音訊串流或保留其自身的裝置選擇,因此如果應用程式仍鎖定在某個輸出裝置上,請在該應用程式中選擇「預設」。PipeWire 的Protocol Pulse 文件解釋了為什麼當 PipeWire 是活動伺服器時,PulseAudio 命令列用戶端可以控制 PipeWire pipewire-pulse。此腳本利用了該相容層;它不會配置硬體配置文件,也不會保證斷開連接的設備可用。
使用 pactl 腳本在指定的 PipeWire 輸出之間切換 Debian 音頻,腳本會更新預設接收器並重新路由正在播放的串流。
選擇正確的輸入來源,使用免持音訊設定文件,並檢查 Ubuntu 的 PipeWire 路由,即可使您的藍牙耳機麥克風正常運作。
了解為什麼 Flatpak 應用可能會忽略 Ubuntu 24.04 GTK 主題,並按照安全步驟檢查主題擴充、刷新 Flatpak 應用程式以及診斷入口網站問題。
Install Ubuntu 24.04 alongside Windows 11 with BitLocker safely. Compare separate-drive and shared-drive paths, recovery keys, partitioning, and boot checks.
診斷 Ubuntu 核心更新後 NVIDIA 驅動程式故障。檢查 DKMS 和安全啟動,重建匹配的模組,註冊 MOK,並驗證修復效果。
修復 Ubuntu 24.04 系統掛起後 Wi-Fi 斷開的問題,檢查 NetworkManager、無線電模組、更新、省電模式和驅動程序,然後驗證每次恢復操作。
了解為什麼 tracker-miner-fs-3 在 Ubuntu GNOME 中佔用大量 CPU,以及如何檢查索引、排除資料夾、更新 Ubuntu 或安全地重建搜尋索引。
透過檢查啟動模式、EFI 系統分割區、GRUB 檔案和韌體啟動順序來修復 Debian 的 UEFI 啟動錯誤,而無需先重新安裝 Debian。
遇到 Windows 11 更新錯誤 0x800f0922?了解已驗證的有效解決方法,快速解決此常見問題。逐步指南,幫助您輕鬆完成更新,告別煩惱。
遇到 Windows 11 系統還原錯誤 0x80070005 ?我們提供經過驗證的分步解決方案,幫助您輕鬆修復訪問被拒絕問題,並順利恢復系統。無需任何技術知識!