Some checks are pending
CI / Check (pull_request) Waiting to run
CI / Format (pull_request) Waiting to run
CI / Clippy (pull_request) Waiting to run
CI / Build (macos-latest) (pull_request) Waiting to run
CI / Build (ubuntu-latest) (pull_request) Waiting to run
CI / Build (windows-latest) (pull_request) Waiting to run
164 lines
6.6 KiB
Markdown
164 lines
6.6 KiB
Markdown
# tele-tui
|
||
|
||
[](https://opensource.org/licenses/MIT)
|
||
[](https://www.rust-lang.org/)
|
||
|
||
Консольный Telegram клиент с Vim-style навигацией.
|
||
|
||

|
||
|
||
## Возможности
|
||
|
||
- **Полная интеграция с Telegram**: отправка/получение сообщений, редактирование, удаление, пересылка
|
||
- **Vim-style навигация**: hjkl + поддержка русской раскладки (ролд)
|
||
- **Markdown форматирование**: жирный, курсив, подчёркивание, зачёркивание, код, спойлеры, ссылки
|
||
- **Реакции на сообщения**: emoji picker с навигацией стрелками
|
||
- **Папки Telegram**: переключение между папками (1-9)
|
||
- **Поиск**: по чатам (Ctrl+S) и внутри чата (Ctrl+F)
|
||
- **Черновики**: автосохранение набранного текста при переключении чатов
|
||
- **Typing indicator**: показывает когда собеседник печатает
|
||
- **Закреплённые сообщения**: отображение и переход к закреплённому сообщению
|
||
- **Копирование в буфер**: copy сообщений в системный буфер обмена
|
||
- **Профиль**: просмотр информации о пользователе/чате
|
||
- **Конфигурация**: настройка цветов и часового пояса через TOML
|
||
- **Оптимизация**: 60 FPS, умное кеширование, graceful shutdown
|
||
|
||
## Установка
|
||
|
||
### Требования
|
||
|
||
- Rust 1.70+
|
||
- TDLib (скачивается автоматически через tdlib-rs)
|
||
|
||
### Сборка
|
||
|
||
```bash
|
||
git clone https://github.com/your-username/tele-tui.git
|
||
cd tele-tui
|
||
cargo build --release
|
||
```
|
||
|
||
### API Credentials
|
||
|
||
Получите API credentials на https://my.telegram.org/apps
|
||
|
||
Создайте файл `~/.config/tele-tui/credentials`:
|
||
```
|
||
API_ID=your_api_id
|
||
API_HASH=your_api_hash
|
||
```
|
||
|
||
Или используйте `.env` файл в директории проекта:
|
||
```
|
||
API_ID=your_api_id
|
||
API_HASH=your_api_hash
|
||
```
|
||
|
||
## Использование
|
||
|
||
```bash
|
||
cargo run --release
|
||
```
|
||
|
||
При первом запуске нужно пройти авторизацию (телефон + код + опционально 2FA пароль).
|
||
|
||
## Конфигурация
|
||
|
||
Конфигурационный файл создаётся автоматически в `~/.config/tele-tui/config.toml`:
|
||
|
||
```toml
|
||
[general]
|
||
# Часовой пояс в формате "+03:00" или "-05:00"
|
||
timezone = "+03:00"
|
||
|
||
[colors]
|
||
# Поддерживаемые цвета: black, red, green, yellow, blue, magenta, cyan, gray, white,
|
||
# darkgray, lightred, lightgreen, lightyellow, lightblue, lightmagenta, lightcyan
|
||
incoming_message = "white"
|
||
outgoing_message = "green"
|
||
selected_message = "yellow"
|
||
reaction_chosen = "yellow"
|
||
reaction_other = "gray"
|
||
```
|
||
|
||
## Горячие клавиши
|
||
|
||
### Навигация
|
||
- `↑/↓` или `k/j` (р/о) — навигация по списку чатов
|
||
- `Enter` — открыть чат / отправить сообщение
|
||
- `Esc` — закрыть чат / отменить действие
|
||
- `1-9` — переключение между папками
|
||
- `Ctrl+S` — поиск по чатам
|
||
- `Ctrl+R` — обновить список чатов
|
||
- `Ctrl+C` — выход
|
||
|
||
### В открытом чате
|
||
- `↑/↓` — скролл сообщений
|
||
- `Ctrl+F` — поиск в чате
|
||
- `n/N` — следующий/предыдущий результат поиска
|
||
- `i` — информация о чате/пользователе
|
||
|
||
### Работа с сообщениями
|
||
- `↑` при пустом инпуте — выбор сообщения
|
||
- `Enter` в режиме выбора — редактировать
|
||
- `r` / `к` — ответить (reply)
|
||
- `f` / `а` — переслать (forward)
|
||
- `d` / `в` / `Delete` — удалить
|
||
- `y` / `н` — скопировать в буфер
|
||
- `e` / `у` — добавить реакцию
|
||
|
||
### Emoji Picker (реакции)
|
||
- `←/→/↑/↓` — навигация по сетке
|
||
- `Enter` — добавить/удалить реакцию
|
||
- `Esc` — закрыть picker
|
||
|
||
### Редактирование текста
|
||
- `←/→` — перемещение курсора
|
||
- `Home` — в начало строки
|
||
- `End` — в конец строки
|
||
- `Backspace` — удалить символ слева
|
||
- `Delete` — удалить символ справа
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
src/
|
||
├── main.rs # Точка входа, event loop
|
||
├── config.rs # Конфигурация (TOML), credentials
|
||
├── app/ # Состояние приложения
|
||
├── ui/ # Отрисовка интерфейса
|
||
├── input/ # Обработка ввода
|
||
├── utils.rs # Утилиты (форматирование времени, логи)
|
||
└── tdlib/ # TDLib интеграция
|
||
```
|
||
|
||
## Зависимости
|
||
|
||
- `ratatui` 0.29 — TUI framework
|
||
- `crossterm` 0.28 — terminal handling
|
||
- `tdlib-rs` 1.1 — Telegram API
|
||
- `tokio` 1.x — async runtime
|
||
- `serde` + `serde_json` — serialization
|
||
- `toml` 0.8 — config parsing
|
||
- `dirs` 5.0 — XDG directories
|
||
- `clipboard` 0.5 — clipboard access
|
||
- `chrono` 0.4 — date/time formatting
|
||
|
||
## Документация
|
||
|
||
- [INSTALL.md](INSTALL.md) — подробная инструкция по установке
|
||
- [HOTKEYS.md](HOTKEYS.md) — все горячие клавиши
|
||
- [FAQ.md](FAQ.md) — часто задаваемые вопросы
|
||
- [CONTRIBUTING.md](CONTRIBUTING.md) — как внести вклад
|
||
- [PROJECT_STRUCTURE.md](PROJECT_STRUCTURE.md) — структура проекта
|
||
- [SECURITY.md](SECURITY.md) — политика безопасности
|
||
- [CHANGELOG.md](CHANGELOG.md) — история изменений
|
||
- [REQUIREMENTS.md](REQUIREMENTS.md) — функциональные требования
|
||
- [DEVELOPMENT.md](DEVELOPMENT.md) — правила разработки
|
||
- [ROADMAP.md](ROADMAP.md) — план развития проекта
|
||
- [CONTEXT.md](CONTEXT.md) — текущий статус разработки
|
||
|
||
## Лицензия
|
||
|
||
MIT
|