Zbuduj skrypt przełączający wyjście PipeWire, który przenosi aktywny dźwięk

Aby dokonać niewielkiego przełączenia dźwięku w Debianie, skorzystaj pactlz serwera PipeWire zgodnego z PulseAudio. Poniższy skrypt przełącza między dwoma nazwanymi wyjściami, ustawia nowe domyślne ustawienia i przenosi otwarte już strumienie odtwarzania. Zastąp przykładowe nazwy ujść dokładnymi nazwami wyświetlanymi na Twoim komputerze.

1. Potwierdź serwer PipeWire Pulse i znajdź swoje wyjścia

Komponent PipeWire pipewire-pulsezapewnia serwer kompatybilny z PulseAudio, dzięki czemu standardowe narzędzia, takie jak np. , pactlmogą kontrolować jego odbiorniki (wyjścia audio). Sprawdź, do którego serwera dociera Twój klient i wyświetl dostępne odbiorniki:

pactl info | grep -E 'Server Name|Server Version'
pactl list short sinks

W tej procedurze nazwa serwera powinna zawierać nazwę PipeWire. Lista ujść zawiera nazwy symboliczne, takie jak alsa_output.pci-0000_00_1f.3.analog-stereo. Skopiuj dokładnie dwie nazwy: po jednej dla każdego wyjścia, między którym chcesz się przełączać. Nazwy te są specyficzne dla podłączonego sprzętu i profilu audio; nie kopiuj nazw z przykładu ani nie używaj numerycznego indeksu ujścia, który może się zmieniać w trakcie sesji.

Jeśli pactlbrakuje, Debian udostępnia go w pulseaudio-utils. Zainstaluj ten pakiet klienta tylko w razie potrzeby. Jeśli pactl infonie możesz się połączyć lub zgłasza inny serwer dźwięku, najpierw sprawdź, czy zamiennik PulseAudio firmy PipeWire jest uruchomiony w Twojej sesji użytkownika; nie instaluj ani nie zmieniaj serwerów audio bezmyślnie.

Terminal Debiana pokazujący informacje pactl identyfikujące PipeWire i listę krótkich odbiorników pactl z nazwami głośników i słuchawek
Przed wypełnieniem skryptu przełączającego skopiuj dokładne nazwy symbolicznych ujść z listy wyjść na żywo.

2. Utwórz skrypt przełączający

Utwórz katalog skryptów dla każdego użytkownika i otwórz nowy plik:

mkdir -p ~/.local/bin
nano ~/.local/bin/toggle-audio-output

Wklej ten skrypt, zastępując obie wartości w SINK_Ai SINK_Bnazwami, które skopiowałeś:

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

Skrypt sprawdza obecność obu wyjść przed wprowadzeniem jakichkolwiek zmian. Wybiera drugie skonfigurowane wyjście, gdy bieżącym ustawieniem domyślnym jest SINK_A; jeśli bieżącym ustawieniem domyślnym jest inny odbiornik, rozpoczyna od SINK_A. set-default-sinkPolecenie wpływa na nowe strumienie, podczas gdy pętla służy move-sink-inputrównież do kierowania istniejących strumieni odtwarzania. Jeśli chcesz, aby przyszłe aplikacje korzystały tylko z nowego ustawienia domyślnego, usuń whilepętlę; strumienie już odtwarzane pozostaną na swoim miejscu. Uruchom ten skrypt jako ten sam zalogowany użytkownik pulpitu, który jest właścicielem sesji PipeWire. Nie używaj sudo, ponieważ może on łączyć się przez inne środowisko uruchomieniowe użytkownika i nie sterować dźwiękiem pulpitu. Operacje te są udokumentowane w podręczniku pactl systemu Debian .

Edytor Nano pokazujący dwie zmienne odbiorcze w skrypcie przełączania wyjścia audio
Ustaw każdą zmienną na jedną z nazw odbiorników zgłoszonych przez pactl w tej sesji Debiana.

3. Zapisz, uruchom i zweryfikuj przełącznik

Zapisz w Nano za pomocą Ctrl+O, naciśnij Enter, a następnie wyjdź za pomocą Ctrl+X. Zaznacz skrypt jako plik wykonywalny i uruchom go:

chmod +x ~/.local/bin/toggle-audio-output
~/.local/bin/toggle-audio-output

Powinien wydrukować nowy domyślny odpływ. Sprawdź aktualne ustawienia domyślne serwera i wszystkie aktywne strumienie odtwarzania:

pactl get-default-sink
pactl list short sink-inputs

Uruchom skrypt ponownie, aby przełączyć się z powrotem. Aby sprawdzić słyszalność, odtwórz krótką próbkę dźwięku podczas przełączania i upewnij się, że pochodzi ona z wybranego urządzenia. Dokładne nazwy urządzeń i sposób wyświetlania różnią się w zależności od sprzętu, stanu połączenia Bluetooth i aktywnych profili audio.

Terminal Debiana pokazujący skrypt przełączający, który wybiera zestaw słuchawkowy USB jako domyślne wyjście
Skrypt raportuje, która nazwa wyjścia stała się nową wartością domyślną.
Weryfikacja terminala pokazująca polecenie pactl get-default-sink zwracające nazwę zestawu słuchawkowego i listę strumieni odtwarzania
Potwierdź domyślny odpływ i sprawdź, czy aktywny strumień jest kierowany do wybranego wyjścia.

