LINUX.ORG.RU

Переключать вывод pulseaudio хоткеями

 , ,


1

1

Есть у меня встроенная в мать звуковая карта, и есть встроенная в видеокарту, по HDMI. В pulseaudio в трее можно это переключать, но очень долго. Как можно упростить задачу переключения вывода звука? Идеально было бы горячими клавишами.

Вот скриншот этой переключалки. http://hkar.ru/uqzP


Ну в теории наверное где-нибудь можно найти описания d-bus интерфейсов для gnome-settings-daemon (который, как я подозреваю, этим занимается), после чего накатать скриптик который будет эти интерфейсы вручную дергать, после чего повесить этот скриптик на хоткей.

morse ★★★★★
()
Ответ на: комментарий от morse

а как точно определить что этим занимается? потому что кроме gnome-settings-daemon в системе есть еще cinnamon-settings-daemon

emostar
() автор топика

Сделать по умолчанию:

$ pacmd list-sinks|grep 'name: <'|sed 's/\s*name: <\(.*\)>/\1/'                                   
alsa_output.usb-Logitech_Logitech_Wireless_Headset_000D44D39CAA-00-Headset.analog-stereo
alsa_output.pci-0000_00_1b.0.analog-stereo
$ pacmd set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
Уже запущенные приложения:
 for x in `pacmd list-sink-inputs |grep 'index: '|sed 's/\s*index: //'`;do; pacmd move-sink-input $x alsa_output.pci-0000_00_1b.0.analog-stereo;done
Ну и обернуть в скрипт (текущий сток по утолчанию отмечен звездочкой в pacmd list-sinks), забиндить скрипт в xbindkeys.

liaonau
()
Ответ на: комментарий от liaonau

Если карты всего две, то что-то вроде:

#!/bin/bash
SINK=pacmd list-sinks|grep '[^*] index'|sed 's/.*: //'
pacmd set-default-sink ${SINK}
for x in $(pacmd list-sink-inputs |grep 'index: '|sed 's/\s*index: //');do; pacmd move-sink-input $x ${SINK};done

liaonau
()
Ответ на: комментарий от liaonau

./pulse.sh: строка 2: list-sinks: команда не найдена

You need to specify a sink either by its name or its index.

./pulse.sh: строка 4: ошибка синтаксиса около неожиданной лексемы `;'

./pulse.sh: строка 4: `for x in $(pacmd list-sink-inputs |grep 'index: '|sed 's/\s*index: //');do; pacmd move-sink-input $x ${SINK};done'

видимо оно не понимает что pacmd list-sinks это одна команда

emostar
() автор топика
Ответ на: комментарий от liaonau

исправил всё, теперь пишет

You need to specify a sink either by its name or its index.
You need to specify a sink.

первый раз имею дело с pacmd и честно не очень понимаю как это работает)

emostar
() автор топика
Ответ на: комментарий от emostar

Вот так у меня работает в bash. (Я в zsh набирал сначала, bash выдал ошибку)

#!/bin/bash
SINK=$(pacmd list-sinks|grep '[^*] index'|sed 's/.*: //')
pacmd set-default-sink ${SINK}
pacmd list-sink-inputs |grep 'index: '|sed 's/\s*index: //'|while read x
do
    pacmd move-sink-input "$x" "${SINK}";
done

liaonau
()
Ответ на: комментарий от liaonau

о, круто, работает идеально, спасибо))) осталось повешать хоткей и все)

emostar
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.