bluetui
- title
- bluetui
- type
- toolbox
- summary
- Терминальный Bluetooth-менеджер для Linux, работающий как Bluetooth HID пульт для Smart TV
- tags
- python, tui, bluetooth, linux, watchlist
- language
- Python
- license
- GPL-3.0
- created
- 2026-05-02
- updated
- 2026-05-02
- lang
- ru
- translation_of
- bluetui
- source_updated
- 2026-05-02
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Терминальный Bluetooth-менеджер для Linux, написанный на Python. Работает поверх BlueZ через системный D-Bus, sudo не требуется (авторизацией занимается PolicyKit). Главная особенность здесь не список устройств: то же самое приложение превращает ноутбук в полноценный Bluetooth HID пульт управления для Smart TV, регистрируясь как HID-устройство точно так же, как штатный пульт для Android-TV / Tizen / WebOS.
Архитектура
Построен на Textual для TUI и dbus-next для асинхронного D-Bus. Репозиторий разбит на модули по отдельным частям BlueZ:
bluetui/
├── bluez.py # BluezManager — wraps BlueZ ObjectManager over D-Bus
├── agent.py # org.bluez.Agent1 — PIN/passkey/confirm dialogs
├── audio.py # pactl auto-routing for PulseAudio + PipeWire
├── classic_hid.py # Classic-BT HID Device profile (TV remote)
├── hid_remote.py # BLE HID over GATT (legacy, kept for testing)
├── remote_screen.py # virtual-remote UI screen
├── widgets.py # AdapterBar, DeviceList
└── modals.py # Confirm/Pin/Info/Help/MediaControl dialogs
Список устройств группируется по статусу (connected / paired / nearby), отображает индикаторы RSSI и заряд батареи, а также поддерживает стандартные операции: сопряжение, удаление, доверие, блокировку, сканирование и переключение питания по горячим клавишам.
Пульт Bluetooth HID
Отличительная особенность проекта. Большинство решений вроде "ПК в качестве пульта для ТВ" либо управляют ИК-передатчиком, либо используют протокол Android TV Remote v2 по WiFi. bluetui не делает ни того, ни другого: он притворяется Bluetooth HID устройством, и телевизор сопрягается с ним так же, как с родным заводским пультом.
Реализация, согласно README:
- Регистрирует
org.bluez.Profile1с UUID0x1124(HID) - Формирует SDP-запись с дескриптором HID, содержащим Consumer Control (Report ID 1) + Keyboard (Report ID 2)
- Открывает сырые сокеты L2CAP на PSM 17 (Control) и PSM 19 (Interrupt) через
socket.AF_BLUETOOTH+BTPROTO_L2CAP - Для сопряжения: агент переключается в режим
NoInputNoOutput, поэтому JustWorks проходит автоматически - После подключения принудительно отключает профили A2DP/AVRCP/HSP, чтобы звук с ТВ не уходил в динамики ноутбука
Протестировано на TCL Android TV. Должно работать с любыми телевизорами Samsung / LG / Sony с поддержкой профиля BT HID-host, однако совместимость охватывает "большинство, но не все": в README прямо указано, что некоторые модели вообще не принимают HID через Bluetooth.
AVRCP и маршрутизация звука
При подключении сопряжённого аудиоустройства bluetui автоматически перенаправляет на него системный sink по умолчанию через pactl (работает с PulseAudio и PipeWire). Воспроизведение, пауза и переключение треков идут через AVRCP. Громкость регулируется через системный микшер, а не через AVRCP-absolute-volume - в README отмечается, что это осознанный выбор ради удобства. В автомаршрутизации есть известное состояние гонки с BlueZ, которое приложение пытается обработать повторными попытками.
Требования
- Linux с BlueZ ≥ 5.50 (Debian 11+, Ubuntu 20.04+, актуальный Arch)
- Python ≥ 3.9
- Запущенный
bluetoothd - Для маршрутизации звука:
pulseaudioилиpipewire-pulse+pactl - Для отображения эмодзи-иконок: моноширинный шрифт с глифами
📺 🎧 ⌨(JetBrains Mono / Fira Code Nerd / DejaVu Sans Mono)
Установка:
git clone https://github.com/HelpFreedom/TUI_bluetooth.git
cd TUI_bluetooth
pip3 install --user -r requirements.txt
./bluetui.sh
(В примере из README указаны bluetui.git и cd bluetui, хотя сам репозиторий называется TUI_bluetooth. Оформление пакета неформальное: requirements.txt плюс shell-обёртка, без pyproject.toml и без релиза на PyPI.)
Горячие клавиши: j/k перемещение, Enter подключение, p сопряжение, f удаление, t доверие, b блокировка, s сканирование, o питание, i информация, m AVRCP, r открыть пульт ТВ, ? справка, q выход.
Статус в watchlist
Внесён в watchlist, так как проект совсем свежий: репозиторий создан 2026-05-01 (за день до создания этой страницы), ноль звёзд, один автор, нет тегов релизов, нет видимого набора тестов, только русскоязычный README, а способ установки - pip3 install --user -r requirements.txt, а не готовый дистрибутивный пакет. Реализация HID-пульта для ТВ рабочая и необычная, но открытым остаётся вопрос поддержки проекта. Повторная проверка 2026-08-02: посмотреть, появятся ли сторонние PR, перевод README, более аккуратная сборка и расширится ли совместимость с ТВ за пределы протестированного автором TCL Android TV.
Репозиторий
github.com/HelpFreedom/TUI_bluetooth - 0 звёзд, GPL-3.0, основной язык Python, репозиторий создан 2026-05-01, один автор. README на русском языке.