Наваял на днях утилитку на PyQt4 для отображения текущего состояния микрофона (вкл/выкл запись).
Что мне было нужно:
Во время скайп митингов хочется переключать состояние по горячей клавише. Это решаемо через dbus или amixer + хоткеи вашего DE. Но при этом не видно текущего статуса микрофона. Окно скайп держать на виду не всегда удобно.
Как оно работает:
Помещает в трей иконку с микрофоном. Когда запись отключена, микрфон перечёркнут. Приложение слушает события альзы через pyalsa. Переключать можно помимо описанных выше способов, через dbus интерфейс самого приложения. Примеры команд для переключения:
- CaptureDeviceTray dbus:
qdbus org.kde.capturedevice /CaptureDevice org.kde.CaptureDevice.SwitchState
- kmix dbus:
qdbus org.kde.kmix /Mixer0 org.kde.KMix.setRecordSource Capture:0 [True|False]
- amixer command-line:
amixer sset Capture,0 capture [cap|nocap]
Плюс в том что интерфейс CaptureDeviceTray имеет одну команду switch, что избавляет вас от проверки текущего состояния.
Зависимости:
установленные PyQt4, pyalsa, запущенный dbus.
Установка:
Никакой. Распаковываем куда угодно, запускаем полным путём. Если запускаете через krunner, будет восстановлена при следующем логине.
Настройка:
кладём имя девайса в CaptureDevice.conf. Только один девайс в формате Dev_name:channel#. Имя устройства можно подсмотреть в том-же kmix. У меня там «Capture» и «Capture 2». Соответственно указываю «Capture:0» или «Capture:1». Либо можно посмотреть вывод команды 'amixer scontrols'
В KDE хоткей можно задать в Settings ->
Shortcuts and Guestures. Жмём Edit -> New -> Global
Shortcut -> DBus command. Во вкладке trigger выставляем хоткей, во вкладке Action:
Remote application: org.kde.capturedevice
Remote object: /CaptureDevice
Function: org.kde.CaptureDevice.SwitchState
Arguments: [пусто]
Жмём Call для проверки.
Это моё первое приложение на питоне, и код выглядит достаточно бессвязно. Написал потому что ничего подобного в сети не нашёл. Если кому-то покажется полезным, пользуйтесь на здоровье.