Gdy skrypt nie przełącza dźwięku

  • „Nie znaleziono odbiornika”: uruchom pactl list short sinksponownie. Odłączony zestaw słuchawkowy lub zmieniony profil mogły zmienić nazwę odbiornika; zaktualizuj pasującą zmienną.
  • Nie można nawiązać połączenia: sprawdź, czy usługi użytkownika PipeWire są uruchomione i czy identyfikują serwer PipeWire Pulse. Pakiet pipewire-pulsepactl info Debiana zapewnia serwer zastępczy, natomiast pulseaudio-utils zawiera klienta.pactl
  • Nowe audio się porusza, ale bieżąca aplikacja nie: uruchom ponownie skrypt, gdy strumień jest widoczny w pactl list short sink-inputs. Niektóre aplikacje ponownie otwierają strumienie lub zachowują własny wybór urządzenia, więc wybierz „Domyślne” w tej aplikacji, jeśli pozostaje przypięte do wyjścia.

Dokumentacja protokołu Pulse firmy PipeWire wyjaśnia, dlaczego klienci wiersza poleceń PulseAudio mogą sterować PipeWire, gdy pipewire-pulsejest aktywnym serwerem. Ten skrypt korzysta z tej warstwy kompatybilności; nie konfiguruje profili sprzętowych ani nie gwarantuje, że odłączone urządzenie będzie dostępne.

Zostaw komentarz

Zbuduj skrypt przełączający wyjście PipeWire, który przenosi aktywny dźwięk

Zbuduj skrypt przełączający wyjście PipeWire, który przenosi aktywny dźwięk

Przełączaj dźwięk Debiana pomiędzy nazwanymi wyjściami PipeWire za pomocą skryptu pactl, który aktualizuje domyślny odbiornik i przekierowuje strumienie już odtwarzane.

Przywracanie wejścia mikrofonu zestawu słuchawkowego Bluetooth w systemie Ubuntu 24.04

Przywracanie wejścia mikrofonu zestawu słuchawkowego Bluetooth w systemie Ubuntu 24.04

Aby uruchomić mikrofon zestawu słuchawkowego Bluetooth, wybierz odpowiednie wejście, użyj profilu audio dla zestawu głośnomówiącego i sprawdź trasę PipeWire w Ubuntu.

Napraw aplikacje Flatpak, które nie respektują motywów GTK w Ubuntu 24.04

Napraw aplikacje Flatpak, które nie respektują motywów GTK w Ubuntu 24.04

Dowiedz się, dlaczego aplikacje Flatpak mogą ignorować motywy Ubuntu 24.04 GTK, i wykonaj bezpieczne czynności, aby sprawdzić rozszerzenia motywów, odświeżyć aplikacje Flatpak i zdiagnozować problemy z portalem.

How to Dual-Boot Ubuntu 24.04 and Windows 11 With BitLocker Enabled

How to Dual-Boot Ubuntu 24.04 and Windows 11 With BitLocker Enabled

Install Ubuntu 24.04 alongside Windows 11 with BitLocker safely. Compare separate-drive and shared-drive paths, recovery keys, partitioning, and boot checks.

Jak naprawić problem braku ładowania sterowników Nvidia po aktualizacji jądra w systemie Ubuntu

Jak naprawić problem braku ładowania sterowników Nvidia po aktualizacji jądra w systemie Ubuntu

Diagnozuj awarie sterowników NVIDIA po aktualizacji jądra Ubuntu. Sprawdź DKMS i Secure Boot, przebuduj odpowiedni moduł, zarejestruj MOK i zweryfikuj poprawkę.

Jak naprawić rozłączanie Wi-Fi w Ubuntu 24.04 po zawieszeniu

Jak naprawić rozłączanie Wi-Fi w Ubuntu 24.04 po zawieszeniu

Napraw zrywanie połączenia Wi-Fi w systemie Ubuntu 24.04 po wstrzymaniu, sprawdzając NetworkManager, blokady radiowe, aktualizacje, oszczędzanie energii i sterowniki, a następnie weryfikując każde wznowienie.

Napraw wysokie użycie procesora przez Tracker-Miner-3 w Ubuntu GNOME

Napraw wysokie użycie procesora przez Tracker-Miner-3 w Ubuntu GNOME

Dowiedz się, dlaczego tracker-miner-fs-3 wykorzystuje dużą ilość procesora w systemie Ubuntu GNOME oraz jak sprawdzić indeksowanie, wykluczyć foldery, zaktualizować system Ubuntu lub bezpiecznie odbudować indeks wyszukiwania.

Napraw błąd „Nie znaleziono urządzenia startowego” po zainstalowaniu Debiana na UEFI

Napraw błąd „Nie znaleziono urządzenia startowego” po zainstalowaniu Debiana na UEFI

Napraw błąd rozruchu UEFI w systemie Debian, sprawdzając tryb rozruchu, partycję systemową EFI, pliki GRUB i kolejność rozruchu oprogramowania sprzętowego — bez konieczności wcześniejszej ponownej instalacji systemu Debian.

Jak skonfigurować połączenie Wi-Fi 7 w systemie Windows 11

Jak skonfigurować połączenie Wi-Fi 7 w systemie Windows 11

Dowiedz się, jak bezproblemowo skonfigurować Wi-Fi 7 w systemie Windows 11, aby uzyskać ultraszybki internet. Instrukcje krok po kroku, wskazówki i rozwiązania problemów, które zmaksymalizują prędkość i niezawodność połączenia.

Rozwiązywanie problemów z błędami Java Web Start w systemie Windows 11

Rozwiązywanie problemów z błędami Java Web Start w systemie Windows 11

Masz problemy z błędami Java Web Start w systemie Windows 11? Ten kompleksowy przewodnik przeprowadzi Cię przez typowe problemy, krok po kroku je rozwiąże i podpowie, jak sprawić, by Twoje aplikacje działały płynnie i bezproblemowo. Odkryj sprawdzone rozwiązania już dziś.