From 917eba60367c94e8c17af4ef29c84879921ee828 Mon Sep 17 00:00:00 2001 From: Bernhard Rode Date: Thu, 23 Oct 2025 21:08:13 +0200 Subject: [PATCH 1/2] docs(readme): Add comprehensive build instructions for wiremix - Expand README with detailed build instructions for multiple Linux distributions - Include prerequisites for building from source - Add step-by-step guide for cloning, building, and installing wiremix - Provide instructions for both release and development builds - List required dependencies for Ubuntu/Debian, Fedora, and Arch Linux - Clarify build process with explicit commands and paths --- README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/README.md b/README.md index 06bf2fa..bf4fe67 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,53 @@ dependencies: Then install wiremix with `cargo install wiremix` +## Building from Source + +To build wiremix from source, you'll need: + +* Rust 1.74.1 or later +* PipeWire development libraries +* pkg-config +* clang + +### Prerequisites + +Install the required dependencies for your distribution: + +* **Ubuntu/Debian**: `sudo apt install cargo libpipewire-0.3-dev pkg-config clang` +* **Fedora**: `sudo dnf install cargo pipewire-devel clang` +* **Arch Linux**: `sudo pacman -S rust pipewire pkg-config clang` + +### Build Steps + +1. Clone the repository: + ```bash + git clone https://github.com/tsowell/wiremix.git + cd wiremix + ``` + +2. Build the project: + ```bash + cargo build --release + ``` + +3. The binary will be available at `target/release/wiremix` + +4. Optionally, install it system-wide: + ```bash + cargo install --path . + ``` + +### Development Build + +For development with debug symbols and faster compilation: + +```bash +cargo build +``` + +The debug binary will be at `target/debug/wiremix`. + ## Quick Start 1. Run `wiremix` to launch with default settings From 8c25379fffe2db15c3b26d1f26939cdf3372c0b0 Mon Sep 17 00:00:00 2001 From: Bernhard Rode Date: Thu, 23 Oct 2025 21:17:33 +0200 Subject: [PATCH 2/2] feat(ui): Add mouse wheel volume control support - Implement mouse wheel scrolling to adjust volume in volume bar - Add scroll up/down event handlers for volume widget - Update README.md to document new mouse wheel volume control feature - Increase volume by 5% when scrolling up - Decrease volume by 5% when scrolling down Enhances user interaction by providing an intuitive way to adjust volume using mouse wheel on the volume bar. --- README.md | 1 + src/node_widget.rs | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/README.md b/README.md index bf4fe67..78bd991 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ Everything except quitting can also be done with the mouse. Some of the less-intuitive mouse controls are: * Click the numeric volume percentage to toggle muting. +* Use the mouse wheel over the volume bar to adjust volume (scroll up to increase, scroll down to decrease). * Scroll through lists and dropdowns with the mouse wheel or click on scroll buttons (default appearence: `•••`) * Right-click to set as the default source/sink diff --git a/src/node_widget.rs b/src/node_widget.rs index 3d91c95..65db845 100644 --- a/src/node_widget.rs +++ b/src/node_widget.rs @@ -440,6 +440,24 @@ impl StatefulWidget for VolumeWidget<'_> { ], )); + // Add mousewheel support for volume control on the volume bar + mouse_areas.push(( + volume_bar, + smallvec![MouseEventKind::ScrollUp], + smallvec![ + Action::SelectObject(self.node.object_id), + Action::SetRelativeVolume(0.05), + ], + )); + mouse_areas.push(( + volume_bar, + smallvec![MouseEventKind::ScrollDown], + smallvec![ + Action::SelectObject(self.node.object_id), + Action::SetRelativeVolume(-0.05), + ], + )); + // Add mouse areas for setting volume for i in 0..=volume_bar.width { let volume_area = Rect::new(