4 KiB
4 KiB
TyChat-Client TUI
Минимальный консольный клиент, используемый разработчиками для тестирования протокола AcoustiOverSocket.
Зависимости и запуск
Приложение автоматически проверяет и устанавливает необходимые библиотеки при первом запуске (prompt_toolkit, numpy, sounddevice, python-socketio).
python client.py
Управление
- Tab — Переключение фокуса между списком чатов (левая панель) и полем ввода сообщения (нижняя панель).
- Стрелки Вверх / Вниз — Навигация по списку контактов (работает, когда фокус находится на панели чатов). При перемещении выбор чата переключается автоматически.
- Ctrl + C или ввод
/exit— Корректное завершение работы и выход из терминала.
Команды в поле ввода
/help— Открывает официальную Wiki проекта в браузере по умолчанию./add <UIN>— Локально добавляет новый UIN в список контактов./alert <сообщение>— Отправляет сообщение с флагом приоритетного внимания (выставляет статус[!]у получателя).s/что_заменить/на_что_заменить— Замена текста в последнем отправленном сообщении (аналог синтаксисаsed).
Преимущества
- Автономность и локальное хранение: Вся история сообщений и список контактов сохраняются на стороне клиента в файле
settings.json. Сервер выполняет исключительно роль ретранслятора пакетов. - Адаптивный TUI-интерфейс: Благодаря использованию контейнеров
Frameиз библиотекиprompt_toolkit, интерфейс автоматически масштабируется под любые размеры окна терминала без сдвигов и искажения разметки. - Поддержка отложенной доставки (Preserved): Если целевой контакт находится в офлайне, клиент кэширует исходящие сообщения локально и автоматически отправляет их, как только протокол зафиксирует появление пользователя в сети.
Недостатки
- Отсутствие серверной истории: Поскольку сервер не логирует пакеты, получить пропущенные за время офлайна сообщения невозможно, если у отправителя в этот момент был закрыт клиент.
- Акустическая нагрузка: Специфика протокола передачи данных подразумевает генерацию высокочастотных аудиосигналов через системное устройство вывода, что требует ручного контроля уровня громкости.
- Отсутствие ввода с мышки: Навигация полностью переведена на клавиатурные хоткеи ради стабильности работы интерфейса в специфических и эмулируемых терминальных средах.