32 Commits
Author SHA1 Message Date
xpamych ef81027f65 Исправлена стабильность связи сервиса с графическим интерфейсом
Изменено:
- сервис автоматически применяет обновлённые настройки без перезапуска
- графический интерфейс сразу отображает выбранный режим
- настройки сохраняются без риска повреждения при фоновом чтении

Исправлено:
- чрезмерная загрузка процессора при ожидании команд интерфейса
- обработка команд после периода бездействия
- использование пользовательского пути к конфигурации
2026-10-30 18:55:56 +03:00
xpamych 1d679f6919 Устранено дублирование опроса устройств между сервисом и интерфейсом
Добавлено:
- передача состояния устройств и команд управления между сервисом и графическим интерфейсом
- автоматическое восстановление связи интерфейса с сервисом

Изменено:
- графический интерфейс использует единый запущенный сервис вместо собственного опроса устройств

Исправлено:
- одновременный опрос устройств сервисом и графическим интерфейсом

Удалено:
- отдельный фоновый опрос устройств в графическом интерфейсе
2026-10-27 21:12:35 +03:00
xpamych a30295229e Debounce HID-опроса: sink не переключается от единичного таймаута
Под нагрузкой (игра) interrupt endpoint донгла переполняется
(input irq status -75), и одиночный запрос батареи может не ответить.
Раньше это сразу считалось отключением наушников и дёргало sink
на стерео. Теперь отключение признаётся после MAX_MISSED_POLLS=3
подряд неудачных опросов; единичные таймауты сохраняют состояние.
2026-09-14 22:00:44 +03:00
xpamych 3fc59942e3 Исправлены падения GUI при перерисовке окна настроек
- resizeEvent больше не мутирует grid layout синхронно: перестройка
  откладывается на следующий проход цикла событий с защитой от дублей
- Убраны inline setStyleSheet из set_battery; прозрачный фон бейджа
  батареи перенесён в QSS (обе темы)
- Виджеты перед deleteLater скрываются и отвязываются от родителя,
  чтобы repaint и опрос батареи не трогали умирающие виджеты
- Заодно: менеджер HRIR теперь сохраняет конфиг и применяет активный
  HRIR после закрытия (раньше изменения терялись)
- Регрессионный тест на повторные rebuild + resize
2026-09-14 21:29:18 +03:00
xpamych f069010250 Автоприменение HRIR: генерация PipeWire-конфига и перезапуск без ручных шагов
- Новый модуль surround.py: генерация конфига в ~/.config/lgcompanion/,
  симлинк в pipewire.conf.d, перезапуск PipeWire, удаление устаревшего
  симлинка headset-companion
- CLI: команда 'hrir apply [--no-restart]'; автоприменение в hrir add/
  set-default/remove
- install.sh использует 'lgcompanion hrir apply --no-restart' вместо
  inline-генерации в .generated/
- Тесты tests/test_surround.py
2026-09-14 21:29:18 +03:00
xpamych f7d155f148 Игнорирование каталога .repowise 2026-09-14 21:29:17 +03:00
xpamych dd851db622 Интеграция с openrazer + setup-razer.sh для универсальной установки
- razer_protocol.py: приоритет openrazer Python API (DKMS+daemon), fallback на raw USB
- setup-razer.sh: одна команда для полной настройки Razer на любом дистре
  - определяет пакетный менеджер (dnf/apt/pacman/zypper)
  - ставит kernel-devel + dkms + gcc
  - собирает и устанавливает DKMS-модуль openrazer
  - загружает razermouse, настраивает автозагрузку
  - устанавливает openrazer Python библиотеку
2026-09-10 23:33:45 +03:00
xpamych 15d4b20d63 Диагностика Razer HID-протокола
- lgcompanion diagnose для Razer мышей отправляет 6 команд и выводит ответы
- Тестирует: заряд, зарядка, частота, DPI, режим, серийник
- Показывает raw hex и статус каждой команды
2026-09-10 22:46:37 +03:00
xpamych 9ea7444368 Иконка батареи: рисованная с заливкой вместо текстового кружка
- battery_icon.py: draw_battery_icon/percent, draw_battery_badge
- Иконка с заливкой пропорционально заряду, цвет зависит от уровня
- Карточка и страница устройства используют pixmap-иконку
2026-09-10 22:44:29 +03:00
xpamych e4a4d076b7 Универсальный статус: 'устройство' вместо 'наушники' 2026-09-10 22:34:14 +03:00
xpamych 9a593647c4 Отображение заряда батареи в карточке и на странице устройства
- Зелёный/жёлтый/красный бейдж заряда на карточке в списке
- Заряд на странице устройства рядом со статусом
- Привязка заряда к конкретному устройству по имени профиля
- Статус-бар: 'устройство подключено' вместо 'наушники'
2026-09-10 22:33:48 +03:00
xpamych 3adf04ec33 Иконка мыши в карточке устройства 2026-09-10 22:26:41 +03:00
xpamych ec83dbf30c Поддержка Razer мышей: протокол, база устройств, DPI, заряд
- razer_protocol.py: реализация 90-байтового HID-протокола Razer с XOR CRC
  - battery (0x07/0x80), charging (0x07/0x84)
  - polling rate get/set (0x00/0x85,0x05) — 125/250/500/1000 Hz
  - DPI get/set (0x04/0x85,0x05) — 100-30000
  - idle time get/set (0x07/0x83,0x03) — 60-900 sec
