feat: scaffold tuimble TUI mumble client
Core modules: TUI app (textual), mumble protocol client, audio pipeline (sounddevice + opus), push-to-talk with kitty protocol / evdev / toggle backends. Config via TOML.
This commit is contained in:
12
docs/CHEATSHEET.md
Normal file
12
docs/CHEATSHEET.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# Cheatsheet
|
||||
|
||||
```
|
||||
make setup setup venv + deps
|
||||
make run launch tuimble
|
||||
make test run tests
|
||||
make lint check code style
|
||||
|
||||
q quit
|
||||
space push-to-talk (hold)
|
||||
Enter send message
|
||||
```
|
||||
45
docs/DEBUG.md
Normal file
45
docs/DEBUG.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Debugging
|
||||
|
||||
## Verbose Mode
|
||||
|
||||
```sh
|
||||
tuimble --verbose # (planned)
|
||||
```
|
||||
|
||||
## Common Issues
|
||||
|
||||
### No audio devices found
|
||||
|
||||
```sh
|
||||
python3 -c "import sounddevice; print(sounddevice.query_devices())"
|
||||
```
|
||||
|
||||
Check that portaudio is installed and devices are accessible.
|
||||
|
||||
### opuslib import error
|
||||
|
||||
```sh
|
||||
python3 -c "import opuslib"
|
||||
```
|
||||
|
||||
If this fails, install libopus: `apt install libopus0`
|
||||
|
||||
### Kitty protocol not detected
|
||||
|
||||
Verify terminal supports the Kitty keyboard protocol.
|
||||
Known working: Kitty, WezTerm, Ghostty, foot.
|
||||
|
||||
### evdev permission denied
|
||||
|
||||
```sh
|
||||
ls -la /dev/input/event*
|
||||
groups # should include 'input'
|
||||
```
|
||||
|
||||
Add user to `input` group: `sudo usermod -aG input $USER`
|
||||
|
||||
### Connection refused
|
||||
|
||||
- Verify server address and port
|
||||
- Check firewall allows outbound TCP/UDP to port 64738
|
||||
- Test with: `nc -zv <host> 64738`
|
||||
52
docs/INSTALL.md
Normal file
52
docs/INSTALL.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Installation
|
||||
|
||||
## Prerequisites
|
||||
|
||||
### System Libraries
|
||||
|
||||
```sh
|
||||
# Debian/Ubuntu
|
||||
sudo apt install libopus0 libopus-dev portaudio19-dev
|
||||
|
||||
# Fedora/RHEL
|
||||
sudo dnf install opus opus-devel portaudio-devel
|
||||
|
||||
# Arch
|
||||
sudo pacman -S opus portaudio
|
||||
```
|
||||
|
||||
### Python
|
||||
|
||||
Python 3.11 or later required.
|
||||
|
||||
## Setup
|
||||
|
||||
```sh
|
||||
git clone <repo-url> ~/git/tuimble
|
||||
cd ~/git/tuimble
|
||||
make setup
|
||||
```
|
||||
|
||||
## Verify
|
||||
|
||||
```sh
|
||||
make test
|
||||
tuimble --version
|
||||
```
|
||||
|
||||
## Optional: evdev PTT
|
||||
|
||||
For Linux evdev push-to-talk (physical key detection):
|
||||
|
||||
```sh
|
||||
pip install tuimble[evdev]
|
||||
sudo usermod -aG input $USER
|
||||
# Log out and back in for group change
|
||||
```
|
||||
|
||||
## Symlink
|
||||
|
||||
```sh
|
||||
ln -sf ~/git/tuimble/.venv/bin/tuimble ~/.local/bin/tuimble
|
||||
which tuimble
|
||||
```
|
||||
27
docs/USAGE.md
Normal file
27
docs/USAGE.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Usage
|
||||
|
||||
## Running
|
||||
|
||||
```sh
|
||||
tuimble # uses ~/.config/tuimble/config.toml
|
||||
tuimble --host mumble.example.com --user myname
|
||||
```
|
||||
|
||||
## Key Bindings
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `q` | Quit |
|
||||
| `space` | Push-to-talk (configurable) |
|
||||
| `Enter` | Send message |
|
||||
| `Ctrl+C` | Quit |
|
||||
|
||||
## Push-to-Talk Modes
|
||||
|
||||
- **hold** — hold key to transmit, release to stop (default)
|
||||
- **toggle** — press to start, press again to stop
|
||||
|
||||
## Configuration
|
||||
|
||||
See `~/.config/tuimble/config.toml`. All fields are optional;
|
||||
defaults connect to localhost:64738.
|
||||
Reference in New Issue
Block a user