Compare commits

..
146 Commits
Author SHA1 Message Date
arabianq dc61342af8 change version to 1.3.2 2026-01-16 16:19:17 +03:00
arabianq fded7f7b3f deps: cargo update 2026-01-16 16:18:44 +03:00
arabianq ec83680333 deps: bump rfd to 0.17.2 2026-01-16 16:18:11 +03:00
arabianq 16e94e71d3 fix: update input device properties to output for capture_MONO 2026-01-16 16:16:27 +03:00
arabianq 56040934e9 cargo update 2026-01-08 02:56:37 +03:00
arabianq 89975cb124 change version to 1.3.1 2026-01-08 02:53:50 +03:00
arabianq 03e20ffa7e deps: bump rfd to 0.17.1 2026-01-08 02:53:16 +03:00
arabianq 8f7ea09ef5 deps: bump clap to 4.5.54 2026-01-08 02:49:54 +03:00
arabianq c639721f2a deps: bump serde_json to 1.0.149 2026-01-08 02:49:11 +03:00
arabianq 84512efda8 deps: bump tokio to 1.49.0 2026-01-08 02:48:23 +03:00
arabianq 6cf4a9744d replace println! with eprintln! for errors 2026-01-08 02:46:44 +03:00
arabianq d9ced4e650 fix: replace .except() with correct error handling 2026-01-08 02:45:07 +03:00
arabianq c1f3f34169 feat: pwsp-gui now uses Request::toggle_loop instead of set Request::set_loop 2026-01-02 04:41:00 +03:00
arabianq 6c06da7b0d feat: implemented toggle-loop 2026-01-02 04:39:48 +03:00
arabianq 023caa4616 change version to 1.3.0 2026-01-02 04:33:00 +03:00
arabianq fc593f8a8e cargo update 2026-01-02 04:24:32 +03:00
arabianq f281ad5a78 deps: bump serde_json to 1.0.148 2026-01-02 04:18:58 +03:00
arabianq fe8fec4ea7 fix: loop -> tokio::select! in pwsp-daemon main loop for less CPU usage 2026-01-02 04:12:49 +03:00
arabianq 7583e72687 fix: remove debug print statements from commands loop 2026-01-02 04:09:21 +03:00
arabianq e4b4a3d198 fix: remove unnecessary mutability in audio player lock 2026-01-02 03:59:56 +03:00
arabianq a7af1caace fix: highly improved GUI performance 2026-01-02 03:59:05 +03:00
arabianq c5086189d6 fix: changed position slider step from 1.0 to 0.01
now it looks fine when playing short files
2026-01-02 03:58:38 +03:00
arabianq ac667f1273 feat: make_request_sync now uses tokio instead of futures 2026-01-02 03:33:20 +03:00
arabianq fdb79e609f fix: deadlock in play_toggle 2026-01-02 03:32:56 +03:00
arabianq 531a49dbdf feat: implemented loop support in pwsp-gui 2026-01-02 03:18:51 +03:00
arabianq 2a13c25230 feat: implemented loop support in pwsp-cli 2026-01-02 02:57:34 +03:00
arabianq 408f5317c4 feat: implemented loop functionality on daemon level 2026-01-02 02:25:30 +03:00
arabianq 3672d6f43e feat: now pwsp-daemon main loop is separated into commands_loop and player_loop 2026-01-02 02:10:58 +03:00
arabianq cc3bec0746 fix: change get_state and get_position methods to take immutable reference 2026-01-02 02:09:10 +03:00
arabianq 180a69bd40 change version to 1.2.0 2025-12-16 21:08:47 +03:00
arabianq 6de51bc11c cargo update 2025-12-16 21:08:47 +03:00
arabianq bc9f086245 fix: do not display files from removed dir 2025-12-16 21:08:47 +03:00
arabianq f84cc03a6c now can select multiple dirs at once 2025-12-16 21:08:47 +03:00
arabianq 96dda1d8a9 fix: incorrect scroll bar rendering 2025-12-16 21:08:47 +03:00
arabianq 87b791ee3a new feature: pause playback when GUI window is closed 2025-12-16 21:08:47 +03:00
arabianq ae5da6d9bd new feature: now can play file without opening any dir 2025-12-16 21:08:47 +03:00
arabianq 546b6fd13f add toggle-pause command to pwsp-cli 2025-12-16 21:08:47 +03:00
arabianq e8d1947f18 change version to 1.1.4 2025-12-16 21:08:47 +03:00
arabianq 9e55cb5f8b cargo update 2025-12-16 21:08:47 +03:00
arabianq 7f57175519 bump clap version to 4.5.53 2025-12-16 21:08:47 +03:00
arabianq b21b32f746 bump egui and eframe to 0.33.3 2025-12-16 21:08:47 +03:00
arabianq 3827d54ba8 change version to 1.1.3 2025-12-16 21:08:47 +03:00
arabianq 9801b0cdf5 cargo update 2025-12-16 21:08:47 +03:00
arabianq 154f33b15b bump rfd to 0.16.0 2025-12-16 21:08:47 +03:00
arabianq fa217c3b25 fix not working with mono input devices 2025-12-16 21:08:47 +03:00
arabianq 1fb8daf389 change version to 1.1.2 2025-12-16 21:08:47 +03:00
arabianq f2213d1def fix incorrect volume slider width 2025-12-16 21:08:47 +03:00
arabianq 6997a6fa71 disable hotkeys when some widget is focused 2025-12-16 21:08:47 +03:00
arabianq e1ae768f26 change version to 1.1.1 2025-12-16 21:08:47 +03:00
arabianq 57c4461952 fix: crash when setting negative position 2025-12-16 21:08:47 +03:00
arabianq 5c46ff4a1e new hotkeys to select dirs, files. 2025-12-16 21:08:47 +03:00
arabianq 9112102c16 cargo update 2025-12-16 21:08:47 +03:00
arabianq 9d1eb8bee9 change version to 1.1.0 2025-12-16 21:08:47 +03:00
arabianq 39fe8a59c7 add 10s timeout before starting pwsp-daemon via systemd service 2025-12-16 21:08:47 +03:00
arabianq 5870f7d440 update dependencies 2025-12-16 21:08:47 +03:00
arabianq 4a060e4669 change version to 1.0.3 2025-12-16 21:08:47 +03:00
arabianq 3981833a3b call pipewire::init in every pipewire thread 2025-12-16 21:08:47 +03:00
arabianq 1ea84dbb28 cargo update 2025-12-16 21:08:47 +03:00
arabianq 195aa56ceb deps: update clap 2025-12-16 21:08:47 +03:00
arabianq b205800a66 deps: update egui, eframe, egui_material_icons 2025-12-16 21:08:47 +03:00
arabianq 5e538db201 fix: now systemd service should wait for pipewire to start 2025-12-16 21:08:47 +03:00
arabianq 0bcd23195f change pwsp version to 1.0.2 2025-12-16 21:08:47 +03:00
arabianq ca0196f927 update dependencies 2025-12-16 21:08:47 +03:00
arabianq 874c8063aa use device name instead of node id to get audio device 2025-12-16 21:08:47 +03:00
arabianq d877f79d5c fix pwsp.spec failed to build 2025-12-16 21:08:47 +03:00
arabianq 3cfd2cb9bd update descriptions in github actions to use new tags format 2025-12-16 21:08:47 +03:00
arabianq bf1f8410c1 change pwsp.spec to use new tags format 2025-12-16 21:08:47 +03:00
arabianq ad7c63617b change package version to 1.0.1 2025-12-16 21:08:47 +03:00
arabianq 00b25dde9d cargo update 2025-12-16 21:08:47 +03:00
arabianq e3118a4b89 bump serde version to 1.0.227 2025-12-16 21:08:47 +03:00
arabianq 23f5ee0d22 change code to work with pipewire 0.9.2 2025-12-16 21:08:47 +03:00
arabianq 5c4df232d5 bump pipewire crate to version 0.9.2 2025-12-16 21:08:47 +03:00
arabianq 7f0e6f7996 change: now, instead of the full path to the file, only its name is displayed at the top 2025-12-16 21:08:47 +03:00
arabianq ab60e6b0ab fix: too large directory names break the interface 2025-12-16 21:08:47 +03:00
arabianandarabianq 3b3c5c32f9 Delete scripts directory 2025-12-16 21:08:47 +03:00
arabianandarabianq 74b76dd61d Update README.md 2025-12-16 21:08:47 +03:00
arabianandarabianq 3b3db608e8 Update release-deb.yml
fix .deb uploading
2025-12-16 21:08:47 +03:00
arabianandarabianq b1a24cb50e Update release-deb.yml
change name
2025-12-16 21:08:47 +03:00
arabianandarabianq 1855a8b72c Create release-deb.yml 2025-12-16 21:08:47 +03:00
arabianandarabianq 42ab513ad9 Update and rename build-release.yml to release-archive.yml 2025-12-16 21:08:47 +03:00
arabianandarabianq ba04546b17 Update build-release.yml 2025-12-16 21:08:47 +03:00
arabianandarabianq 6feec98b4c Update build-release.yml
try to fix zip creation
2025-12-16 21:08:47 +03:00
arabianandarabianq 43e1c60baa Update build-release.yml
change workflow_dispatch description
2025-12-16 21:08:47 +03:00
arabianandarabianq 2f5fc04244 Update build-release.yml
add build dependencies installation
2025-12-16 21:08:47 +03:00
arabianandarabianq aa45a49c3a Create build-release.yml 2025-12-16 21:08:47 +03:00
arabianandarabianq dd8ff8b1bf Update README.md
add installation on Arch Linux from AUR
2025-12-16 21:08:47 +03:00
arabianq 25667ce0f0 update README.md 2025-12-16 21:08:47 +03:00
arabianq ccf48e6426 remove build_rpm.sh and cargo-generate-rpm mentions. Now copr handles rpm builds 2025-12-16 21:08:47 +03:00
arabianq da79be0d22 fix pwsp.spec 2025-12-16 21:08:47 +03:00
arabianq 01afb01198 add missing files to pwsp.spec 2025-12-16 21:08:47 +03:00
arabianq 37723ddc30 specify BuildRequires and %install manually in pwsp.spec 2025-12-16 21:08:47 +03:00
arabianq b672d9bd10 update pwsp.spec file 2025-12-16 21:08:47 +03:00
arabianq fa8a7b7590 update pwsp.spec file 2025-12-16 21:08:47 +03:00
arabianq d3c8706c33 update pwsp.spec file 2025-12-16 21:08:47 +03:00
arabianq 071e805457 fix Source url in pwsp.spec 2025-12-16 21:08:47 +03:00
arabianq 4f30f5047e add pwsp.spec 2025-12-16 21:08:47 +03:00
arabianq e173a27c6e remove generate_rpm_spec.sh 2025-12-16 21:08:47 +03:00
arabianq 5891cc071e use --path . in generate_rpm_spec 2025-12-16 21:08:47 +03:00
arabianq b02acb44fb add rust-pwsp.spec 2025-12-16 21:08:47 +03:00
arabianq c4a01a9f72 add generate_rpm_spec.sh and rust-pwsp.spec 2025-12-16 21:08:47 +03:00
arabianq be5a619b89 fix .rpm configuration 2025-12-16 21:08:47 +03:00
arabianq 00a3aa4ca4 new README 2025-12-16 21:08:47 +03:00
arabianq dee908a347 1.0.0 rewrite 2025-12-16 21:08:47 +03:00
arabianq 4f8681a8c6 clear README 2025-12-16 21:08:47 +03:00
arabianq 675f29f51f remove everything 2025-12-16 21:08:47 +03:00
arabianq 2efe16376c change version to 0.1.8 2025-12-16 21:08:47 +03:00
arabianq 607e30da7c cargo update 2025-12-16 21:08:47 +03:00
arabianq d6f96f3035 better imports 2025-12-16 21:08:47 +03:00
arabianq 81cea863e4 PlayerState::PLAYING -> PlayerState::Playing; PlayerState::PAUSED -> PlayerState::Paused 2025-12-16 21:08:47 +03:00
arabianq ac721d0c4d cargo clippy 2025-12-16 21:08:47 +03:00
arabianq 06f12cd740 bump egui and eframe to 0.32.3 2025-12-16 21:08:47 +03:00
arabianq dda87f3222 change version to 0.1.7 2025-12-16 21:08:47 +03:00
arabianq 8b1c4773c3 update egui and eframe to 0.32.2 2025-12-16 21:08:47 +03:00
arabianq 9b71c105fc change version to 0.1.6 2025-12-16 21:08:47 +03:00
arabianq 82d603cbab update deps 2025-12-16 21:08:47 +03:00
arabianq e6d0e6e128 fix crash when seeking 2025-12-16 21:08:47 +03:00
arabianandarabianq 4c62d9f1e7 Update README.md 2025-12-16 21:08:47 +03:00
arabianq c40251b2a1 version -> 0.1.5 2025-12-16 21:08:47 +03:00
arabianq b7fa90d37e update dependencies 2025-12-16 21:08:47 +03:00
arabianq e3b787204d rodio -> 0.21.1 2025-12-16 21:08:47 +03:00
arabianq 0a5d61b510 version -> 0.1.4 2025-12-16 21:08:47 +03:00
arabianq ef3cb0f48c fix incorrect dependency for deb package 2025-12-16 21:08:47 +03:00
arabianq 19b5e52ba6 update Cargo.toml 2025-12-16 21:08:47 +03:00
arabianq 6b75654511 egui, eframe -> 0.32.0; egui_material_icons -> 0.4.0 2025-12-16 21:08:47 +03:00
arabianq 22c5ca6384 update build scripts 2025-12-16 21:08:47 +03:00
arabianq eacfaaf8f6 update README 2025-12-16 21:08:47 +03:00
arabianq f3e574e8c9 update screenshot.png 2025-12-16 21:08:47 +03:00
arabianq cc02c6c3c0 new build scripts and .desktop file 2025-12-16 21:08:47 +03:00
arabianq 7ec53f259e version -> 0.1.31 2025-12-16 21:08:47 +03:00
arabianq dddd4c5440 maximum volume -> 1.0 from 5.0 2025-12-16 21:08:47 +03:00
arabianq 1a9836a7d9 version -> 0.1.3 2025-12-16 21:08:47 +03:00
arabianq 26eec0c0ef now use single settings file instead of many; minor refactoring 2025-12-16 21:08:47 +03:00
arabianq 3ba7a79010 new app::run function 2025-12-16 21:08:47 +03:00
arabianq 6ab54d7ec9 move creation of dirs to the separate function 2025-12-16 21:08:47 +03:00
arabianq af4f175e0c split main.rs into main.rs and app.rs 2025-12-16 21:08:47 +03:00
arabianq 9907408541 bump pwsp version to 0.1.2 2025-12-16 21:08:47 +03:00
arabianq b3e0d730da bump edition to 2024 2025-12-16 21:08:47 +03:00
arabianq edfd2ba9b7 fixed setting player position to 0 2025-12-16 21:08:47 +03:00
arabianq f2ce47cdcd bump egui, eframe and rfd versions 2025-12-16 21:08:47 +03:00
arabianq 6b10d365fc v0.1.1 - minor fixes 2025-12-16 21:08:47 +03:00
arabianq da756ccffe Added unlink() function 2025-12-16 21:08:47 +03:00
arabianq 5e99870a71 Update README.md 2025-12-16 21:08:47 +03:00
arabianq ed5d6f63b1 Added Cargo.lock 2025-12-16 21:08:47 +03:00
arabianandarabianq 89a58c27a0 Create LICENSE 2025-12-16 21:08:47 +03:00
arabianq 529d73aa83 Update Cargo.toml 2025-02-09 23:29:45 +03:00
arabianq c98bc997c3 first commit 2025-02-09 13:42:13 +03:00
310 changed files with 7186 additions and 285 deletions
+140
View File
@@ -0,0 +1,140 @@
name: Release archive
permissions:
contents: write
packages: write
on:
release:
types: [created]
workflow_dispatch:
inputs:
tag:
description: 'Tag to attach assets to (e.g. v1.0.0)'
required: false
jobs:
build-and-release:
runs-on: ubuntu-latest
steps:
- name: Install apt deps (jq/zip + dev-libs)
run: |
sudo apt-get update
sudo apt-get install -y \
zip jq \
libpipewire-0.3-dev \
libclang-dev \
libasound2-dev
- name: Determine tag to use
id: tag
run: |
set -euo pipefail
# приоритет 1: входной параметр workflow_dispatch
INPUT_TAG="${{ github.event.inputs.tag || '' }}"
if [ -n "$INPUT_TAG" ]; then
echo "Using input tag: $INPUT_TAG"
echo "tag=$INPUT_TAG" >> $GITHUB_OUTPUT
exit 0
fi
# приоритет 2: если запущено событием release
EVENT_TAG="${{ github.event.release.tag_name || '' }}"
if [ -n "$EVENT_TAG" ]; then
echo "Using event tag: $EVENT_TAG"
echo "tag=$EVENT_TAG" >> $GITHUB_OUTPUT
exit 0
fi
# приоритет 3: если GITHUB_REF — refs/tags/...
if [[ "${GITHUB_REF:-}" =~ ^refs/tags/(.+)$ ]]; then
echo "Using GITHUB_REF tag: ${BASH_REMATCH[1]}"
echo "tag=${BASH_REMATCH[1]}" >> $GITHUB_OUTPUT
exit 0
fi
# приоритет 4: пробуем получить последний релиз через API
echo "No tag in input/event/GITHUB_REF — querying latest release via API..."
LATEST_JSON=$(curl -sSf -H "Authorization: Bearer $GITHUB_TOKEN" -H "Accept: application/vnd.github+json" "https://api.github.com/repos/${{ github.repository }}/releases/latest" || true)
TAG_NAME=$(echo "$LATEST_JSON" | jq -r '.tag_name // empty')
if [ -n "$TAG_NAME" ]; then
echo "Found latest release tag: $TAG_NAME"
echo "tag=$TAG_NAME" >> $GITHUB_OUTPUT
exit 0
fi
echo "No tag found"
echo "tag=" >> $GITHUB_OUTPUT
- name: Fail if no tag determined
if: ${{ steps.tag.outputs.tag == '' }}
run: |
echo "ERROR: No tag determined. Provide a tag when running manually or ensure a release exists."
exit 1
- name: Checkout code at tag
uses: actions/checkout@v4
with:
ref: ${{ steps.tag.outputs.tag || github.ref }}
fetch-depth: 0
- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Extract all binary names
id: cargo-meta
run: |
set -euo pipefail
BIN_NAMES=$(cargo metadata --no-deps --format-version 1 \
| jq -r '.packages[0].targets[] | select(.kind[] | contains("bin")) | .name')
# сохраним построчно в выход
echo "bin_names<<EOF" >> $GITHUB_OUTPUT
echo "$BIN_NAMES" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Build all release binaries
run: cargo build --release --locked
- name: Package all binaries into one archive
shell: bash
run: |
set -euo pipefail
TAG="${{ steps.tag.outputs.tag }}"
ARCHIVE_NAME="pwsp-${TAG}-linux-x64.zip"
echo "Creating archive: $ARCHIVE_NAME"
# читаем построчно список бинарников и формируем массив файлов
FILES=()
while IFS= read -r BIN; do
[ -z "$BIN" ] && continue
FILES+=("target/release/$BIN")
done <<< "${{ steps.cargo-meta.outputs.bin_names }}"
if [ "${#FILES[@]}" -eq 0 ]; then
echo "Error: no binaries were discovered via cargo metadata." >&2
exit 1
fi
# проверим, что все бинарники действительно есть
for f in "${FILES[@]}"; do
if [ ! -f "$f" ]; then
echo "Error: expected binary not found: $f" >&2
exit 1
fi
echo "Will add: $f"
done
# создаём архив с бинарниками внутри как просто pwsp-gui, pwsp-daemon, pwsp-cli
zip -j "$ARCHIVE_NAME" "${FILES[@]}"
- name: Upload release archive
uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ steps.tag.outputs.tag }}
files: |
pwsp-*.zip
+102
View File
@@ -0,0 +1,102 @@
name: Release deb
permissions:
contents: write
packages: write
on:
release:
types: [created]
workflow_dispatch:
inputs:
tag:
description: 'Tag to attach assets to (e.g. v1.0.0)'
required: false
jobs:
build-and-release:
runs-on: ubuntu-latest
steps:
- name: Install apt deps (jq/zip + dev-libs)
run: |
sudo apt-get update
sudo apt-get install -y \
zip jq \
libpipewire-0.3-dev \
libclang-dev \
libasound2-dev
- name: Determine tag to use
id: tag
run: |
set -euo pipefail
INPUT_TAG="${{ github.event.inputs.tag || '' }}"
if [ -n "$INPUT_TAG" ]; then
echo "Using input tag: $INPUT_TAG"
echo "tag=$INPUT_TAG" >> $GITHUB_OUTPUT
exit 0
fi
EVENT_TAG="${{ github.event.release.tag_name || '' }}"
if [ -n "$EVENT_TAG" ]; then
echo "Using event tag: $EVENT_TAG"
echo "tag=$EVENT_TAG" >> $GITHUB_OUTPUT
exit 0
fi
if [[ "${GITHUB_REF:-}" =~ ^refs/tags/(.+)$ ]]; then
echo "Using GITHUB_REF tag: ${BASH_REMATCH[1]}"
echo "tag=${BASH_REMATCH[1]}" >> $GITHUB_OUTPUT
exit 0
fi
echo "No tag in input/event/GITHUB_REF — querying latest release via API..."
LATEST_JSON=$(curl -sSf -H "Authorization: Bearer $GITHUB_TOKEN" -H "Accept: application/vnd.github+json" "https://api.github.com/repos/${{ github.repository }}/releases/latest" || true)
TAG_NAME=$(echo "$LATEST_JSON" | jq -r '.tag_name // empty')
if [ -n "$TAG_NAME" ]; then
echo "Found latest release tag: $TAG_NAME"
echo "tag=$TAG_NAME" >> $GITHUB_OUTPUT
exit 0
fi
echo "No tag found"
echo "tag=" >> $GITHUB_OUTPUT
- name: Fail if no tag determined
if: ${{ steps.tag.outputs.tag == '' }}
run: |
echo "ERROR: No tag determined. Provide a tag when running manually or ensure a release exists."
exit 1
- name: Checkout code at tag
uses: actions/checkout@v4
with:
ref: ${{ steps.tag.outputs.tag || github.ref }}
fetch-depth: 0
- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Build all release binaries
run: cargo build --release --locked
- name: Install cargo-deb and create .deb
shell: bash
run: |
set -euo pipefail
cargo install --locked cargo-deb
export PATH="$HOME/.cargo/bin:$PATH"
cargo-deb
- name: Upload .deb(s) to release
uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ steps.tag.outputs.tag }}
files: |
target/debian/*.deb
+2
View File
@@ -0,0 +1,2 @@
/target
.idea
View File
View File
Generated
+4035
View File
File diff suppressed because it is too large Load Diff
+59
View File
@@ -0,0 +1,59 @@
[package]
name = "pwsp"
version = "1.3.2"
edition = "2024"
authors = ["arabian"]
description = "PWSP lets you play audio files through your microphone. Has both CLI and GUI clients."
readme = "README.md"
homepage = "https://pwsp.arabianq.ru"
repository = "https://github.com/arabianq/pipewire-soundpad"
license = "MIT"
keywords = ["soundpad", "pipewire", "linux", "cli", "gui"]
[dependencies]
tokio = { version = "1.49.0", features = ["full"] }
async-trait = "0.1.89"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
clap = { version = "4.5.54", default-features = false, features = ["std", "suggestions", "help", "usage", "error-context", "derive"] }
dirs = "6.0.0"
rodio = { version = "0.21.1", default-features = false, features = ["symphonia-all", "playback"] }
pipewire = "0.9.2"
rfd = { version = "0.17.2", default-features = false, features = ["xdg-portal"]}
egui = { version = "0.33.3", default-features = false, features = ["default_fonts", "rayon"] }
eframe = { version = "0.33.3", default-features = false, features = ["default_fonts", "glow", "x11", "wayland"] }
egui_material_icons = "0.5.0"
[[bin]]
name = "pwsp-daemon"
path = "src/bin/daemon.rs"
[[bin]]
name = "pwsp-cli"
path = "src/bin/cli.rs"
[[bin]]
name = "pwsp-gui"
path = "src/main.rs"
[profile.release]
strip = true
lto = true
codegen-units = 1
opt-level = "z"
panic = "abort"
[package.metadata.deb]
assets = [
["target/release/pwsp-daemon", "usr/bin/", "755"],
["target/release/pwsp-cli", "usr/bin/", "755"],
["target/release/pwsp-gui", "usr/bin/", "755"],
["assets/pwsp-gui.desktop", "usr/share/applications/pwsp.desktop", "644"],
["assets/icon.png", "usr/share/icons/hicolor/256x256/apps/pwsp.png", "644"],
["assets/pwsp-daemon.service", "usr/lib/systemd/user/pwsp-daemon.service", "644"],
]
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 Tarasov Alexander
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+185
View File
@@ -0,0 +1,185 @@
# **🎵 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**.
![screenshot.png](assets/screenshot.png)
# **🌟 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](https://egui.rs) 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, .deb and .rpm packages from
the [releases page](https://github.com/arabianq/pipewire-soundpad/releases).
## **Fedora Linux**
If you're using Fedora, you can install PWSP from a dedicated repository using DNF.
Add the repository:
```bash
sudo dnf copr enable arabianq/pwsp
```
Update cache:
```bash
sudo dnf makecache
```
Install PWSP:
```bash
sudo dnf install pwsp
```
## **Arch Linux**
There is pwsp package in AUR.
You can install it using yay, paru or any other AUR helper.
```bash
paru pwsp
```
## **Installing using cargo**
```bash
cargo install pwsp
```
## **Building from source**
#### **Requirements**
* **Rust**: Install [Rust](https://www.rust-lang.org/tools/install) (using rustup is recommended).
* **PipeWire**: Ensure that [PipeWire](https://pipewire.org/) is installed and running on your system.
#### **Build Instructions**
Clone the repository:
```bash
git clone https://github.com/arabianq/pipewire-soundpad.git
cd pipewire-soundpad
```
Build the project:
```bash
cargo build --release
```
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:**
```bash
/path/to/your/pwsp-daemon &
```
* **Using systemd (recommended):**
If you installed PWSP using prebuilt packages, the systemd service is added automatically.
1. **Start the service:**
```bash
systemctl --user start pwsp-daemon
```
2. **Enable autostart (starts on login):**
```bash
systemctl --user enable --now pwsp-daemon
```
### **Using the GUI**
1. **Add Sounds**: Click the **"Add Directory"** button and select a folder containing your audio files. The application
will automatically list all supported files.
2. **Select Microphone**: In the main application window, select your **physical microphone**. PWSP will automatically
create a virtual microphone and feed it sound from two sources: **your microphone** and the **audio files**.
3. **Playback**: Click on a file in the list to load it, then use the **"Play"** and **"Pause"** buttons to control
playback.
### **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:
```bash
pwsp-cli --help
```
* **Example Commands**:
* **Play a file**:
```bash
pwsp-cli action play <file_path>
```
* **Get the current volume**:
```bash
pwsp-cli get volume
```
* **Set playback position to 20 seconds**:
```bash
pwsp-cli set position 20
```
# **🤝 Contributing**
Contributions are welcome\! If you have ideas for improvements or find a bug, feel free to create
an [issue](https://github.com/arabianq/pipewire-soundpad/issues) or submit
a [pull request](https://github.com/arabianq/pipewire-soundpad/pulls).
# **📜 License**
This project is licensed under
the [MIT License](https://github.com/arabianq/pipewire-soundpad/blob/main/LICENSE).
-15
View File
@@ -1,15 +0,0 @@
Origin: arabianq
Label: PipeWire Soundpad
Codename: stable
Architectures: amd64 arm64
Components: main
Description: APT Repository for PWSP
SignWith: AAE3C56B1E2D3677108CF28083C9B0DB2C8F9D16
Origin: arabianq
Label: PipeWire Soundpad
Codename: nightly
Architectures: amd64 arm64
Components: main
Description: Nightly APT Repository for PWSP
SignWith: AAE3C56B1E2D3677108CF28083C9B0DB2C8F9D16
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-4
View File
@@ -1,4 +0,0 @@
5.3.1
3.3.0
bdb5.3.28
bdb5.3.0
-38
View File
@@ -1,38 +0,0 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Origin: arabianq
Label: PipeWire Soundpad
Codename: nightly
Date: Sun, 05 Jul 2026 19:24:44 UTC
Architectures: amd64 arm64
Components: main
Description: Nightly APT Repository for PWSP
MD5Sum:
6bfd4df9927c7a13866166ff4f059879 650 main/binary-amd64/Packages
98a259db26140cac74adf193e732aa8d 450 main/binary-amd64/Packages.gz
facbb80485897bc6e0d67e37e5dd38e8 123 main/binary-amd64/Release
dfb46875d0fdcee69095ba17ec62b160 677 main/binary-arm64/Packages
895e04b52ec03790ea50c97dce503e27 461 main/binary-arm64/Packages.gz
7418f9ee7493009aeaa4417f5d11ee62 123 main/binary-arm64/Release
SHA1:
aa7a821fb465f122b96d21b8a9dc83f2fec35f16 650 main/binary-amd64/Packages
fbc780a24199aa51b73e2359c4859aa2fdecdecd 450 main/binary-amd64/Packages.gz
66d8024fbaf66bb3aa03e04c8784ffc2d45d5e92 123 main/binary-amd64/Release
ba50298a40d65896b36b3d7cc9e6eb08c6cae5fb 677 main/binary-arm64/Packages
06caee3b4c4f73b4fb3b377ebf62a662eaf89b0b 461 main/binary-arm64/Packages.gz
f7984ac62248818b3d8a2c59250042d426414d8c 123 main/binary-arm64/Release
SHA256:
fb43dd1059415ba64226e31b956c6b6743d0f14175d2c085c7360d63ebc04c1e 650 main/binary-amd64/Packages
a4c2a63014f75c24a95dbea77d0500b7c78a483a95b0d56c2a9386c9a4aaf8d4 450 main/binary-amd64/Packages.gz
b5a22f248703739051a84b584c2b0ea20a9b69b28e823c5a8b0aca5f33f90bba 123 main/binary-amd64/Release
6b5a49c0cec55ecf1ff67d66e18910986e021b37dd14e2d9ca96d42ec2b840e9 677 main/binary-arm64/Packages
6299f973fc9132a19382b350cd540f452e5e54f6456cc8b86b6b338b55ac9c03 461 main/binary-arm64/Packages.gz
a5e6d2298cf4bded7fd380a4bb06d97be39e9ea1a0b42acd5190a44aad619c92 123 main/binary-arm64/Release
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQSq48VrHi02dxCM8oCDybDbLI+dFgUCakqvfQAKCRCDybDbLI+d
FoSWAPwPk1YGSdEA2ID7/82YbTpHuMaazDmJq7ZXBvKOhQsL5QD/TjVlBYt0gd9H
8tLxJMDS5gzhwdMavAc2TIygQ5T/tA8=
=e+sa
-----END PGP SIGNATURE-----
-28
View File
@@ -1,28 +0,0 @@
Origin: arabianq
Label: PipeWire Soundpad
Codename: nightly
Date: Sun, 05 Jul 2026 19:24:44 UTC
Architectures: amd64 arm64
Components: main
Description: Nightly APT Repository for PWSP
MD5Sum:
6bfd4df9927c7a13866166ff4f059879 650 main/binary-amd64/Packages
98a259db26140cac74adf193e732aa8d 450 main/binary-amd64/Packages.gz
facbb80485897bc6e0d67e37e5dd38e8 123 main/binary-amd64/Release
dfb46875d0fdcee69095ba17ec62b160 677 main/binary-arm64/Packages
895e04b52ec03790ea50c97dce503e27 461 main/binary-arm64/Packages.gz
7418f9ee7493009aeaa4417f5d11ee62 123 main/binary-arm64/Release
SHA1:
aa7a821fb465f122b96d21b8a9dc83f2fec35f16 650 main/binary-amd64/Packages
fbc780a24199aa51b73e2359c4859aa2fdecdecd 450 main/binary-amd64/Packages.gz
66d8024fbaf66bb3aa03e04c8784ffc2d45d5e92 123 main/binary-amd64/Release
ba50298a40d65896b36b3d7cc9e6eb08c6cae5fb 677 main/binary-arm64/Packages
06caee3b4c4f73b4fb3b377ebf62a662eaf89b0b 461 main/binary-arm64/Packages.gz
f7984ac62248818b3d8a2c59250042d426414d8c 123 main/binary-arm64/Release
SHA256:
fb43dd1059415ba64226e31b956c6b6743d0f14175d2c085c7360d63ebc04c1e 650 main/binary-amd64/Packages
a4c2a63014f75c24a95dbea77d0500b7c78a483a95b0d56c2a9386c9a4aaf8d4 450 main/binary-amd64/Packages.gz
b5a22f248703739051a84b584c2b0ea20a9b69b28e823c5a8b0aca5f33f90bba 123 main/binary-amd64/Release
6b5a49c0cec55ecf1ff67d66e18910986e021b37dd14e2d9ca96d42ec2b840e9 677 main/binary-arm64/Packages
6299f973fc9132a19382b350cd540f452e5e54f6456cc8b86b6b338b55ac9c03 461 main/binary-arm64/Packages.gz
a5e6d2298cf4bded7fd380a4bb06d97be39e9ea1a0b42acd5190a44aad619c92 123 main/binary-arm64/Release
-7
View File
@@ -1,7 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iHUEABYKAB0WIQSq48VrHi02dxCM8oCDybDbLI+dFgUCakqvfAAKCRCDybDbLI+d
Fo9jAP4/71ld5H4YAOr2w4rWlAcqto2truao6TYmyXFwz8CZAwEA8394vMQeM4WS
ycHkUTKD6layzdu3o4a0tzk6nJNoPAk=
=O6oF
-----END PGP SIGNATURE-----
@@ -1,17 +0,0 @@
Package: pwsp
Version: 1.12.3+git20260705.c2f4658
Architecture: amd64
Homepage: https://pwsp.arabianq.ru
Maintainer: arabian
Installed-Size: 37178
Depends: libasound2t64 (>= 1.1.0), libc6 (>= 2.34), libc6 (>= 2.39), libpipewire-0.3-0t64 (>= 0.3.1), libssl3t64 (>= 3.0.0)
Priority: optional
Section: sound
Filename: pool/main/p/pwsp/pwsp_1.12.3+git20260705.c2f4658_amd64.deb
Size: 8787644
SHA256: 1780724e53845b2cfd5c886e99b5b70591c731a8688672f21d6a2bf08a1481b9
SHA1: 6d6e59c86e757e74cf267d87b4658eb34cf65f85
MD5sum: c66acffe4656d4d53406918642b6e918
Description: PWSP lets you play audio files through your microphone. Has both CLI and GUI
clients.
Binary file not shown.
@@ -1,5 +0,0 @@
Component: main
Origin: arabianq
Label: PipeWire Soundpad
Architecture: amd64
Description: Nightly APT Repository for PWSP
@@ -1,17 +0,0 @@
Package: pwsp
Version: 1.12.3+git20260705.c2f4658
Architecture: arm64
Homepage: https://pwsp.arabianq.ru
Maintainer: arabian
Installed-Size: 35078
Depends: libasound2t64 (>= 1.0.16), libasound2t64 (>= 1.1.0), libc6 (>= 2.34), libc6 (>= 2.39), libpipewire-0.3-0t64 (>= 0.3.1), libssl3t64 (>= 3.0.0)
Priority: optional
Section: sound
Filename: pool/main/p/pwsp/pwsp_1.12.3+git20260705.c2f4658_arm64.deb
Size: 7870840
SHA256: cb93ea739a37544dbb4c9ce9aef7b5c6d76ab97014041f91982e11c837747ec1
SHA1: e58c766a2137f36977d6451e089aba9d78ece5f5
MD5sum: 69e54a4f5fce511320868ac0a4cb922c
Description: PWSP lets you play audio files through your microphone. Has both CLI and GUI
clients.
Binary file not shown.
@@ -1,5 +0,0 @@
Component: main
Origin: arabianq
Label: PipeWire Soundpad
Architecture: arm64
Description: Nightly APT Repository for PWSP
-38
View File
@@ -1,38 +0,0 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Origin: arabianq
Label: PipeWire Soundpad
Codename: stable
Date: Sun, 05 Jul 2026 18:53:39 UTC
Architectures: amd64 arm64
Components: main
Description: APT Repository for PWSP
MD5Sum:
1a66bb3fa7022471fcbddb76e805086a 614 main/binary-amd64/Packages
334ed3b3f3cedc6406545417abf9d13b 438 main/binary-amd64/Packages.gz
f82d685802fbb32fec3c9ba8e11e55b9 115 main/binary-amd64/Release
8a7bbcc3dd27ac9151a2329731acb54f 614 main/binary-arm64/Packages
0b91db8e02e57c584ffaee7a5cb560d5 437 main/binary-arm64/Packages.gz
113dd4f621500874592b2a2f1eeb45ae 115 main/binary-arm64/Release
SHA1:
2510f93cca3c207a0e1ce9142fdc35c303d1fea5 614 main/binary-amd64/Packages
99b4d466b68b8a21b9757d2953a3e9c93175c025 438 main/binary-amd64/Packages.gz
1ff55a261c49c41f38e6da56f1f5d7136d38b08f 115 main/binary-amd64/Release
3e86a48a2167361dd41ef54ff464828e26a2bb20 614 main/binary-arm64/Packages
b4ed128eaa1f980b97bbb6db6ae9be6b4bbcfe3e 437 main/binary-arm64/Packages.gz
be63fa980d70857efdc424c837cd54ab986a40cd 115 main/binary-arm64/Release
SHA256:
3a49a9daf84bdd622f5812dcb403d419941a2393721a20e746d957399994a3b3 614 main/binary-amd64/Packages
4a0f5dfba6fec89ae6d23499d2a9fe3dc3c3a4c9512c44ba0fc526f580f5e915 438 main/binary-amd64/Packages.gz
c670ad086ec5b85d17211cb15e8e4ac1fb49a6398d0c9672992c26a009229d8c 115 main/binary-amd64/Release
19ff13f0f7fc035f7d3b904695f0b05fe1139ee4465a61c09d4acc224e91dade 614 main/binary-arm64/Packages
b6f7241e29bd7d18844e3fd9c324f709721dde8d27432804a209c3de9e78ad29 437 main/binary-arm64/Packages.gz
4a90ce2395fbe57635b23de83540564c0917b2f419cd69ab2630fc1520bb5c11 115 main/binary-arm64/Release
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQSq48VrHi02dxCM8oCDybDbLI+dFgUCakqoMwAKCRCDybDbLI+d
Fv+FAQD9xZPM77UZrI/Ze6wCt7tYtpD3btLVJQIcRWuVQhtemQD/fkNVdZ9DBgFw
mLZH/E2xC5bm9a5626UnQYrizapD9gQ=
=3Gpf
-----END PGP SIGNATURE-----
-28
View File
@@ -1,28 +0,0 @@
Origin: arabianq
Label: PipeWire Soundpad
Codename: stable
Date: Sun, 05 Jul 2026 18:53:39 UTC
Architectures: amd64 arm64
Components: main
Description: APT Repository for PWSP
MD5Sum:
1a66bb3fa7022471fcbddb76e805086a 614 main/binary-amd64/Packages
334ed3b3f3cedc6406545417abf9d13b 438 main/binary-amd64/Packages.gz
f82d685802fbb32fec3c9ba8e11e55b9 115 main/binary-amd64/Release
8a7bbcc3dd27ac9151a2329731acb54f 614 main/binary-arm64/Packages
0b91db8e02e57c584ffaee7a5cb560d5 437 main/binary-arm64/Packages.gz
113dd4f621500874592b2a2f1eeb45ae 115 main/binary-arm64/Release
SHA1:
2510f93cca3c207a0e1ce9142fdc35c303d1fea5 614 main/binary-amd64/Packages
99b4d466b68b8a21b9757d2953a3e9c93175c025 438 main/binary-amd64/Packages.gz
1ff55a261c49c41f38e6da56f1f5d7136d38b08f 115 main/binary-amd64/Release
3e86a48a2167361dd41ef54ff464828e26a2bb20 614 main/binary-arm64/Packages
b4ed128eaa1f980b97bbb6db6ae9be6b4bbcfe3e 437 main/binary-arm64/Packages.gz
be63fa980d70857efdc424c837cd54ab986a40cd 115 main/binary-arm64/Release
SHA256:
3a49a9daf84bdd622f5812dcb403d419941a2393721a20e746d957399994a3b3 614 main/binary-amd64/Packages
4a0f5dfba6fec89ae6d23499d2a9fe3dc3c3a4c9512c44ba0fc526f580f5e915 438 main/binary-amd64/Packages.gz
c670ad086ec5b85d17211cb15e8e4ac1fb49a6398d0c9672992c26a009229d8c 115 main/binary-amd64/Release
19ff13f0f7fc035f7d3b904695f0b05fe1139ee4465a61c09d4acc224e91dade 614 main/binary-arm64/Packages
b6f7241e29bd7d18844e3fd9c324f709721dde8d27432804a209c3de9e78ad29 437 main/binary-arm64/Packages.gz
4a90ce2395fbe57635b23de83540564c0917b2f419cd69ab2630fc1520bb5c11 115 main/binary-arm64/Release
-7
View File
@@ -1,7 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iHUEABYKAB0WIQSq48VrHi02dxCM8oCDybDbLI+dFgUCakqoMwAKCRCDybDbLI+d
Fn2+AP917sKN36Oawrfs0o+aNBfplXPbLukgibfadL1l7nS3QwEA5b9DV9KLzrqm
MkoQGgWYNExawNh5HDC3bQXuHkRHjgM=
=X+y2
-----END PGP SIGNATURE-----
@@ -1,17 +0,0 @@
Package: pwsp
Version: 1.12.3-1
Architecture: amd64
Homepage: https://pwsp.arabianq.ru
Maintainer: arabian
Installed-Size: 14049
Depends: libasound2t64 (>= 1.1.0), libc6 (>= 2.34), libc6 (>= 2.39), libpipewire-0.3-0t64 (>= 0.3.1), libssl3t64 (>= 3.0.0)
Priority: optional
Section: sound
Filename: pool/main/p/pwsp/pwsp_1.12.3-1_amd64.deb
Size: 4473344
SHA256: 2168446169fe7f3fe8b20559e216ac1a9f675d483989f28157777f5da0263df7
SHA1: d8731cabf365e2e6f15fc20490b5cd83101c7232
MD5sum: c2410a797ec25cc455798fe15bd3e0d6
Description: PWSP lets you play audio files through your microphone. Has both CLI and GUI
clients.
Binary file not shown.
@@ -1,5 +0,0 @@
Component: main
Origin: arabianq
Label: PipeWire Soundpad
Architecture: amd64
Description: APT Repository for PWSP
@@ -1,17 +0,0 @@
Package: pwsp
Version: 1.12.3-1
Architecture: arm64
Homepage: https://pwsp.arabianq.ru
Maintainer: arabian
Installed-Size: 11582
Depends: libasound2t64 (>= 1.1.0), libc6 (>= 2.34), libc6 (>= 2.39), libpipewire-0.3-0t64 (>= 0.3.1), libssl3t64 (>= 3.0.0)
Priority: optional
Section: sound
Filename: pool/main/p/pwsp/pwsp_1.12.3-1_arm64.deb
Size: 3963168
SHA256: 3767bb8bcdf2186dad6dc4f62c0e17aa70025161359e04e86e5b0b1e6ed93125
SHA1: 3952a63c85c98d859726e3c16378ac63ce7de25d
MD5sum: 5ad8ae5a66f3d754d0f44171a3ab67d3
Description: PWSP lets you play audio files through your microphone. Has both CLI and GUI
clients.
Binary file not shown.
@@ -1,5 +0,0 @@
Component: main
Origin: arabianq
Label: PipeWire Soundpad
Architecture: arm64
Description: APT Repository for PWSP
Binary file not shown.
Binary file not shown.
-13
View File
@@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaezCthYJKwYBBAHaRw8BAQdAyDiO0akghMksZ6O02KlelezoaePzXhH8yNWS
eAWTuRi0DGEudGV2Z0B5YS5ydYiZBBMWCgBBFiEEquPFax4tNncQjPKAg8mw2yyP
nRYFAmnswrYCGwMFCQWjmoAFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQ
g8mw2yyPnRbXawEAo0EPrAfePpIVj+CIph+Muj1ZU9Ui5+CD32J9XtSJYRcBANTz
txOH1oG5n3eFZ/HCnU4Z+yiqEhGI2b//fC8jxx0HuDgEaezCthIKKwYBBAGXVQEF
AQEHQEt/m+vl2KMpu+TZWaLDa6jnR3ctu3xbYpjfqDtOl+YnAwEIB4h4BBgWCgAg
FiEEquPFax4tNncQjPKAg8mw2yyPnRYFAmnswrYCGwwACgkQg8mw2yyPnRbEHAD+
PiMF1s5ZYNlfp3RcOTasrasWDjmCXvFYbeM3vWCAO94BAIlfzEZKodeZ4jfTuf+u
QoXpv5yiGFpf7xFOxcvXE38B
=F4OX
-----END PGP PUBLIC KEY BLOCK-----
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+12
View File
@@ -0,0 +1,12 @@
[Unit]
Description=Pipewire Soundpad Daemon
After=pipewire.service
[Service]
ExecStartPre=/usr/bin/sleep 10
ExecStart=/usr/bin/pwsp-daemon
Restart=no
RuntimeDirectory=pwsp
[Install]
WantedBy=default.target
+8
View File
@@ -0,0 +1,8 @@
[Desktop Entry]
Name=PWSP (Soundpad)
Comment=Let's you play audio files through you microphone
Exec=pwsp-gui %u
Icon=pwsp
Terminal=false
Type=Application
Categories=Audio
Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

-4
View File
@@ -1,4 +0,0 @@
[core]
repo_version=1
mode=archive-z2
indexed-deltas=true

Some files were not shown because too many files have changed in this diff Show More