Создайте скрипт переключения вывода PipeWire, который будет управлять активным звуком.

Для небольшого переключения звука в Debian используйте pactlсервер PipeWire, совместимый с PulseAudio. Приведенный ниже скрипт переключает между двумя именованными выходами, устанавливает новый выход по умолчанию и перемещает уже открытые потоки воспроизведения. Замените имена примеров приемников на точные имена, отображаемые на вашей машине.

1. Подтвердите сервер PipeWire Pulse и найдите свои выходные данные.

Компонент PipeWire pipewire-pulseпредоставляет сервер, совместимый с PulseAudio, поэтому стандартные инструменты, такие как, pactlмогут управлять его приемниками (аудиовыходами). Проверьте, к какому серверу обращается ваш клиент, и перечислите доступные приемники:

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

Для этой процедуры в имени сервера должно быть указано PipeWire. Список приемников содержит символические имена, такие как alsa_output.pci-0000_00_1f.3.analog-stereo. Скопируйте точно два имени: по одному для каждого выхода, между которыми вы хотите переключаться. Эти имена специфичны для подключенного оборудования и аудиопрофиля; не копируйте имена из примера и не используйте числовой индекс приемника, который может меняться в течение сеанса.

Если pactlон отсутствует, Debian предоставляет его в pulseaudio-utils. Устанавливайте этот клиентский пакет только при необходимости. Если pactl infoподключение не удается или отображается другой звуковой сервер, сначала убедитесь, что в вашей пользовательской сессии запущена замена PipeWire — PulseAudio; не устанавливайте и не переключайте аудиосерверы вслепую.

Терминал Debian отображает информацию pactl, идентифицирующую PipeWire, и список коротких обработчиков pactl с именами динамиков и наушников.
Перед заполнением скрипта переключения скопируйте точные символические имена приемников из списка выходных данных в реальном времени.

2. Создайте скрипт переключения.

Создайте папку со скриптами для каждого пользователя и откройте новый файл:

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

Вставьте этот скрипт, заменив оба значения в 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"

Перед внесением каких-либо изменений скрипт проверяет наличие обоих выходов. Он выбирает другой настроенный выход, если текущее значение по умолчанию равно SINK_A; если текущее значение по умолчанию — другой приемник, он начинает с SINK_A. set-default-sinkКоманда влияет на новые потоки, а цикл использует move-sink-inputдля маршрутизации существующих потоков воспроизведения. Если вы хотите, чтобы будущие приложения использовали только новое значение по умолчанию, удалите whileцикл; уже воспроизводимые потоки останутся на своих местах. Запускайте этот скрипт от имени того же пользователя рабочего стола, который является владельцем сессии PipeWire. Не используйте , который может подключаться через другую среду выполнения пользователя и не сможет управлять звуком вашего рабочего стола. Эти операции описаны в руководстве по pactlsudo в Debian .

Редактор Nano отображает две переменные-приемника в скрипте toggle-audio-output.
Присвойте каждой переменной одно из имен приемников, указанных pactl в этой сессии Debian.

3. Сохраните, запустите и проверьте переключение.

Сохраните файл в Nano с помощью клавиши Ctrl+O, нажмите Enter, затем выйдите с помощью Ctrl+X. Отметьте исполняемый файл скрипта и запустите его:

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

Должно отобразиться новое значение по умолчанию для приемника. Проверьте текущее значение по умолчанию на сервере и все активные потоки воспроизведения:

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

Запустите скрипт второй раз, чтобы переключиться обратно. Для практической проверки качества звучания воспроизведите короткий аудиофрагмент во время переключения и убедитесь, что он исходит от выбранного устройства. Точные названия устройств и поведение дисплея зависят от аппаратного обеспечения, состояния Bluetooth-соединения и активных аудиопрофилей.

В терминале Debian отображается скрипт переключения, выбирающий USB-гарнитуру в качестве устройства вывода по умолчанию.
В скрипте указывается, какой именованный выходной параметр стал новым параметром по умолчанию.
Проверка терминала показывает, что команда pactl get-default-sink возвращает имя гарнитуры и указанный поток воспроизведения.
Подтвердите выбор приемника по умолчанию и убедитесь, что активный поток направлен на выбранный выход.