- known_razer.py: 86 мышей Razer (Naga, Viper, DeathAdder, Basilisk, и т.д.)
- known_devices.py: Razer устройства добавлены в общий список автообнаружения
- hid_backend.py: маршрутизация протокола по VID (0x1532=Razer, остальное=SteelSeries)
- GUI: DPI-контролы для Razer, LOD только для SteelSeries
2026-09-10 22:26:29 +03:00
xpamych 9f39d7069e Настройки мыши, динамические слайдеры громкости
- Скрыты звуковые настройки для мышей, настройки мыши для гарнитур
- Настройки мыши: частота опроса (125/250/500/1000 Гц), lift-off distance
- HID-функции: set/get_mouse_polling_rate, set/get_mouse_lift_off_distance
- Слайдеры громкости показываются только для реально существующих sink-каналов
- Если нет ни game, ни chat sink — показывается подсказка
2026-09-10 22:16:32 +03:00
xpamych e6b91e67ee Дедупликация устройств по VID/PID вместо VID/PID/interface
USB-устройство может иметь несколько HID-интерфейсов (мышь, клавиатура,
макросы) — показываем только одну строку на устройство
2026-09-10 22:07:40 +03:00
xpamych 35d01cac7f Исправлено определение типа устройства: убраны общие бренды из ключевых слов
- Убраны razer, steelseries, logitech, corsair, sennheiser, sony, jbl, hyperx
  из _HEADSET_KEYWORDS — бренд не означает тип
- Добавлены конкретные модели гарнитур (Arctis, Virtuoso, Void, Astro A50 и т.д.)
- Добавлены конкретные модели мышей (Naga, DeathAdder, Basilisk, Viper и т.д.)
- Razer Naga Pro V2 теперь корректно определяется как мышь
2026-09-10 22:02:12 +03:00
xpamych 1cb42df0ef Исправлены дубликаты и отображение уже добавленных устройств в диалоге
- Дедупликация по (VID, PID, интерфейс) — каждый dongle показывается один раз
- Уже добавленные устройства отмечены серым текстом и недоступны для выбора
- Config передаётся в DeviceDetectorDialog для проверки
2026-09-10 21:56:25 +03:00
xpamych b9925445dc Фильтры устройств, начальная поддержка мышей, исправлено старое название
- Sidebar: "Headset Companion" → "LG Companion"
- Заголовок "Мои устройства" заменён на фильтры: Все / Гарнитуры / Мыши
- Добавлено поле device_type (headset/mouse) в DeviceProfile
- Известные мыши SteelSeries: Rival 3, Rival 650, Aerox 3/5/9, Prime Wireless
- Автообнаружение мышей по HID-ключевым словам (detect_mouse_candidates)
- Редактор профиля: выбор типа устройства (гарнитура/мышь)
- Диалог автообнаружения: тип устройства отображается в списке
- Для мышей скрыты настройки HRIR и режима surround/stereo
- QSS-стили для кнопок фильтров в обеих темах
2026-09-10 19:03:40 +03:00
xpamych d82031afe4 Добавлено управление громкостью game/chat каналов
- HID-чтение ChatMix (0x06 0x24) для Arctis 7 2019 — get_chatmix_level()
- pactl-функции get_sink_volume() / set_sink_volume()
- Поля game и chat в SinkConfig для имён PipeWire сингов каналов
- CLI: lgcompanion volume get/set game|chat, lgcompanion chatmix
- GUI: слайдеры громкости каналов на странице устройства
- QSS-стили для QSlider в обеих темах (светлая/тёмная)
- Диагностика ChatMix в lgcompanion diagnose
- Сигнал chatmix_changed в EngineWorker для GUI
- 8 новых тестов (ChatMix, volume pactl, config roundtrip)
2026-09-10 18:35:17 +03:00
xpamych c6e8e79cd9 Ребрендинг: Headset Companion → LGCompanion
- Переименован Python-пакет: headset_companion → lgcompanion
- Переименованы исполняемые файлы: headset-companion → lgcompanion, headset-companion-gui → lgcompanion-gui
- Переименованы сервис, desktop-файл, иконка, каталог конфигурации
- Обновлены все импорты, docstrings и пользовательские строки
- Обновлено описание в README.md и AGENTS.md: программа теперь позиционируется как универсальный компаньон для USB-гарнитур, из коробки поддерживаются SteelSeries Arctis
- Убраны привязки к Arctis 7 в defaults/placeholders GUI и CLI
- Обновлены ссылки репозитория на git.linux-gaming.ru
2026-07-12 18:03:51 +03:00
xpamych c1f6970503 Обновлены ссылки репозитория на новый origin 2026-07-12 17:42:03 +03:00
xpamych 78e26ab7e0 Добавлено:
- боковая панель навигации с разделами Устройства и Настройки
- карточки устройств в списке с бейджами статуса и режима
- детальная страница устройства с настройками режима и HRIR
- адаптивная раскладка режима и HRIR при изменении ширины окна
- автообнаружение известных гарнитур по VID, PID и USB-интерфейсу
- база известных устройств на основе HeadsetControl
- автосохранение общих и звуковых настроек без кнопок Сохранить/Отмена
- защита от пустых имён звуковых выходов в конфиге
- таймаут для команд pactl и обработка зависаний PipeWire
- кэширование списка звуковых выходов в настройках
- тесты для GUI, стилей и автообнаружения устройств

