Metadata-Version: 2.5
Name: walkie
Version: 1.0.0
Summary: Serverless peer-to-peer walkie-talkie application for LAN
Project-URL: Homepage, https://github.com/Lunixizm0/walkie
Project-URL: Repository, https://github.com/Lunixizm0/walkie
Project-URL: Issues, https://github.com/Lunixizm0/walkie/issues
License-Expression: MIT
License-File: LICENSE
Keywords: encrypted,lan,p2p,voice,walkie-talkie
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: X11 Applications
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Communications
Classifier: Topic :: Multimedia :: Sound/Audio
Requires-Python: >=3.11
Requires-Dist: av>=12.0
Requires-Dist: cryptography>=41.0
Requires-Dist: numpy>=1.24
Requires-Dist: pillow>=10.0
Requires-Dist: pygobject>=3.56.3
Requires-Dist: pystray>=0.19
Requires-Dist: sounddevice>=0.4
Provides-Extra: test
Requires-Dist: pytest-cov>=5.0; extra == 'test'
Requires-Dist: pytest>=8.0; extra == 'test'
Description-Content-Type: text/markdown

# Walkie-Talkie

Serverless peer-to-peer walkie-talkie application for LAN.

Automatic peer discovery, encrypted text chat, push-to-talk voice communication.

## Installation

```bash
pip install walkie
```

Or for development:

```bash
git clone https://github.com/Lunixizm0/walkie.git
cd walkie
uv sync
```

## Usage

```bash
# Generate config (creates random passwords, salt, and encryption key)
walkie gen

# Receive config from another client
walkie get

# Send config to another client
walkie give <target_ip>

# Start the application
walkie run
```

Or run directly:

```bash
python -m walkie run
python -m walkie gen
python -m walkie get
python -m walkie give 192.168.1.100
```

## Configuration

The app looks for `walkie_config.toml` in `~/.config/walkie/`.
You can override the path with the `WALKIE_CONFIG` environment variable.

## Features

- Automatic peer discovery via UDP broadcast (no server needed)
- AES-256-GCM encryption for voice and chat
- Low-latency voice with Opus codec
- Push-to-Talk (Shift+V) and Voice Activity Detection (VAD) modes
- Seamless playback with jitter buffer
- System tray minimization
- TOML-based configuration
- Config sharing over TCP (--get/--give)

## Requirements

- Python 3.11+
- Linux, Windows, or macOS
- Microphone and speakers

### System Dependencies

Walkie requires system libraries for audio and GUI tray support. Install them before installing the Python package:

**Debian / Ubuntu:**

```bash
sudo apt install -y portaudio19-dev gobject-introspection \
  libgirepository1.0-dev libglib2.0-dev pkg-config python3-dev python3-tk
```

**Arch Linux:**

```bash
sudo pacman -S --needed portaudio gobject-introspection pkgconf python tk
```

**macOS (Homebrew):**

```bash
brew install portaudio gobject-introspection pkg-config tcl-tk
```

**Windows:**

No extra system dependencies needed. Wheels for `sounddevice` and `pygobject` bundle everything required.

## License

MIT