Когда в сценарии не происходит переключение звука

  • «Приемник не найден»: запустите pactl list short sinksеще раз. Возможно, из-за отключения гарнитуры или изменения профиля изменилось имя приемника; обновите соответствующую переменную.
  • Не удается подключиться: убедитесь, что службы пользователей PipeWire запущены и pactl infoидентифицируют сервер PipeWire Pulse. Пакет pipewire-pulse в Debian предоставляет этот заменяющий сервер, а pulseaudio-utils включает pactlклиент.
  • Новый аудиопоток перемещается, но текущее приложение остается на месте: перезапустите скрипт, пока этот поток виден в pactl list short sink-inputs. Некоторые приложения повторно открывают потоки или сохраняют свой собственный выбор устройства, поэтому выберите «По умолчанию» в этом приложении, если оно остается привязанным к определенному выходу.

В документации Protocol Pulse для PipeWire объясняется, почему клиенты командной строки PulseAudio могут управлять PipeWire, когда PulseAudio pipewire-pulseявляется активным сервером. Этот скрипт использует этот слой совместимости; он не настраивает аппаратные профили и не гарантирует доступность отключенного устройства.

Оставить комментарий

Создайте скрипт переключения вывода PipeWire, который будет управлять активным звуком.

Создайте скрипт переключения вывода PipeWire, который будет управлять активным звуком.

Переключайте аудиопоток Debian между именованными выходами PipeWire с помощью скрипта pactl, который обновляет приемник по умолчанию и перенаправляет потоки, уже воспроизводимые.

Восстановление входа микрофона Bluetooth-гарнитуры в Ubuntu 24.04

Восстановление входа микрофона Bluetooth-гарнитуры в Ubuntu 24.04

Чтобы микрофон вашей Bluetooth-гарнитуры заработал, выберите правильный вход, используйте профиль громкой связи и проверьте маршрутизацию PipeWire в Ubuntu.

Исправлена ​​ошибка, из-за которой приложения Flatpak не учитывали темы GTK в Ubuntu 24.04.

Исправлена ​​ошибка, из-за которой приложения Flatpak не учитывали темы GTK в Ubuntu 24.04.

Узнайте, почему приложения Flatpak могут игнорировать темы Ubuntu 24.04 GTK, и выполните безопасные действия для проверки расширений тем, обновления приложений Flatpak и диагностики проблем с порталом.

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.

Как исправить проблему с загрузкой драйверов Nvidia после обновления ядра в Ubuntu

Как исправить проблему с загрузкой драйверов Nvidia после обновления ядра в Ubuntu

Диагностика сбоев драйверов NVIDIA после обновления ядра Ubuntu. Проверьте DKMS и Secure Boot, пересоберите соответствующий модуль, зарегистрируйте MOK и проверьте исправление.

Как исправить проблему с отключением Wi-Fi в Ubuntu 24.04 после приостановки работы системы

Как исправить проблему с отключением Wi-Fi в Ubuntu 24.04 после приостановки работы системы

Устраните проблему с обрывами Wi-Fi в Ubuntu 24.04 после приостановки работы, проверив NetworkManager, блокировки радиомодулей, обновления, режим энергосбережения и драйверы, а затем проверьте каждое возобновление работы.

Исправлена ​​ошибка, из-за которой Tracker-Miner-3 сильно нагружал ЦП в Ubuntu GNOME.

Исправлена ​​ошибка, из-за которой Tracker-Miner-3 сильно нагружал ЦП в Ubuntu GNOME.

Узнайте, почему tracker-miner-fs-3 потребляет много ресурсов ЦП в Ubuntu GNOME, а также как проверить индексирование, исключить папки, обновить Ubuntu или безопасно перестроить поисковый индекс.

Исправлена ​​ошибка «Загрузочное устройство не найдено» после установки Debian на UEFI.

Исправлена ​​ошибка «Загрузочное устройство не найдено» после установки Debian на UEFI.

Устраните ошибку загрузки UEFI в Debian, проверив режим загрузки, системный раздел EFI, файлы GRUB и порядок загрузки прошивки — без предварительной переустановки Debian.

Как исправить проблему с процессором хоста инфраструктуры оболочки Windows 11

Как исправить проблему с процессором хоста инфраструктуры оболочки Windows 11

Возникли проблемы с ресурсоемкой работой Shell Infrastructure Host в Windows 11? Узнайте о проверенных пошаговых решениях, которые помогут восстановить бесперебойную работу и вернуть вашему ПК работоспособность, как у нового компьютера. Технические знания не требуются!

Устранение неполадок с отсутствием сигнала DisplayPort в Windows 11

Устранение неполадок с отсутствием сигнала DisplayPort в Windows 11

Возникли проблемы с отсутствием сигнала DisplayPort в Windows 11? Ознакомьтесь с проверенными шагами по устранению неполадок, чтобы быстро и легко восстановить подключение к монитору. Вернитесь к бесперебойной многозадачности без лишних проблем.