Skip to content

sassyrog/rog-v-audio

Repository files navigation

ROG V Audio

Desktop app to manage virtual audio sinks (null sinks and loopbacks) for PipeWire/PulseAudio.

Architecture: Python backend + Web frontend + PyWebView native window

Project Structure

rog-v-audio/
├── src/rog_v_audio/
│   ├── audio_manager.py    # Core PulseAudio logic
│   ├── api.py              # Python API bridge
│   └── main.py             # PyWebView launcher
├── frontend/
│   ├── index.html          # UI structure
│   ├── app.js              # Frontend logic
│   └── style.css           # Styling
└── pyproject.toml

Quick Start

# Install dependencies
uv sync

# Run the app
uv run rog-v-audio

System Requirements

  • Linux with PulseAudio or PipeWire
  • Python 3.11+
  • WebKit2GTK: sudo apt install gir1.2-webkit2-4.0 (Ubuntu/Debian) or sudo pacman -S webkit2gtk (Arch)

Development

Frontend files are in frontend/. Edit HTML/CSS/JS and reload the window (Ctrl+R) to see changes.

Backend API Methods

  • list_sinks() - Get all audio sinks
  • list_sources() - Get all audio sources
  • create_virtual_setup(physical, v1, v2) - Create 2 virtual sinks + loopbacks
  • get_virtual_modules() - List virtual sink/loopback modules
  • remove_module(module_id) - Unload a module

Frontend API Calls

// Call Python backend from JavaScript
const sinks = await pywebview.api.list_sinks();
const result = await pywebview.api.create_virtual_setup('sink', 'Virtual1', 'Virtual2');

Tests

uv run pytest

Some Commands

tree -I '.venv|__pycache__|*.pyc|uv.lock|.python-version' -L 3

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published