A simple Web-UI to control PulseAudio (or Pipewire) and any mediaplayer with MPRIS on Linux. This project was just created since all software I found in this direction was deprecated or not working, so I created my own.
We rewrite it in Rust.
Status: 14.10.2025: Its rewritten! But we still need to add a pretty Web-UI.
- First-Time-Setup
- user defined buttons
- IP allowlist
- Multiple factory themes (theme support overall)
- Dashboard
- Controls
- Music player (MPRIS) controller
- Mixer
- Settings
- auto update
- A PC running Linux
- A libpulse compatible sound server
- Cargo for building the project (or a Nix installed)
- Pipewire (pipewire-pulse module, standard on most Distros)
- PulseAudio (native)
-
Jack(not supported at all) - ALSA (not planned)
- (With Nix only) Enter a nix-shell with the Rust-toolchain installed:
nix-shell
- Build and run the program with
cargo run
- Open the webui! The WebUI runs under http://127.0.0.1:8193/ or http://<your pc's IP here>:8193/ (from another device)
The configuration file for PinguControl is located in ~/.config/pingu_control/pingu-control.conf.
A Default setup looks like this:
{
"ftsetup":true,
"host":"127.0.0.1",
"port":8193,
"allowed_ips": ["127.0.0.1"],
"theme":"std",
"button_1": {
"text":"undefined",
"executable":"",
"args": [""]
},
"button_2": {
"text":"undefined",
"executable":"",
"args": [""]
},
"button_3": {
"text":"undefined",
"executable":"",
"args": [""]
},
"button_4": {
"text":"undefined",
"executable":"",
"args": [""]
},
"button_5": {
"text":"undefined",
"executable":"",
"args": [""]
},
"button_6": {
"text":"undefined",
"executable":"",
"args": [""]
}
}
| Key | Explanation | Default Value |
|---|---|---|
ftsetup |
Whether the First-Time-Setup is shown (will automatically be set to false when setup is completed) | true |
host |
The host the Web-UI should run on | "127.0.0.1" |
port |
The port the Web-UI should run on | 8193 |
allowed_ips |
IPs allowed to access the Web-UI | ["127.0.0.1"] |
theme |
Web-UI theme | "std" |
button_x |
user-defined button configuration | ------------- |
[+] text |
Text in the button shown in the webui | "undefined" |
[+] executable |
Program/Action to execute on button press | "" |
[+] args |
Extra arguments for the program/action | [""] |
The Web-UI is in the site directory located under ~/.config/pingu_control/ and can be fully modified.
| File | Function |
|---|---|
index.html |
Main dashboard |
mixer.html |
Mixer UI (with MPRIS controller at the bottom) |
mpris.html |
MPRIS standalone UI (deprecated - might be removed) |
ftsetup.html |
First-time Setup UI |
conf.html |
Configuration UI |
sysmon.html |
System monitor UI (deprecated - needs additional server functionality that isn't there) |
style.css |
Styling for all UIs and UI components (should simplify theming) |
