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

Uruchom w tle funkcję przesyłania zdjęć na iPhone'a za pomocą NextCloud

Uruchom w tle funkcję przesyłania zdjęć na iPhone'a za pomocą NextCloud

Przywróć wykrywanie zdjęć w tle, sprawdzając ustawienia przesyłania Nextcloud, uprawnienia iOS, tryb baterii i ograniczenia harmonogramu działania iPhone'a w tle.

Wyraźniejszy tekst w aplikacji ONLYOFFICE Desktop: dostosuj podpowiedzi dotyczące czcionek w systemie Linux

Wyraźniejszy tekst w aplikacji ONLYOFFICE Desktop: dostosuj podpowiedzi dotyczące czcionek w systemie Linux

Porównaj tryby podpowiedzi czcionek ONLYOFFICE, sprawdź powiększenie i dostępność czcionek w systemie Linux oraz zweryfikuj, czy rozmycie jest ograniczone do edytora, czy też ma wpływ na cały pulpit.

Przekształć plik PDF w edytowalny plik DOCX w aplikacji ONLYOFFICE Desktop

Przekształć plik PDF w edytowalny plik DOCX w aplikacji ONLYOFFICE Desktop

Konwertuj plik PDF lokalnie w edytorach ONLYOFFICE Desktop Editors, a następnie sprawdź plik DOCX pod kątem zmian układu, zeskanowanych stron i tekstu wymagającego korekty.

Połącz edytory pulpitu ONLYOFFICE z plikami ownCloud

Dodaj swoje konto ownCloud do ONLYOFFICE Desktop Editors, dowiedz się, co umożliwia to połączenie, i wybierz pomiędzy dostępem bezpośrednim, synchronizacją i edycją w przeglądarce.

Napraw przekroczenia limitu czasu aplikacji mobilnej ONLYOFFICE, sprawdzając adres URL serwera

Napraw przekroczenia limitu czasu aplikacji mobilnej ONLYOFFICE, sprawdzając adres URL serwera

Użyj właściwego portalu lub adresu WebDAV, przetestuj dostępność protokołu HTTPS z telefonu i rozróżnij problemy związane z siecią prywatną, protokołem TLS i logowaniem.

Włącz tworzenie i debugowanie wtyczek pulpitu ONLYOFFICE

Włącz tworzenie i debugowanie wtyczek pulpitu ONLYOFFICE

Zbuduj i przetestuj niestandardową wtyczkę ONLYOFFICE Desktop Editors, zainstaluj jej archiwum .plugin i aktywuj narzędzia programistyczne do debugowania.

Uruchamianie Pythona w programie Calc za pomocą systemu makr pakietu LibreOffice

Uruchamianie Pythona w programie Calc za pomocą systemu makr pakietu LibreOffice

Udostępnij funkcję Pythona w programie Calc, uruchom ją w otwartym arkuszu kalkulacyjnym i rozwiąż problemy z brakującymi makrami lub importami, nie mieszając LibreOffice i systemowego Pythona.

Zabezpiecz wybrany tekst autora hasłem sekcji

Zabezpiecz wybrany tekst autora hasłem sekcji

Zablokuj konkretny fragment, uniemożliwiając jego edycję, jednocześnie zachowując użyteczność reszty dokumentu programu Writer, i dowiedz się, kiedy szyfrowanie plików jest lepszym wyborem.

Uczyń tekst arkusza kalkulacyjnego czytelnym w trybie ciemnym LibreOffice Calc

Uczyń tekst arkusza kalkulacyjnego czytelnym w trybie ciemnym LibreOffice Calc

Napraw trudno widoczny tekst w arkuszu kalkulacyjnym, sprawdzając motyw, kolor czcionki komórek, wypełnienia i formatowanie warunkowe w programie Calc.

LibreOffice Calc wyświetla formuły jako tekst? Przywróć wyniki

LibreOffice Calc wyświetla formuły jako tekst? Przywróć wyniki

Dowiedz się, dlaczego Calc wyświetla tekst formuły zamiast obliczonych wartości, i napraw tryb wyświetlania, komórki w formacie tekstowym, apostrofy i nieaktualne wyniki.