LINUX.ORG.RU

Управление громкостью с клавиатуры для нескольких устройств

 , ,


0

1

У меня несколько устройств для вывода звука: встроенные динамики монитора, которые получают звук по HDMI с видеокарты, наушники, подключенные к звуковому модулю компа, и пару дней назад я еще подключил Bluetooth-динамик.
Все это хозяйство прекрасно работает средствами Pulseaudio, управляю я выводом звука с помощью прекрасного апплета в KDE 5, но мне очень не хватает управления громкостью с клавиатуры для каждого устройства. У меня в клавиатуре есть мультимедийные клавиши, но они управляют громкостью только для одного «устройства по умолчанию». Я не знаю, какое устройство по умолчанию у меня в данный момент, я постоянно их переключаю, и мне бы хотелось иметь разные клавиши для регулировки громкости для всех 3 устройств. Например:
1. ctrl+вверх(вниз) - динамики монитора
2. super+вверх(вниз) - наушники
3. alt+вверх(вниз) - blutooth-динамик
Можно ли как-нибудь этого добиться? Вот здесь я нашел, как можно управлять громкостью из консоли, в принципе можно понаделать bash-скриптов. Но я не знаю, как запуск bash-скрипта можно назначить на определенное сочетание клавиш. Можете подсказать, как это сделать, или может быть есть какой-нибудь другой способ?

★★★★★

апуск bash-скрипта можно назначить на определенное сочетание клавиш

параметры системы - комбинации клавиш - специальные действия - пкм - новый - глобальная комбинация клавиш - команда или адрес. Даешь название, во вкладке активация комбинацию назначаешь, в действие скрипт.

Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 2)
Ответ на: комментарий от Behem0th

Спасибо! Надеюсь, что поможет, но я обнаружил еще одну проблему. Дело в том, что мой bluetooth-динамик при каждом подключении имеет разный индекс sink. Т.е не запрограммируешь его изменение громкости через такой скрипт:

pactl set-sink-volume <sink_index> +5%
Вот подключил я его, он отобразился под индексом 5. Отключил его, подключил снова - он уже 6-й.
Может можно как-то обратиться к нему не по индексу, а по имени?

Rinaldus ★★★★★
() автор топика
Последнее исправление: Rinaldus (всего исправлений: 1)
Ответ на: комментарий от Rinaldus

Может можно как-то обратиться к нему не по индексу, а по имени?

Ты манул по pactl читал? Прочитай ещё раз про set-sink-volume.

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

Я к сожалению не разбираюсь в пульсаудио. Для себя я настроил в стандартном микшере meta+m - мут микрофона, ctrl+m мут звука. Поддерживаю идею выше с грепом индекса и подстановкой.

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

Получилось, все корректно работает. Распишу все подробно, может кому-то понадобится:

#!/bin/bash

pactl set-sink-mute $1 false ; pactl set-sink-volume $1 +5%
Соответственно, для уменьшения громкости скрипт с -5%. И еще один скрипт для mute/unmute:
#!/bin/bash

pactl set-sink-mute $1 toggle
В качестве аргумента к этим скриптам можно прописать имя звукового устройства. Индекс необязательно, так что грепать ничего не нужно. Имена устройств можно посмотреть с помощью команды «pactl list sinks short». Они уникальны и не меняются при подключении/отключении. Например, у меня вот такие:
rinaldus@home ~ $ pactl list sinks short
0	alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1 module-alsa-card.c	s16le 2-канальный 4410	RUNNING
1	alsa_output.pci-0000_00_14.2.analog-stereo	module-alsa-card.c	s16le 2-канальный 4410	SUSPENDED
2	bluez_sink.40_EF_4C_31_5C_9C	module-bluez5-device.c	s16le 2-канальный 4410	RUNNING
В качестве команды для сочетания клавиш в KDE вот такой синтаксис:
bash "путь_к_скрипту" "имя_устройства"

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