Multi-headphone audio router for Linux
Route audio to multiple headphones simultaneously and mix multiple microphones into a single virtual input. Perfect for pair programming, shared listening, or video calls with multiple participants.
- Combined Output — Route system audio to multiple headphones/speakers at once
- Mixed Input — Combine multiple microphones into one virtual source
- Hot-Plug — Automatically detects devices when plugged in (headless mode)
- Simple Interface — Click to select devices, then create routes
- PipeWire/PulseAudio — Works with modern Linux audio stacks
- 🎧 Two people listening to the same audio with their own earbuds
- 🎤 Both users' mics mixed for remote calls
- 💻 Pair programming with shared audio
- 🎬 Shared movie watching with individual volume control
- GTK 4.0, libadwaita 1.x, GJS
- PulseAudio or PipeWire (with PulseAudio compatibility)
# Arch
sudo pacman -S gtk4 libadwaita gjs
# Ubuntu/Debian
sudo apt install gjs libgtk-4-1 libadwaita-1-0 gir1.2-gtk-4.0 gir1.2-adw-1
# Fedora
sudo dnf install gtk4 libadwaita gjs./lichen.js- Select 2+ output devices → "Create Combined Output"
- Select 2+ input devices → "Create Mixed Input"
- App automatically sets combined devices as default
For running on a headless Pi as a dedicated audio mixer:
make install # Deploy to Pi
make setup # Configure bridge adapter
make start # Start service
make logs # Stream logs (Ctrl+C to exit)See RASPI-INSTALL.md for full Raspberry Pi setup.
Lichen uses PulseAudio/PipeWire modules:
- Combined Sink (
module-combine-sink) — Virtual output mirroring to multiple physical outputs - Mixed Source (
module-null-sink+module-loopback) — Virtual input combining multiple physical inputs
| Shortcut | Action |
|---|---|
Ctrl+R |
Refresh device list |
Ctrl+Q |
Quit |
MIT