Изменено: - сервис автоматически применяет обновлённые настройки без перезапуска - графический интерфейс сразу отображает выбранный режим - настройки сохраняются без риска повреждения при фоновом чтении Исправлено: - чрезмерная загрузка процессора при ожидании команд интерфейса - обработка команд после периода бездействия - использование пользовательского пути к конфигурации
LGCompanion
Автоматическое переключение звукового профиля для USB-гарнитур на Linux с PipeWire.
Из коробки поддерживаются популярные гарнитуры SteelSeries Arctis (7, 7+, Pro и др.), но программа легко настраивается под любое HID-совместимое USB-аудиоустройство.
- Наушники включены и связались с донглом → виртуальный объёмный звук 7.1 через HRTF.
- Наушники выключены → прямой стерео-выход с донгла.
Теперь это полноценная программа с CLI и отдельной Qt GUI. Устройства настраиваются через конфиг, а не захардкожены.
Что внутри
| Файл/папка | Назначение |
|---|---|
src/lgcompanion/ |
Ядро: конфиг, HID, PipeWire, движок. |
src/lgcompanion/cli.py |
CLI: демон, диагностика, настройки, сервис. |
src/lgcompanion/gui/ |
Qt GUI (PySide6) с треем и редактором устройств. |
src/lgcompanion/data/virtual-surround-7.1.conf.template |
Шаблон конфига PipeWire filter-chain. |
src/lgcompanion/data/icon.svg |
Иконка приложения. |
install/ |
Шаблоны .desktop и systemd user .service. |
install.sh |
Установка пакета, PipeWire-конфига и сервиса. |
Быстрая установка
cd ~/Projects/lgcompanion
./install.sh
systemctl --user restart pipewire pipewire-pulse wireplumber
systemctl --user start lgcompanion.service
CLI
# Запуск демона
lgcompanion run -v
lgcompanion run --once
lgcompanion run --force-surround
lgcompanion run --force-stereo
# Диагностика и список устройств
lgcompanion diagnose
lgcompanion list-hid
# Управление конфигом
lgcompanion config show
lgcompanion config add-device --name "Arctis 7+" --vid 0x1038 --pid 0x2206 --iface 3
lgcompanion config remove-device --name "Arctis 7+"
lgcompanion config set-sinks --surround effect_input.lgcompanion-virtual-surround --stereo alsa_output...
lgcompanion config set-general --poll-interval 2.0 --log-level debug
# Управление HRIR
lgcompanion hrir add ~/Downloads/hrir.wav --name "My HRIR"
lgcompanion hrir list
lgcompanion hrir set-default "My HRIR"
# systemd
lgcompanion service install
lgcompanion service uninstall
lgcompanion service status
Конфиг хранится в ~/.config/lgcompanion/config.toml.
Qt GUI
lgcompanion-gui
- Иконка в системном трее.
- Ручное переключение Surround / Stereo / Auto.
- Автообнаружение подключённых наушников и добавление профиля в один клик.
- Окно настроек с редактором профилей устройств.
- Автозапуск при входе в систему.
После ./install.sh в меню приложений появится ярлык LGCompanion (~/.local/share/applications/lgcompanion.desktop).
Как это работает
Программа опрашивает USB-донгл гарнитуры через HID: если устройство отвечает на настроенный запрос (например, 0x06 0x18 для Arctis 7), значит наушники включены и связаны — звук переключается на виртуальный объёмный 7.1 sink. Если ответа нет (таймаут) — наушники выключены, и звук возвращается на прямой стерео-выход донгла.
Профили устройств позволяют задать VID/PID, HID-интерфейс, запрос батареи/статуса и подстроки имени устройства для любой совместимой гарнитуры.
HRIR
Для работы виртуального surround необходим HeSuVi-совместимый 14-канальный WAV (48 кГц). Файл не входит в репозиторий — добавьте его самостоятельно:
lgcompanion hrir add ~/Downloads/hrir.wav --name "My HRIR"
или через GUI: Настройки → HRIR профили → Управление HRIR.
После добавления HRIR перегенерируйте PipeWire-конфиг и перезапустите PipeWire:
./install.sh
systemctl --user restart pipewire pipewire-pulse wireplumber
Можно добавить несколько HRIR и выбрать активный как глобально, так и отдельно для каждого профиля устройства.
Популярные варианты HRIR:
atmos-.wav— Dolby Atmos for Headphonesdts_hpx.wav— DTS Headphone:Xsbx33.wav— Creative SBX Pro Studiogsx+.wav— Sennheiser GSX Binaural 7.1sonic.wav— Windows Sonic