Форум программистов, компьютерный форум, киберфорум
Luca Brasi
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Переключение между колонками и наушниками

Запись от Luca Brasi размещена 13.02.2021 в 01:49

В прошлом я имел следующую компоновку: в передний порт системника были воткнуты наушники, а на динамики монитора Philips 234E транслировался звук через HDMI. Если оно и играло, то играло всё вместе (и наушники, и динамики монитора). Использовал я Kubuntu 18.04. Вообщем начал я копать в сторону Pulse Audio и нашел всякие интересные вещи позволяющие переключать устройства, чтобы не лезть графический менеджер пульса для переключения.
Нажмите на изображение для увеличения
Название: Untitled 1.jpg
Просмотров: 56
Размер:	14.8 Кб
ID:	6796
Отсалось только написать скрипт, а потом забиндить его через xbindkeys
По сути всё свелось к постоянному переходу между источниками вывода звука
Bash
1
2
3
pactl list sinks short
#0       alsa_output.pci-0000_26_00.1.hdmi-stereo-extra1 module-alsa-card.c      s16le 2ch 44100Hz       SUSPENDED
#1       alsa_output.pci-0000_28_00.3.analog-stereo      module-alsa-card.c      s16le 2ch 44100Hz       RUNNING
Более того, мало между ними переходить, надо еще перенаправлять уже запущенные звуковые потоки. Но ничего, есть уже живой скрипт.

Потом в один день у меня появился монитор без динамиков. А динамики шли отдельное поставкой. То есть стало, что спереди у меня наушники, а сзади динамики.
Если вызвать все доступные устройства, то можно увидеть где то в этом списке аналоговый стерео-выход.
Bash
1
pacmd list-sinks
Но самое интересное - это порты. То есть колонки и наушники.
pacmd list-sinks

2 sink(s) available.
index: 0 - упущен

* index: 1
....
ports:

analog-output-lineout: Line Out (priority 9900, latency offset 0 usec, available: no)

properties:

analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: yes)
properties:
device.icon_name = "audio-headphones"
active port: <analog-output-lineout>

То есть, зная активный порт, и оговорив устройства заранее - мы можем переключаться между имеющимися портами, выбирая опоситный порт от текущего активного. А если забиндить всё это дело на Crtl + Shift + Arrow UP, то станет вооще очень комфортно.

Итого, указываем полное имя устройств в списке devices:
Python
1
2
3
4
5
6
    devices = []
    devices.append(Device("alsa_output.pci-0000_28_00.3.analog-stereo",
                  "analog-output-lineout"))
    
    devices.append(Device("alsa_output.pci-0000_28_00.3.analog-stereo",
                  "analog-output-headphones"))
Полный листинг скрипта лежит тут.
Ну и немного про конфиг xbindkeys. Так выглядит вызов скрипта, посредством кнопок Crtl + Shift + Arrow UP
Bash
1
2
3
4
5
6
7
# Examples of commands:
 
"xbindkeys_show" 
  control+shift + q
 
"python3 /tmp/audio_port_switcher.py"   
    m:0x5 + c:111
Размещено в Linux
Просмотров 153 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.