Изменено:
- дизайн интерфейса на плоские цвета без градиентов
- переключатель режима в трее теперь сохраняется в активное устройство
- цвет бейджа состояния устройства на зелёный/красный
- названия полей звуковых выходов и подсказки к ним
- ширина боковой панели для корректного отображения русских названий

Удалено:
- inline-стили из виджетов, все стили перенесены в styles.py
- группа настроек устройства с кнопками сохранения и отмены
- серый текст статуса в карточках устройств
2026-07-12 17:26:48 +03:00
xpamych aa93e5a45e Добавлено:
- человекочитаемые имена PipeWire sinks в выпадающих списках настроек

Изменено:
- отмена в диалоге автообнаружения устройства больше не открывает форму ручного добавления
- ручное добавление открывается только по соответствующей кнопке
2026-07-12 14:30:01 +03:00
xpamych f03c079124 Добавлено:
- автообнаружение подключённых наушников через hidraw
- диалог выбора устройства из системы при добавлении профиля
- фильтрация устройств по ключевым словам (headset, headphone, наушники и т.д.)

Изменено:
- профиль Arctis 7 2019 убран из конфига по умолчанию
- кнопка 'Добавить' теперь открывает автообнаружение, ручное добавление доступно отдельной кнопкой
- обновлена документация README и AGENTS
2026-07-12 14:21:31 +03:00
xpamych e68057175e Изменено:
- порог красного цвета иконки батареи в трее: теперь при заряде 20% и ниже
2026-07-04 00:50:12 +03:00
xpamych 9b6981d4a8 Изменено:
- аудио-файлы HRIR исключены из git-отслеживания через .gitignore
2026-07-01 19:46:14 +03:00
xpamych a96b2d0c73 Добавлено:
- интерфейс управления HRIR-профилями в CLI и GUI
- диалог управления HRIR: добавление, удаление, выбор активного профиля
- выбор HRIR для каждого профиля устройства
- копирование добавляемых HRIR в директорию приложения

Изменено:
- структура конфига hrir: список профилей и активный файл
- установщик использует активный HRIR из конфига
- документация README и AGENTS по работе с HRIR
2026-07-01 19:43:43 +03:00
xpamych 2d184dad18 Добавлено:
- SVG-иконка приложения с изображением surround-раскладки 7.1
- настройка выбора темы интерфейса в окне настроек
- автоматическое применение иконки для окна, панели задач и .desktop файла

Изменено:
- стили GUI теперь поддерживают светлую и тёмную темы
- установщик копирует иконку в системную тему иконок
2026-07-01 19:23:47 +03:00
xpamych 3e8e6ef99b Добавлено:
- автоматическое переключение между светлой и тёмной темой в интерфейсе
- светлая цветовая схема для главного окна и диалога профиля

Изменено:
- стили элементов управления для лучшей читаемости в светлой теме
- цвета заголовков, полей ввода и списка устройств в светлом режиме
2026-07-01 16:58:48 +03:00
xpamych dbf2081aef - Добавлена MIT-лицензия и шаблон systemd user service для пакетирования
- Добавлены pytest-тесты для конфигурации, HID, PipeWire и движка
- Обновлён install.sh: поддержка PREFIX/DESTDIR и системной установки
- Обновлён pyproject.toml: автор, классификаторы Python, dev-зависимости и правила сборки
- Унифицирована версия приложения через __version__ в GUI
- Обновлена документация README и AGENTS.md
2026-06-30 17:17:58 +03:00
xpamych 597ab03ec0 Изменено:
- иконка наушников в трее теперь становится жёлтой при заряде ниже 50%
2026-06-22 00:07:06 +03:00
xpamych 0968c82ef8 Initial commit of Headset Companion
Added:
- Automatic surround/stereo switching based on headset wireless state
- Command-line interface for diagnosis, configuration and service management
- System tray GUI for manual mode switching and device profile editing
- PipeWire virtual 7.1 surround configuration with bundled audio profile
- Install script, application menu entry and default configuration
2026-06-20 19:07:29 +03:00