Skip to content

Repository files navigation

GitHub Readme Stats

PinguControll

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.

GitHub ReleaseIssuesGitHub pull requests

We rewrite it in Rust.
Status: 14.10.2025: Its rewritten! But we still need to add a pretty Web-UI.
⚠️ This is still Work-In-Progress! ⚠️



Todolist

Frontend:

  • First-Time-Setup
  • user defined buttons
  • IP allowlist
  • Multiple factory themes (theme support overall)
  • Dashboard
  • Controls
  • Music player (MPRIS) controller
  • Mixer
  • Settings

Backend:

  • auto update

Usage

Requirements

  • A PC running Linux
  • A libpulse compatible sound server
  • Cargo for building the project (or a Nix installed)

Sound-Server Compatability:

  • Pipewire (pipewire-pulse module, standard on most Distros)
  • PulseAudio (native)
  • Jack (not supported at all)
  • ALSA (not planned)

Compiling

  1. (With Nix only) Enter a nix-shell with the Rust-toolchain installed:
nix-shell
  1. Build and run the program with
cargo run
  1. Open the webui! The WebUI runs under http://127.0.0.1:8193/ or http://<your pc's IP here>:8193/ (from another device)

Configuration and Customisation

Config file

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": [""]
}
}
KeyExplanationDefault Value
ftsetupWhether the First-Time-Setup is shown (will automatically be set to false when setup is completed)true
hostThe host the Web-UI should run on"127.0.0.1"
portThe port the Web-UI should run on8193
allowed_ipsIPs allowed to access the Web-UI["127.0.0.1"]
themeWeb-UI theme"std"
button_xuser-defined button configuration-------------
[+] textText in the button shown in the webui"undefined"
[+] executableProgram/Action to execute on button press""
[+] argsExtra arguments for the program/action[""]

Customization

The Web-UI is in the site directory located under ~/.config/pingu_control/ and can be fully modified.

FileFunction
index.htmlMain dashboard
mixer.htmlMixer UI (with MPRIS controller at the bottom)
mpris.htmlMPRIS standalone UI (deprecated - might be removed)
ftsetup.htmlFirst-time Setup UI
conf.htmlConfiguration UI
sysmon.htmlSystem monitor UI (deprecated - needs additional server functionality that isn't there)
style.cssStyling for all UIs and UI components (should simplify theming)

About

A simple webui to control PulseAudio (or Pipewire) and any mediaplayer with MPRIS on linux

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages