Горячие клавиши для переключения между звуковыми устройствами

Как следует из названия, есть ли способ сопоставить горячие клавиши для переключения туда, куда направляется звук? Я хочу, чтобы сделать ctrl + page up, чтобы переключиться на звуковую карту USB, и ctrl + page down, чтобы переключиться на встроенную на моей материнской плате. Таким образом, я мог быстро переключаться между использованием наушников и динамика. Я знаю, что могу установить выходной приемник по умолчанию с pulseaudio, но для меня это кажется очень странным. Кажется, что независимо от того, что я делаю, звук направляется на USB-ЦАП, пока он включен. Я попытался использовать pacmd move-sink-input, но в нем просто говорится, что «с этим индексом не найден сток», хотя я дал ему правильное число в соответствии со списком-приемниками pacmd.

0
задан 8 May 2016 в 16:13

1 ответ

Я наконец понял это! Вероятно, вам потребуется изменить часть «grep -v» в строках 3 и 4 в зависимости от ваших приемников (и использовать egrep -v «sink1 | sink2 | sink3», чтобы исключить несколько приемников). Чтобы запустить скрипт: bash (не sh) / path / to / script [-headphones, -speaker]. Я установил пользовательские привязки клавиш в меню настроек, которые запускают скрипт с разными аргументами.

Код:

#!/bin/bash

headphonesIndex=$(pacmd list-sinks | grep -v "usb" | grep -B 1 "name:" | tr -d "[[:space:]]" | cut -c 7)
speakerIndex=$(pacmd list-sinks | grep -v "pci" | grep -B 1 "name:" | tr -d "[[:space:]]" | cut -c 7)

if [ "$1" = "-headphones" ]; then
    newOutput="headphones"
    newOutputIndex=$headphonesIndex
elif [ "$1" = "-speaker" ]; then
    newOutputIndex=$speakerIndex
else
    echo "Invalid argument. Valid arguments are \"-headphones\" and \"-speaker\"."
    exit
fi

playbackStreams=$(pacmd list-sink-inputs | grep "index" | cut -c 12-)
readarray -t playbackStreams <<<"$playbackStreams"

if [ "$playbackStreams" = "" ]; then
    pacmd set-default-sink $newOutputIndex
else
    for stream in "${playbackStreams[@]}"
    do
        pacmd move-sink-input $stream $newOutputIndex
    done
    pacmd set-default-sink $newOutputIndex
fi

Pastebin: http://pastebin.com/Ah3kdiei

Загрузить: http://pastebin.com / загрузки / Ah3kdiei

0
ответ дан 8 May 2016 в 16:13

Другие вопросы по тегам:

Похожие вопросы: