Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
🎵 Pipewire Soundpad (PWSP)
PipeWire Soundpad (PWSP) is a simple yet powerful soundboard application written in Rust. It provides a user-friendly graphical interface for managing and playing audio files, directing their output directly to the virtual microphone. This makes it an ideal tool for gamers, streamers, and anyone looking to inject sound effects into voice chats on platforms like Discord, Zoom, or Teamspeak.

🌟 Key Features
- Multi-Format Support: Play audio files in popular formats, including mp3, wav, ogg, flac, mp4, and aac.
- Virtual Microphone Output: The application routes audio through a virtual device created by PipeWire, allowing other users to hear the sounds as if you were speaking into your microphone.
- Modern and Clean GUI: The interface is built with the egui library, ensuring an intuitive and responsive user experience.
- Sound Collection Management: Easily add and remove directories containing your audio files. The application scans these folders and displays all supported files for quick access.
- Quick Search: Use the built-in search bar to instantly find any sound file within your library.
- Detailed Playback Controls:
- Play/Pause button.
- Volume slider for individual sound adjustment.
- Position slider to fast-forward or rewind the audio.
- Persistent Configuration: The list of added directories and your selected audio output device are saved automatically, so you won't need to reconfigure them every time you launch the application.
⚙️ How It Works
PWSP is designed with a clear separation of concerns, operating through a client-server architecture. It consists of three main components:
- pwsp-daemon: This is the core of the application. It runs silently in the background, managing all the
heavy-lifting tasks. The daemon is responsible for:
- Creating and managing virtual audio devices.
- Linking these devices within the PipeWire graph.
- Handling all audio playback.
- pwsp-gui: This is the graphical user interface. It acts as a client that communicates with pwsp-daemon via a UnixSocket. This is how you interact with your sound collection, control playback, and configure settings.
- pwsp-cli: This is the command-line interface, also acting as a client. It provides a way to control the daemon without a GUI, allowing for scripting or quick command-based actions.
🚀 Installation
Pre-built Packages
You can download pre-built binaries and .deb packages from the releases page.
Fedora Linux (and derivatives)
If you're using Fedora, you can install PWSP from a dedicated repository using DNF.
Add the repository:
Update cache:
Install PWSP:
Arch Linux
There is pwsp package in AUR. You can install it using yay, paru or any other AUR helper.
Installing using cargo
Building from source
Requirements
- Rust: Install Rust (using rustup is recommended).
- PipeWire: Ensure that PipeWire is installed and running on your system.
Build Instructions
Clone the repository:
Build the project:
Now you have three binary files inside ./target/release/:
- pwsp-gui
- pwsp-cli
- pwsp-daemon
🎮 Usage
Before using pwsp-gui or pwsp-cli, you must first run the pwsp-daemon in the background.
Running the Daemon
You can start the daemon from the terminal or enable the systemd service for automatic startup.
- Manual Start:
&
- Using systemd (recommended):
If you installed PWSP using prebuilt packages, the systemd service is added automatically.- Start the service:
- Enable autostart (starts on login):
- Start the service:
Using the GUI
- Add Sounds: Click the "+" button and select a folder containing your audio files. The application will automatically list all supported files.
- Select Microphone: In the main application window, select your microphone. PWSP will automatically create a virtual microphone and feed it sound from two sources: your microphone and the audio files.
- Playback: Click on a file in the list to load it, then use the "Play" and "Pause" buttons to control playback. You can also play single file once using "Play File" button.
Using the CLI
The pwsp-cli tool allows you to control the daemon from the command line.
- General Help: To see a list of all available commands, run:
- Example Commands:
-
Play a file:
-
Get the current volume:
-
Set playback position to 20 seconds:
-
Hotkeys & Controls
Keyboard Shortcuts
| Key | Action |
|---|---|
| Esc | Close application |
| Space | Pause / Resume audio |
| Backspace | Stop all audio tracks |
| Enter | Play selected file (stops all other tracks) |
| Ctrl + Enter | Add selected file to playback (plays simultaneously) |
| Shift + Enter | Replace the last added track with the selected one |
| I | Open / Close settings |
| / | Focus search field |
| Ctrl + ↑ / ↓ | Navigate through files |
| Ctrl + Shift + ↑ / ↓ | Navigate through directories |
Mouse Controls
- Left Click: Play track (stops all other tracks).
- Ctrl + Left Click: Add track (plays simultaneously with current tracks).
- Shift + Left Click: Replace the last added track with the selected one.
🤝 Contributing
Contributions are welcome! If you have ideas for improvements or find a bug, feel free to create an issue or submit a pull request.
📜 License
This project is licensed under the MIT License.