mirror of
https://github.com/arabianq/pipewire-soundpad.git
synced 2026-07-27 14:14:13 +00:00
Compare commits
328
Commits
1d1df22920
..
v1.9.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ef3f8d76e | ||
|
|
bec77f59bd | ||
|
|
dad1a62798 | ||
|
|
84a4a01282 | ||
|
|
88995f6fd1 | ||
|
|
660ece9866 | ||
|
|
f2dcf2e0fe | ||
|
|
fe655be59a | ||
|
|
78960cdc10 | ||
|
|
0439cf815e | ||
|
|
5ae82ef28c | ||
|
|
5f69345d45 | ||
|
|
930857312d | ||
|
|
e884993dba | ||
|
|
05dd4319cc | ||
|
|
e320c85a6f | ||
|
|
f02bbc1e1c | ||
|
|
02f1116076 | ||
|
|
8155cceac8 | ||
|
|
d974a93c04 | ||
|
|
c6d9f2d6e7 | ||
|
|
dc1ecc81ea | ||
|
|
9b70bcd69d | ||
|
|
a07025b1f6 | ||
|
|
c1d145fbc8 | ||
|
|
3d4b59761b | ||
|
|
ca9b5dd517 | ||
|
|
6863c9a6f8 | ||
|
|
958a3efde5 | ||
|
|
30e75e924c | ||
|
|
2b4b7ea730 | ||
|
|
dafe67f35f | ||
|
|
8fa22ca5b0 | ||
|
|
d72eaabf54 | ||
|
|
377b218592 | ||
|
|
911417af40 | ||
|
|
573958c05b | ||
|
|
0bb7ef3f33 | ||
|
|
10f07cd895 | ||
|
|
b2f2894aa1 | ||
|
|
e6c8d720d5 | ||
|
|
a6d93ff528 | ||
|
|
bcf791d84c | ||
|
|
e4b0b10393 | ||
|
|
11de96db58 | ||
|
|
7396c0aef8 | ||
|
|
fc2cd5e2da | ||
|
|
1a37729cf1 | ||
|
|
86b38a250e | ||
|
|
54fa278cea | ||
|
|
db040aa820 | ||
|
|
04449e7525 | ||
|
|
9f50809a99 | ||
|
|
7dda4bc2b1 | ||
|
|
1569955e12 | ||
|
|
9adc6cfbda | ||
|
|
76b1d4f345 | ||
|
|
10f9937dc3 | ||
|
|
498c09eb50 | ||
|
|
78e0a133b6 | ||
|
|
7f8b7194b6 | ||
|
|
302f153b91 | ||
|
|
f87dcb1564 | ||
|
|
d4d16f6ce7 | ||
|
|
949307fcf8 | ||
|
|
2a8fcca06b | ||
|
|
5c4b8f4b45 | ||
|
|
70c7e3789b | ||
|
|
5367a3daae | ||
|
|
42c0170044 | ||
|
|
cb56cb3a04 | ||
|
|
5a2418325d | ||
|
|
a948ea2dcd | ||
|
|
a156df346b | ||
|
|
7a13ae55a6 | ||
|
|
b2b83f5c32 | ||
|
|
f01a0e656c | ||
|
|
6114b9a7f8 | ||
|
|
b8baeb6226 | ||
|
|
02306b5893 | ||
|
|
3add499bd7 | ||
|
|
3c2e943e18 | ||
|
|
261f83efd4 | ||
|
|
c6577cd5e0 | ||
|
|
95761f6a5a | ||
|
|
d6effc972e | ||
|
|
498d0d25af | ||
|
|
c99d0749e3 | ||
|
|
151f43f1ab | ||
|
|
077518019f | ||
|
|
968eba80e6 | ||
|
|
aa77a8d212 | ||
|
|
4b50645c93 | ||
|
|
39648f7781 | ||
|
|
c649ef5410 | ||
|
|
0dfd841e6d | ||
|
|
89ce111542 | ||
|
|
80a8b1a45f | ||
|
|
f5c7d9bb2c | ||
|
|
bcd39eb6a2 | ||
|
|
47a7674c14 | ||
|
|
d33ee0c69e | ||
|
|
624310eae5 | ||
|
|
92a576de37 | ||
|
|
ce948ce678 | ||
|
|
e72fc519a0 | ||
|
|
8126efe8d9 | ||
|
|
a7dd0b97d1 | ||
|
|
5f9aad7fa2 | ||
|
|
7e66a9241b | ||
|
|
02ad7337a1 | ||
|
|
c08898e4f2 | ||
|
|
ed8b04caa9 | ||
|
|
58e5f039be | ||
|
|
eb89733715 | ||
|
|
476fd325ef | ||
|
|
da49c96e53 | ||
|
|
f0e05379f7 | ||
|
|
3d3523fd7a | ||
|
|
81da36f03c | ||
|
|
8bfa5daf78 | ||
|
|
b816d2aa88 | ||
|
|
23ae562849 | ||
|
|
e3bc1fd55f | ||
|
|
15964f205b | ||
|
|
6a0ac61033 | ||
|
|
4b802273f4 | ||
|
|
baae7a1ccf | ||
|
|
654694cecf | ||
|
|
04ecf66beb | ||
|
|
0fe94f9112 | ||
|
|
9fbe42c201 | ||
|
|
fac04c4533 | ||
|
|
f93852bf8e | ||
|
|
1bb0aa959a | ||
|
|
7a1723fbcb | ||
|
|
712a0968a7 | ||
|
|
e98e6bc2f3 | ||
|
|
5007b483aa | ||
|
|
b936b58e75 | ||
|
|
502ef2ed89 | ||
|
|
ce5910b9a6 | ||
|
|
b0c670235e | ||
|
|
f1d4ffd7fa | ||
|
|
6f35ab7b8b | ||
|
|
9a67f5479a | ||
|
|
b727eba988 | ||
|
|
330c3d79d4 | ||
|
|
dff20daace | ||
|
|
cdc44328a8 | ||
|
|
ac61a71dcb | ||
|
|
71c800c396 | ||
|
|
577a6d279b | ||
|
|
49e01f0318 | ||
|
|
5ea9b3b0ba | ||
|
|
ca85d4c369 | ||
|
|
4499b1d3aa | ||
|
|
d385e5356e | ||
|
|
b4a0dc6a83 | ||
|
|
2e570b3bb0 | ||
|
|
ee4554286e | ||
|
|
2c6f0d932e | ||
|
|
4e7606fdc6 | ||
|
|
03df631690 | ||
|
|
6df826f210 | ||
|
|
cdf306cfe9 | ||
|
|
74a436b171 | ||
|
|
2f33c48bcc | ||
|
|
1f48dad71c | ||
|
|
8066f6d96b | ||
|
|
5c3bc30a6e | ||
|
|
90ed05d88d | ||
|
|
f59050ef04 | ||
|
|
bae10edc99 | ||
|
|
cfa2681ba3 | ||
|
|
03e936ac34 | ||
|
|
f7f96abcbb | ||
|
|
4d54443593 | ||
|
|
5afe3dd45b | ||
|
|
bd75ac6190 | ||
|
|
3e6a8b6e79 | ||
|
|
c1c8deb1b3 | ||
|
|
dc61342af8 | ||
|
|
fded7f7b3f | ||
|
|
ec83680333 | ||
|
|
16e94e71d3 | ||
|
|
56040934e9 | ||
|
|
89975cb124 | ||
|
|
03e20ffa7e | ||
|
|
8f7ea09ef5 | ||
|
|
c639721f2a | ||
|
|
84512efda8 | ||
|
|
6cf4a9744d | ||
|
|
d9ced4e650 | ||
|
|
c1f3f34169 | ||
|
|
6c06da7b0d | ||
|
|
023caa4616 | ||
|
|
fc593f8a8e | ||
|
|
f281ad5a78 | ||
|
|
fe8fec4ea7 | ||
|
|
7583e72687 | ||
|
|
e4b4a3d198 | ||
|
|
a7af1caace | ||
|
|
c5086189d6 | ||
|
|
ac667f1273 | ||
|
|
fdb79e609f | ||
|
|
531a49dbdf | ||
|
|
2a13c25230 | ||
|
|
408f5317c4 | ||
|
|
3672d6f43e | ||
|
|
cc3bec0746 | ||
|
|
180a69bd40 | ||
|
|
6de51bc11c | ||
|
|
bc9f086245 | ||
|
|
f84cc03a6c | ||
|
|
96dda1d8a9 | ||
|
|
87b791ee3a | ||
|
|
ae5da6d9bd | ||
|
|
546b6fd13f | ||
|
|
e8d1947f18 | ||
|
|
9e55cb5f8b | ||
|
|
7f57175519 | ||
|
|
b21b32f746 | ||
|
|
3827d54ba8 | ||
|
|
9801b0cdf5 | ||
|
|
154f33b15b | ||
|
|
fa217c3b25 | ||
|
|
1fb8daf389 | ||
|
|
f2213d1def | ||
|
|
6997a6fa71 | ||
|
|
e1ae768f26 | ||
|
|
57c4461952 | ||
|
|
5c46ff4a1e | ||
|
|
9112102c16 | ||
|
|
9d1eb8bee9 | ||
|
|
39fe8a59c7 | ||
|
|
5870f7d440 | ||
|
|
4a060e4669 | ||
|
|
3981833a3b | ||
|
|
1ea84dbb28 | ||
|
|
195aa56ceb | ||
|
|
b205800a66 | ||
|
|
5e538db201 | ||
|
|
0bcd23195f | ||
|
|
ca0196f927 | ||
|
|
874c8063aa | ||
|
|
d877f79d5c | ||
|
|
3cfd2cb9bd | ||
|
|
bf1f8410c1 | ||
|
|
ad7c63617b | ||
|
|
00b25dde9d | ||
|
|
e3118a4b89 | ||
|
|
23f5ee0d22 | ||
|
|
5c4df232d5 | ||
|
|
7f0e6f7996 | ||
|
|
ab60e6b0ab | ||
|
|
3b3c5c32f9 | ||
|
|
74b76dd61d | ||
|
|
3b3db608e8 | ||
|
|
b1a24cb50e | ||
|
|
1855a8b72c | ||
|
|
42ab513ad9 | ||
|
|
ba04546b17 | ||
|
|
6feec98b4c | ||
|
|
43e1c60baa | ||
|
|
2f5fc04244 | ||
|
|
aa45a49c3a | ||
|
|
dd8ff8b1bf | ||
|
|
25667ce0f0 | ||
|
|
ccf48e6426 | ||
|
|
da79be0d22 | ||
|
|
01afb01198 | ||
|
|
37723ddc30 | ||
|
|
b672d9bd10 | ||
|
|
fa8a7b7590 | ||
|
|
d3c8706c33 | ||
|
|
071e805457 | ||
|
|
4f30f5047e | ||
|
|
e173a27c6e | ||
|
|
5891cc071e | ||
|
|
b02acb44fb | ||
|
|
c4a01a9f72 | ||
|
|
be5a619b89 | ||
|
|
00a3aa4ca4 | ||
|
|
dee908a347 | ||
|
|
4f8681a8c6 | ||
|
|
675f29f51f | ||
|
|
2efe16376c | ||
|
|
607e30da7c | ||
|
|
d6f96f3035 | ||
|
|
81cea863e4 | ||
|
|
ac721d0c4d | ||
|
|
06f12cd740 | ||
|
|
dda87f3222 | ||
|
|
8b1c4773c3 | ||
|
|
9b71c105fc | ||
|
|
82d603cbab | ||
|
|
e6d0e6e128 | ||
|
|
4c62d9f1e7 | ||
|
|
c40251b2a1 | ||
|
|
b7fa90d37e | ||
|
|
e3b787204d | ||
|
|
0a5d61b510 | ||
|
|
ef3cb0f48c | ||
|
|
19b5e52ba6 | ||
|
|
6b75654511 | ||
|
|
22c5ca6384 | ||
|
|
eacfaaf8f6 | ||
|
|
f3e574e8c9 | ||
|
|
cc02c6c3c0 | ||
|
|
7ec53f259e | ||
|
|
dddd4c5440 | ||
|
|
1a9836a7d9 | ||
|
|
26eec0c0ef | ||
|
|
3ba7a79010 | ||
|
|
6ab54d7ec9 | ||
|
|
af4f175e0c | ||
|
|
9907408541 | ||
|
|
b3e0d730da | ||
|
|
edfd2ba9b7 | ||
|
|
f2ce47cdcd | ||
|
|
6b10d365fc | ||
|
|
da756ccffe | ||
|
|
5e99870a71 | ||
|
|
ed5d6f63b1 | ||
|
|
89a58c27a0 | ||
|
|
529d73aa83 | ||
|
|
c98bc997c3 |
@@ -0,0 +1 @@
|
|||||||
|
custom: ['https://boosty.to/arabian']
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "cargo"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
name: Build
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main, master]
|
||||||
|
pull_request:
|
||||||
|
branches: [main, master]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
linux-build:
|
||||||
|
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 \
|
||||||
|
libdbus-1-dev \
|
||||||
|
pkg-config
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Rust toolchain
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: 1.94.1
|
||||||
|
|
||||||
|
- 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 binaries
|
||||||
|
run: cargo build --locked
|
||||||
|
|
||||||
|
- name: Package all binaries into one archive
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
COMMIT_SHA="${{ github.sha }}"
|
||||||
|
ARCHIVE_NAME="pwsp-${COMMIT_SHA}-linux-x64.zip"
|
||||||
|
echo "Creating archive: $ARCHIVE_NAME"
|
||||||
|
|
||||||
|
FILES=()
|
||||||
|
while IFS= read -r BIN; do
|
||||||
|
[ -z "$BIN" ] && continue
|
||||||
|
FILES+=("target/debug/$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
|
||||||
|
|
||||||
|
zip -j "$ARCHIVE_NAME" "${FILES[@]}"
|
||||||
|
|
||||||
|
- name: Upload archive as artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: archive
|
||||||
|
path: pwsp-*.zip
|
||||||
|
retention-days: 7
|
||||||
|
|
||||||
|
- 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) as artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: deb-packages
|
||||||
|
path: target/debian/*.deb
|
||||||
|
retention-days: 7
|
||||||
|
|
||||||
|
flatpak-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/flathub-infra/flatpak-github-actions:freedesktop-25.08
|
||||||
|
options: --privileged
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Build Flatpak
|
||||||
|
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
||||||
|
with:
|
||||||
|
bundle: ru.arabianq.pwsp.flatpak
|
||||||
|
manifest-path: packages/flatpak/ru.arabianq.pwsp.yaml
|
||||||
|
cache: true
|
||||||
|
branch: master
|
||||||
|
build-bundle: true
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
name: Flatter
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main, master ]
|
||||||
|
release:
|
||||||
|
types: [ published ]
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag_name:
|
||||||
|
description: "TAG (empty to build from current branch)"
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
build_branch:
|
||||||
|
description: "Flatpak branch to build (stable/nightly)"
|
||||||
|
required: true
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- stable
|
||||||
|
- nightly
|
||||||
|
default: "stable"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
flatter:
|
||||||
|
name: Flatter
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
container:
|
||||||
|
image: ghcr.io/andyholmes/flatter/freedesktop:25.08
|
||||||
|
options: --privileged
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ inputs.tag_name || github.ref }}
|
||||||
|
|
||||||
|
- name: Setup GPG
|
||||||
|
id: gpg
|
||||||
|
uses: crazy-max/ghaction-import-gpg@v6
|
||||||
|
with:
|
||||||
|
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||||
|
passphrase: ${{ secrets.GPG_PASSPHRASE }}
|
||||||
|
|
||||||
|
- name: Set Default Branch
|
||||||
|
id: set_branch
|
||||||
|
run: |
|
||||||
|
if [ "${{ github.event_name }}" == "release" ]; then
|
||||||
|
echo "branch=stable" >> $GITHUB_OUTPUT
|
||||||
|
elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
|
||||||
|
echo "branch=${{ inputs.build_branch }}" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "branch=nightly" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Modify Manifest
|
||||||
|
run: |
|
||||||
|
echo "branch: ${{ steps.set_branch.outputs.branch }}" >> packages/flatpak/ru.arabianq.pwsp.yaml
|
||||||
|
echo "default-branch: ${{ steps.set_branch.outputs.branch }}" >> packages/flatpak/ru.arabianq.pwsp.yaml
|
||||||
|
|
||||||
|
- name: Install SDK Extensions
|
||||||
|
run: flatpak install -y flathub org.freedesktop.Sdk.Extension.rust-stable//25.08
|
||||||
|
org.freedesktop.Sdk.Extension.llvm20//25.08
|
||||||
|
|
||||||
|
- name: Build Flatpak
|
||||||
|
uses: andyholmes/flatter@main
|
||||||
|
with:
|
||||||
|
files: packages/flatpak/ru.arabianq.pwsp.yaml
|
||||||
|
gpg-sign: ${{ steps.gpg.outputs.fingerprint }}
|
||||||
|
upload-bundles: false
|
||||||
|
upload-pages-artifact: true
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
name: Deploy to GitHub Pages
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: flatter
|
||||||
|
permissions:
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v4
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
name: Release
|
||||||
|
|
||||||
|
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:
|
||||||
|
prepare:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
tag: ${{ steps.tag.outputs.tag }}
|
||||||
|
steps:
|
||||||
|
- 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 ${{ secrets.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
|
||||||
|
|
||||||
|
linux-release:
|
||||||
|
needs: prepare
|
||||||
|
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 \
|
||||||
|
libdbus-1-dev \
|
||||||
|
pkg-config
|
||||||
|
|
||||||
|
- name: Checkout code at tag
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ needs.prepare.outputs.tag }}
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Rust toolchain
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: 1.94.1
|
||||||
|
|
||||||
|
- 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="${{ needs.prepare.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
|
||||||
|
|
||||||
|
zip -j "$ARCHIVE_NAME" "${FILES[@]}"
|
||||||
|
|
||||||
|
- name: Upload release archive
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
tag_name: ${{ needs.prepare.outputs.tag }}
|
||||||
|
files: |
|
||||||
|
pwsp-*.zip
|
||||||
|
|
||||||
|
- 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: ${{ needs.prepare.outputs.tag }}
|
||||||
|
files: |
|
||||||
|
target/debian/*.deb
|
||||||
|
|
||||||
|
flatpak-release:
|
||||||
|
needs: prepare
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ghcr.io/flathub-infra/flatpak-github-actions:freedesktop-25.08
|
||||||
|
options: --privileged
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: ${{ needs.prepare.outputs.tag }}
|
||||||
|
|
||||||
|
- name: Build Flatpak
|
||||||
|
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
||||||
|
with:
|
||||||
|
bundle: ru.arabianq.pwsp.flatpak
|
||||||
|
manifest-path: packages/flatpak/ru.arabianq.pwsp.yaml
|
||||||
|
cache: true
|
||||||
|
branch: master
|
||||||
|
build-bundle: true
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
/target
|
||||||
|
.idea
|
||||||
|
packages/aur/bin/.git
|
||||||
|
packages/aur/standart/.git
|
||||||
Generated
+5660
File diff suppressed because it is too large
Load Diff
+118
@@ -0,0 +1,118 @@
|
|||||||
|
[package]
|
||||||
|
name = "pwsp"
|
||||||
|
version = "1.9.1"
|
||||||
|
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.52.3", features = ["full"] }
|
||||||
|
async-trait = "0.1.89"
|
||||||
|
|
||||||
|
serde = { version = "1.0.228", features = ["derive"] }
|
||||||
|
serde_json = "1.0.149"
|
||||||
|
|
||||||
|
clap = { version = "4.6.1", default-features = false, features = [
|
||||||
|
"std",
|
||||||
|
"suggestions",
|
||||||
|
"help",
|
||||||
|
"usage",
|
||||||
|
"error-context",
|
||||||
|
"derive",
|
||||||
|
] }
|
||||||
|
|
||||||
|
dirs = "6.0.0"
|
||||||
|
itertools = "0.14.0"
|
||||||
|
evdev = { version = "0.13.2", features = ["tokio"] }
|
||||||
|
rfd = { version = "0.17.2", default-features = false, features = [
|
||||||
|
|
||||||
|
"xdg-portal",
|
||||||
|
|
||||||
|
] }
|
||||||
|
opener = { version = "0.8.4", features = ["reveal"] }
|
||||||
|
system-fonts = "0.1.0"
|
||||||
|
anyhow = "1.0.102"
|
||||||
|
rustix = { version = "1.1.4", features = ["process"] }
|
||||||
|
|
||||||
|
rust-i18n = "4.0.0"
|
||||||
|
sys-locale = "0.3.2"
|
||||||
|
|
||||||
|
rodio = { git = "https://github.com/arabianq/rodio.git", rev = "1a08f281c352622bd82b87b8731585245802d9cf", default-features = false, features = [
|
||||||
|
"symphonia-all",
|
||||||
|
"symphonia-libopus",
|
||||||
|
"playback",
|
||||||
|
] }
|
||||||
|
pipewire = "0.10.0"
|
||||||
|
|
||||||
|
egui = { version = "0.34.2", default-features = false, features = [
|
||||||
|
"default_fonts",
|
||||||
|
"rayon",
|
||||||
|
] }
|
||||||
|
eframe = { version = "0.34.2", default-features = false, features = [
|
||||||
|
"default_fonts",
|
||||||
|
"glow",
|
||||||
|
"x11",
|
||||||
|
"wayland",
|
||||||
|
] }
|
||||||
|
egui_extras = "0.34.1"
|
||||||
|
egui_material_icons = "0.6.0"
|
||||||
|
egui_dnd = "0.15.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",
|
||||||
|
],
|
||||||
|
]
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 arabianq
|
||||||
|
|
||||||
|
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.
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
<div align="center">
|
||||||
|
<h1>🎵 PipeWire Soundpad (PWSP)</h1>
|
||||||
|
<p><b>A simple, modern, and powerful soundboard for Linux, written in Rust.</b></p>
|
||||||
|
<img src="assets/screenshot.png" alt="PWSP Screenshot" width="700"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## 🌟 Overview
|
||||||
|
**PipeWire Soundpad (PWSP)** is a graphical soundboard application that routes audio directly to your virtual microphone using **PipeWire**. It provides an intuitive interface for managing your audio collection, making it an ideal tool for gamers, streamers, and anyone looking to inject sound effects into voice chats on platforms like Discord, Zoom, or TeamSpeak.
|
||||||
|
|
||||||
|
## ✨ Key Features
|
||||||
|
* **🎙️ Virtual Microphone Output:** Seamlessly mixes your microphone input with sound effects by automatically managing PipeWire virtual devices.
|
||||||
|
* **🎵 Multi-Format Support:** Plays popular audio formats including `mp3`, `wav`, `ogg`, `flac`, `mp4`, and `aac`.
|
||||||
|
* **⚡ Global Hotkeys:** Trigger sounds instantly from anywhere, even when the app is running in the background.
|
||||||
|
* **📂 Smart Collection Management:** Drag-and-drop folders, quick search, and collapsible tracks to keep your library organized.
|
||||||
|
* **🎛️ Advanced Playback Controls:** Individual volume sliders, play/pause, position scrubbing, and concurrent multi-track playback.
|
||||||
|
* **🔌 Plug & Play:** Automatically detects when an input device is connected or disconnected and handles linking/unlinking on the fly.
|
||||||
|
* **🖥️ Modern GUI:** Clean, responsive, and lightweight interface powered by [egui](https://egui.rs/).
|
||||||
|
|
||||||
|
## ⚙️ Architecture
|
||||||
|
PWSP is built with a client-server model to ensure stability and separation of concerns:
|
||||||
|
* **`pwsp-daemon`**: The background engine. It runs silently, managing PipeWire virtual devices, audio routing, and playback.
|
||||||
|
* **`pwsp-gui`**: The graphical interface. Communicates with the daemon via a Unix socket to control playback and settings.
|
||||||
|
* **`pwsp-cli`**: The command-line tool. Perfect for scripting, hotkey binding, or quick terminal-based control.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Installation
|
||||||
|
|
||||||
|
### 📦 Flatpak (Recommended)
|
||||||
|
Install PWSP via Flatpak from our custom repository:
|
||||||
|
```bash
|
||||||
|
flatpak remote-add --user --if-not-exists pwsp-repo https://arabianq.github.io/pipewire-soundpad/index.flatpakrepo
|
||||||
|
|
||||||
|
# Install stable version
|
||||||
|
flatpak install --user arabianq-repo ru.arabianq.pwsp//stable
|
||||||
|
|
||||||
|
# Or install the nightly version (latest commit)
|
||||||
|
flatpak install --user arabianq-repo ru.arabianq.pwsp//nightly
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🐧 Linux Packages
|
||||||
|
**Fedora (and derivatives):**
|
||||||
|
```bash
|
||||||
|
sudo dnf copr enable arabianq/pwsp
|
||||||
|
sudo dnf install pwsp
|
||||||
|
```
|
||||||
|
|
||||||
|
**Arch Linux (AUR):**
|
||||||
|
```bash
|
||||||
|
paru -S pwsp-bin # or 'pwsp' to build from source
|
||||||
|
```
|
||||||
|
|
||||||
|
**Debian / Ubuntu:**
|
||||||
|
Download pre-built `.deb` packages or standalone binaries from the [Releases page](https://github.com/arabianq/pipewire-soundpad/releases).
|
||||||
|
|
||||||
|
### 🦀 Cargo / Source Build
|
||||||
|
```bash
|
||||||
|
cargo install pwsp
|
||||||
|
|
||||||
|
# OR clone and build manually:
|
||||||
|
git clone https://github.com/arabianq/pipewire-soundpad.git
|
||||||
|
cd pipewire-soundpad
|
||||||
|
cargo build --release
|
||||||
|
```
|
||||||
|
*(Note: Requires Rust toolchain and PipeWire running on your system).*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎮 Usage
|
||||||
|
|
||||||
|
### 1. Start the Daemon
|
||||||
|
Before using the GUI or CLI, the daemon must be running in the background.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Recommended: Start and enable via systemd (starts on login)
|
||||||
|
systemctl --user enable --now pwsp-daemon
|
||||||
|
|
||||||
|
# Manual start (if not using systemd):
|
||||||
|
pwsp-daemon &
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Using the GUI
|
||||||
|
1. **Add Sounds:** Click the **"+"** button to add a directory containing your audio files.
|
||||||
|
2. **Select Mic:** Choose your physical microphone from the dropdown. PWSP will instantly create a virtual microphone combining your voice and the soundboard.
|
||||||
|
3. **Play:** Click any sound to play it, adjust its volume, or assign a hotkey for quick access.
|
||||||
|
|
||||||
|
### 3. Using the CLI
|
||||||
|
Control the daemon directly from your terminal:
|
||||||
|
```bash
|
||||||
|
pwsp-cli action play /path/to/sound.mp3
|
||||||
|
pwsp-cli get volume
|
||||||
|
pwsp-cli set position 20
|
||||||
|
pwsp-cli --help # View all commands
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⌨️ Shortcuts & Controls
|
||||||
|
|
||||||
|
| Action | Keyboard | Mouse |
|
||||||
|
| :----------------------------------- | :--------------------- | :------------------- |
|
||||||
|
| **Play Track** (Stops others) | | `Left Click` |
|
||||||
|
| **Add Track** (Plays simultaneously) | | `Ctrl + Left Click` |
|
||||||
|
| **Replace Last Track** | | `Shift + Left Click` |
|
||||||
|
| **Pause / Resume** | `Space` | |
|
||||||
|
| **Stop All Tracks** | `Backspace` | |
|
||||||
|
| **Open / Close Settings** | `I` | |
|
||||||
|
| **Search** | `/` | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🤝 Contributing
|
||||||
|
Contributions, issues, and feature requests are welcome! Feel free to check out the [issues page](https://github.com/arabianq/pipewire-soundpad/issues).
|
||||||
|
|
||||||
|
[](https://deepwiki.com/arabianq/pipewire-soundpad)
|
||||||
|
|
||||||
|
## 📜 License
|
||||||
|
This project is licensed under the [MIT License](LICENSE).
|
||||||
@@ -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.
@@ -1,4 +0,0 @@
|
|||||||
5.3.1
|
|
||||||
3.3.0
|
|
||||||
bdb5.3.28
|
|
||||||
bdb5.3.0
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNED MESSAGE-----
|
|
||||||
Hash: SHA512
|
|
||||||
|
|
||||||
Origin: arabianq
|
|
||||||
Label: PipeWire Soundpad
|
|
||||||
Codename: nightly
|
|
||||||
Date: Sun, 05 Jul 2026 18:20:43 UTC
|
|
||||||
Architectures: amd64 arm64
|
|
||||||
Components: main
|
|
||||||
Description: Nightly APT Repository for PWSP
|
|
||||||
MD5Sum:
|
|
||||||
841d44ebf4a7f0670dd17d0582068081 650 main/binary-amd64/Packages
|
|
||||||
f0a3b7e4900340920a4ba621e0b595d1 452 main/binary-amd64/Packages.gz
|
|
||||||
facbb80485897bc6e0d67e37e5dd38e8 123 main/binary-amd64/Release
|
|
||||||
8529d7914c036f4a05551bbf6c20dc91 677 main/binary-arm64/Packages
|
|
||||||
61405912ff96db862a5eb91a1029bcd8 461 main/binary-arm64/Packages.gz
|
|
||||||
7418f9ee7493009aeaa4417f5d11ee62 123 main/binary-arm64/Release
|
|
||||||
SHA1:
|
|
||||||
818fad4b1f960fa93ba70b0bd0d2d4572b8ba5ce 650 main/binary-amd64/Packages
|
|
||||||
0ca3c95eb91f035997e60f087e105f61dd280d3f 452 main/binary-amd64/Packages.gz
|
|
||||||
66d8024fbaf66bb3aa03e04c8784ffc2d45d5e92 123 main/binary-amd64/Release
|
|
||||||
be73de8ea87769324f54460e95b3345f3d783148 677 main/binary-arm64/Packages
|
|
||||||
7b01f30411f4405029e9336b9aec32cffb330048 461 main/binary-arm64/Packages.gz
|
|
||||||
f7984ac62248818b3d8a2c59250042d426414d8c 123 main/binary-arm64/Release
|
|
||||||
SHA256:
|
|
||||||
1bf8c72e44fd2b1e5a7529b1a2133a803af3bc2990957cae7bddffb6d0b33161 650 main/binary-amd64/Packages
|
|
||||||
bca0ce9e867b2b6969f8ae89776f8c70248400b3c2251cd7a334de3d12780aa3 452 main/binary-amd64/Packages.gz
|
|
||||||
b5a22f248703739051a84b584c2b0ea20a9b69b28e823c5a8b0aca5f33f90bba 123 main/binary-amd64/Release
|
|
||||||
fc417a81d9e859530cce94b340ccc222c340429de260ed04e20b23928e9ce32a 677 main/binary-arm64/Packages
|
|
||||||
11a8536d4a8682cbe8470c6c1a74034735134409ae9bba7cc47082bde5831599 461 main/binary-arm64/Packages.gz
|
|
||||||
a5e6d2298cf4bded7fd380a4bb06d97be39e9ea1a0b42acd5190a44aad619c92 123 main/binary-arm64/Release
|
|
||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iHUEARYKAB0WIQSq48VrHi02dxCM8oCDybDbLI+dFgUCakqgewAKCRCDybDbLI+d
|
|
||||||
Fo6NAP4oRwr+7FpjQwauZOIfUWqU5Fi5NDOjdHsM72ac3qleGQD/bkXihMbTCoHz
|
|
||||||
i3AoxOyAcKmiLh2nz6gFwzQ1F6JbVQQ=
|
|
||||||
=qMVy
|
|
||||||
-----END PGP SIGNATURE-----
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
Origin: arabianq
|
|
||||||
Label: PipeWire Soundpad
|
|
||||||
Codename: nightly
|
|
||||||
Date: Sun, 05 Jul 2026 18:20:43 UTC
|
|
||||||
Architectures: amd64 arm64
|
|
||||||
Components: main
|
|
||||||
Description: Nightly APT Repository for PWSP
|
|
||||||
MD5Sum:
|
|
||||||
841d44ebf4a7f0670dd17d0582068081 650 main/binary-amd64/Packages
|
|
||||||
f0a3b7e4900340920a4ba621e0b595d1 452 main/binary-amd64/Packages.gz
|
|
||||||
facbb80485897bc6e0d67e37e5dd38e8 123 main/binary-amd64/Release
|
|
||||||
8529d7914c036f4a05551bbf6c20dc91 677 main/binary-arm64/Packages
|
|
||||||
61405912ff96db862a5eb91a1029bcd8 461 main/binary-arm64/Packages.gz
|
|
||||||
7418f9ee7493009aeaa4417f5d11ee62 123 main/binary-arm64/Release
|
|
||||||
SHA1:
|
|
||||||
818fad4b1f960fa93ba70b0bd0d2d4572b8ba5ce 650 main/binary-amd64/Packages
|
|
||||||
0ca3c95eb91f035997e60f087e105f61dd280d3f 452 main/binary-amd64/Packages.gz
|
|
||||||
66d8024fbaf66bb3aa03e04c8784ffc2d45d5e92 123 main/binary-amd64/Release
|
|
||||||
be73de8ea87769324f54460e95b3345f3d783148 677 main/binary-arm64/Packages
|
|
||||||
7b01f30411f4405029e9336b9aec32cffb330048 461 main/binary-arm64/Packages.gz
|
|
||||||
f7984ac62248818b3d8a2c59250042d426414d8c 123 main/binary-arm64/Release
|
|
||||||
SHA256:
|
|
||||||
1bf8c72e44fd2b1e5a7529b1a2133a803af3bc2990957cae7bddffb6d0b33161 650 main/binary-amd64/Packages
|
|
||||||
bca0ce9e867b2b6969f8ae89776f8c70248400b3c2251cd7a334de3d12780aa3 452 main/binary-amd64/Packages.gz
|
|
||||||
b5a22f248703739051a84b584c2b0ea20a9b69b28e823c5a8b0aca5f33f90bba 123 main/binary-amd64/Release
|
|
||||||
fc417a81d9e859530cce94b340ccc222c340429de260ed04e20b23928e9ce32a 677 main/binary-arm64/Packages
|
|
||||||
11a8536d4a8682cbe8470c6c1a74034735134409ae9bba7cc47082bde5831599 461 main/binary-arm64/Packages.gz
|
|
||||||
a5e6d2298cf4bded7fd380a4bb06d97be39e9ea1a0b42acd5190a44aad619c92 123 main/binary-arm64/Release
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iHUEABYKAB0WIQSq48VrHi02dxCM8oCDybDbLI+dFgUCakqgewAKCRCDybDbLI+d
|
|
||||||
Fn6/AQDmO8YSWd1oc6VT4ER4xqocFx2Zq4XUnrSXX6rnUIpIBwD/fT35YRK7oqlU
|
|
||||||
f4MMIfNf4rfIOUv4Pjw0Tykzcd5T8g0=
|
|
||||||
=4JbE
|
|
||||||
-----END PGP SIGNATURE-----
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
Package: pwsp
|
|
||||||
Version: 1.12.3+git20260705.701bdeb
|
|
||||||
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.701bdeb_amd64.deb
|
|
||||||
Size: 8787644
|
|
||||||
SHA256: 3b423379694de910b335fe11b33c365450ae316c65744959dfd8986e841f81e6
|
|
||||||
SHA1: 85795636ec89d8ee423326fe4481d4208bd166c3
|
|
||||||
MD5sum: 40998e17a9f19acbbd0dc2674eed0604
|
|
||||||
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.701bdeb
|
|
||||||
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.701bdeb_arm64.deb
|
|
||||||
Size: 7870840
|
|
||||||
SHA256: 97ec3935ca1d746aceddabcef9b798879dcf1e8e579c6bf52183a9b4c996f87d
|
|
||||||
SHA1: fba17e2d2ccc60354d6c10f69cc8be5c76915a0b
|
|
||||||
MD5sum: 5f95310b0cafd0b7bf0e7e8026b9b914
|
|
||||||
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
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -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-----
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Pipewire Soundpad Daemon
|
||||||
|
After=pipewire.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/pwsp-daemon
|
||||||
|
Restart=no
|
||||||
|
RuntimeDirectory=pwsp
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
@@ -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: 94 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,376 @@
|
|||||||
|
_version = 2
|
||||||
|
|
||||||
|
# ----------------
|
||||||
|
# Main page
|
||||||
|
# ----------------
|
||||||
|
|
||||||
|
[gui.play_file_button]
|
||||||
|
en = "Play file"
|
||||||
|
ru = "Выбрать файл"
|
||||||
|
es = "Reproducir archivo"
|
||||||
|
fr = "Lire le fichier"
|
||||||
|
zh = "播放文件"
|
||||||
|
ar = "تشغيل الملف"
|
||||||
|
kz = "Файлды ойнату"
|
||||||
|
he = "נגן קובץ"
|
||||||
|
pt-BR = "Reproduzir arquivo"
|
||||||
|
|
||||||
|
[gui.choose_mic_select]
|
||||||
|
en = "Select microphone"
|
||||||
|
ru = "Выбрать микрофон"
|
||||||
|
es = "Seleccionar micrófono"
|
||||||
|
fr = "Sélectionner le microphone"
|
||||||
|
zh = "选择麦克风"
|
||||||
|
ar = "اختر الميكروفون"
|
||||||
|
kz = "Микрофонды таңдау"
|
||||||
|
he = "בחר מיקרופון"
|
||||||
|
pt-BR = "Selecionar microfone"
|
||||||
|
|
||||||
|
[gui.search_placeholder]
|
||||||
|
en = "Search files..."
|
||||||
|
ru = "Поиск файлов..."
|
||||||
|
es = "Buscar archivos..."
|
||||||
|
fr = "Rechercher des fichiers..."
|
||||||
|
zh = "搜索文件..."
|
||||||
|
ar = "البحث عن ملفات..."
|
||||||
|
kz = "Файлдарды іздеу..."
|
||||||
|
he = "חפש קבצים..."
|
||||||
|
pt-BR = "Buscar arquivos..."
|
||||||
|
|
||||||
|
[gui.context.dirs.open]
|
||||||
|
en = "Open"
|
||||||
|
ru = "Открыть"
|
||||||
|
es = "Abrir"
|
||||||
|
fr = "Ouvrir"
|
||||||
|
zh = "打开"
|
||||||
|
ar = "فتح"
|
||||||
|
kz = "Ашу"
|
||||||
|
he = "פתח"
|
||||||
|
pt-BR = "Abrir"
|
||||||
|
|
||||||
|
[gui.context.dirs.open_in_fm]
|
||||||
|
en = "Open in File Manager"
|
||||||
|
ru = "Открыть в менеджере файлов"
|
||||||
|
es = "Abrir en el gestor de archivos"
|
||||||
|
fr = "Ouvrir dans le gestionnaire de fichiers"
|
||||||
|
zh = "在文件管理器中打开"
|
||||||
|
ar = "فتح في مدير الملفات"
|
||||||
|
kz = "Файл менеджерінде ашу"
|
||||||
|
he = "פתח במנהל הקבצים"
|
||||||
|
pt-BR = "Abrir no gestor de arquivos"
|
||||||
|
|
||||||
|
[gui.context.dirs.remove]
|
||||||
|
en = "Remove"
|
||||||
|
ru = "Удалить"
|
||||||
|
es = "Eliminar"
|
||||||
|
fr = "Supprimer"
|
||||||
|
zh = "移除"
|
||||||
|
ar = "إزالة"
|
||||||
|
kz = "Жою"
|
||||||
|
he = "הסר"
|
||||||
|
pt-BR = "Remover"
|
||||||
|
|
||||||
|
[gui.context.files.play_solo]
|
||||||
|
en = "Play Solo"
|
||||||
|
ru = "Играть"
|
||||||
|
es = "Reproducir solo"
|
||||||
|
fr = "Jouer en solo"
|
||||||
|
zh = "单独播放"
|
||||||
|
ar = "تشغيل منفرد"
|
||||||
|
kz = "Жалғыз ойнату"
|
||||||
|
he = "נגן סולו"
|
||||||
|
pt-BR = "Reproduzir"
|
||||||
|
|
||||||
|
[gui.context.files.add_new]
|
||||||
|
en = "Add New"
|
||||||
|
ru = "Добавить"
|
||||||
|
es = "Añadir nuevo"
|
||||||
|
fr = "Ajouter un nouveau"
|
||||||
|
zh = "添加新项"
|
||||||
|
ar = "إضافة جديد"
|
||||||
|
kz = "Жаңасын қосу"
|
||||||
|
he = "הוסף חדש"
|
||||||
|
pt-BR = "Adicionar"
|
||||||
|
|
||||||
|
[gui.context.files.replace_last]
|
||||||
|
en = "Replace Last"
|
||||||
|
ru = "Заменить Последний"
|
||||||
|
es = "Reemplazar último"
|
||||||
|
fr = "Remplacer le dernier"
|
||||||
|
zh = "替换上一个"
|
||||||
|
ar = "استبدال الأخير"
|
||||||
|
kz = "Соңғысын ауыстыру"
|
||||||
|
he = "החלף אחרון"
|
||||||
|
pt-BR = "Substituir"
|
||||||
|
|
||||||
|
[gui.context.files.show_in_fm]
|
||||||
|
en = "Show in File Manager"
|
||||||
|
ru = "Открыть в менеджере файлов"
|
||||||
|
es = "Mostrar en el gestor de archivos"
|
||||||
|
fr = "Afficher dans le gestionnaire de fichiers"
|
||||||
|
zh = "在文件管理器中显示"
|
||||||
|
ar = "عرض في مدير الملفات"
|
||||||
|
kz = "Файл менеджерінде көрсету"
|
||||||
|
he = "הצג במנהל הקבצים"
|
||||||
|
pt-BR = "Mostrar no gestor de arquivos"
|
||||||
|
|
||||||
|
[gui.context.files.asign_hotkey]
|
||||||
|
en = "Assign Hotkey"
|
||||||
|
ru = "Назначить Горячую Клавишу"
|
||||||
|
es = "Asignar atajo"
|
||||||
|
fr = "Assigner un raccourci"
|
||||||
|
zh = "分配快捷键"
|
||||||
|
ar = "تعيين مفتاح اختصار"
|
||||||
|
kz = "Ыстық пернені тағайындау"
|
||||||
|
he = "הקצה מקש קיצור"
|
||||||
|
pt-BR = "Definir tecla de atalho"
|
||||||
|
|
||||||
|
# ----------------
|
||||||
|
# Settings
|
||||||
|
# ----------------
|
||||||
|
|
||||||
|
[gui.settings.header]
|
||||||
|
en = "Settings"
|
||||||
|
ru = "Настройки"
|
||||||
|
es = "Ajustes"
|
||||||
|
fr = "Paramètres"
|
||||||
|
zh = "设置"
|
||||||
|
ar = "الإعدادات"
|
||||||
|
kz = "Баптаулар"
|
||||||
|
he = "הגדרות"
|
||||||
|
pt-BR = "Configurações"
|
||||||
|
|
||||||
|
[gui.settings.remember_volume]
|
||||||
|
en = "Always remember volume"
|
||||||
|
ru = "Всегда запоминать громкость"
|
||||||
|
es = "Recordar siempre el volumen"
|
||||||
|
fr = "Toujours se souvenir du volume"
|
||||||
|
zh = "始终记住音量"
|
||||||
|
ar = "تذكر مستوى الصوت دائمًا"
|
||||||
|
kz = "Әрқашан дыбыс деңгейін есте сақтау"
|
||||||
|
he = "זכור תמיד עוצמת קול"
|
||||||
|
pt-BR = "Lembrar volume"
|
||||||
|
|
||||||
|
[gui.settings.remember_mic]
|
||||||
|
en = "Always remember microphone"
|
||||||
|
ru = "Всегда запоминать микрофон"
|
||||||
|
es = "Recordar siempre el micrófono"
|
||||||
|
fr = "Toujours se souvenir du microphone"
|
||||||
|
zh = "始终记住麦克风"
|
||||||
|
ar = "تذكر الميكروفون دائمًا"
|
||||||
|
kz = "Әрқашан микрофонды есте сақтау"
|
||||||
|
he = "זכור תמיד מיקרופון"
|
||||||
|
pt-BR = "Lembrar microfone"
|
||||||
|
|
||||||
|
[gui.settings.remember_ui_scale]
|
||||||
|
en = "Always remember UI scale factor"
|
||||||
|
ru = "Всегда запоминать масштаб интерфейса"
|
||||||
|
es = "Recordar siempre la escala de la interfaz"
|
||||||
|
fr = "Toujours se souvenir de l'échelle de l'interface"
|
||||||
|
zh = "始终记住界面缩放比例"
|
||||||
|
ar = "تذكر عامل تكبير الواجهة دائمًا"
|
||||||
|
kz = "Әрқашан интерфейс масштабын есте сақтау"
|
||||||
|
he = "זכור תמיד קנה מידה של ממשק משתמש"
|
||||||
|
pt-BR = "Lembrar fator de escala da interface"
|
||||||
|
|
||||||
|
[gui.settings.pause_on_window_close]
|
||||||
|
en = "Pause audio playback when the window is closed"
|
||||||
|
ru = "Останавливать воспроизведение при закрытии окна"
|
||||||
|
es = "Pausar la reproducción de audio al cerrar la ventana"
|
||||||
|
fr = "Mettre en pause la lecture audio à la fermeture de la fenêtre"
|
||||||
|
zh = "关闭窗口时暂停音频播放"
|
||||||
|
ar = "إيقاف الصوت مؤقتًا عند إغلاق النافذة"
|
||||||
|
kz = "Терезе жабылған кезде дыбысты ойнатуды кідірту"
|
||||||
|
he = "השהה השמעת שמע כאשר החלון נסגר"
|
||||||
|
pt-BR = "Pausar reprodução de aúdio ao fechar a janela"
|
||||||
|
|
||||||
|
[gui.settings.version]
|
||||||
|
en = "GUI version: %{version}"
|
||||||
|
ru = "Версия GUI: %{version}"
|
||||||
|
es = "Versión de la GUI: %{version}"
|
||||||
|
fr = "Version de l'interface : %{version}"
|
||||||
|
zh = "GUI 版本: %{version}"
|
||||||
|
ar = "إصدار الواجهة: %{version}"
|
||||||
|
kz = "GUI нұсқасы: %{version}"
|
||||||
|
he = "גרסת ממשק משתמש: %{version}"
|
||||||
|
pt-BR = "Versão da GUI: %{version}"
|
||||||
|
|
||||||
|
# ----------------
|
||||||
|
# Hotkeys
|
||||||
|
# ----------------
|
||||||
|
|
||||||
|
[gui.hotkeys.header]
|
||||||
|
en = "Hotkeys"
|
||||||
|
ru = "Горячие клавиши"
|
||||||
|
es = "Atajos de teclado"
|
||||||
|
fr = "Raccourcis clavier"
|
||||||
|
zh = "快捷键"
|
||||||
|
ar = "اختصارات لوحة المفاتيح"
|
||||||
|
kz = "Ыстық пернелер"
|
||||||
|
he = "מקשי קיצור"
|
||||||
|
pt-BR = "Atalhos"
|
||||||
|
|
||||||
|
[gui.hotkeys.search_placeholder]
|
||||||
|
en = "Search hotkeys..."
|
||||||
|
ru = "Поиск горячих клавиш..."
|
||||||
|
es = "Buscar atajos..."
|
||||||
|
fr = "Rechercher des raccourcis..."
|
||||||
|
zh = "搜索快捷键..."
|
||||||
|
ar = "البحث عن الاختصارات..."
|
||||||
|
kz = "Ыстық пернелерді іздеу..."
|
||||||
|
he = "חפש מקשי קיצור..."
|
||||||
|
pt-BR = "Buscar atalhos..."
|
||||||
|
|
||||||
|
[gui.hotkeys.add_command_select]
|
||||||
|
en = "Add Command"
|
||||||
|
ru = "Добавить команду"
|
||||||
|
es = "Añadir comando"
|
||||||
|
fr = "Ajouter une commande"
|
||||||
|
zh = "添加命令"
|
||||||
|
ar = "إضافة أمر"
|
||||||
|
kz = "Команда қосу"
|
||||||
|
he = "הוסף פקודה"
|
||||||
|
pt-BR = "Adicionar comando"
|
||||||
|
|
||||||
|
[gui.hotkeys.toggle_pause_command]
|
||||||
|
en = "Toggle Pause"
|
||||||
|
ru = "Переключить паузу"
|
||||||
|
es = "Alternar pausa"
|
||||||
|
fr = "Basculer la pause"
|
||||||
|
zh = "切换暂停"
|
||||||
|
ar = "تبديل الإيقاف المؤقت"
|
||||||
|
kz = "Кідіртуді ауыстыру"
|
||||||
|
he = "הפעל/השהה"
|
||||||
|
pt-BR = "Alternar reprodução"
|
||||||
|
|
||||||
|
[gui.hotkeys.stop_playback_command]
|
||||||
|
en = "Stop Playback"
|
||||||
|
ru = "Остановить воспроизведение"
|
||||||
|
es = "Detener reproducción"
|
||||||
|
fr = "Arrêter la lecture"
|
||||||
|
zh = "停止播放"
|
||||||
|
ar = "إيقاف التشغيل"
|
||||||
|
kz = "Ойнатуды тоқтату"
|
||||||
|
he = "עצור השמעה"
|
||||||
|
pt-BR = "Parar reprodução"
|
||||||
|
|
||||||
|
[gui.hotkeys.pause_playback_command]
|
||||||
|
en = "Pause Playback"
|
||||||
|
ru = "Поставить воспроизведение на паузу"
|
||||||
|
es = "Pausar reproducción"
|
||||||
|
fr = "Mettre en pause la lecture"
|
||||||
|
zh = "暂停播放"
|
||||||
|
ar = "إيقاف التشغيل مؤقتاً"
|
||||||
|
kz = "Ойнатуды кідірту"
|
||||||
|
he = "השהה השמעה"
|
||||||
|
pt-BR = "Pausar reprodução"
|
||||||
|
|
||||||
|
[gui.hotkeys.resume_playback_command]
|
||||||
|
en = "Resume Playback"
|
||||||
|
ru = "Продолжить воспроизведение"
|
||||||
|
es = "Reanudar reproducción"
|
||||||
|
fr = "Reprendre la lecture"
|
||||||
|
zh = "恢复播放"
|
||||||
|
ar = "استئناف التشغيل"
|
||||||
|
kz = "Ойнатуды жалғастыру"
|
||||||
|
he = "המשך השמעה"
|
||||||
|
pt-BR = "Resumir reprodução"
|
||||||
|
|
||||||
|
[gui.hotkeys.toggle_loop_command]
|
||||||
|
en = "Toggle Loop"
|
||||||
|
ru = "Переключить зацикливание"
|
||||||
|
es = "Alternar bucle"
|
||||||
|
fr = "Basculer la boucle"
|
||||||
|
zh = "切换循环"
|
||||||
|
ar = "تبديل التكرار"
|
||||||
|
kz = "Қайталауды ауыстыру"
|
||||||
|
he = "הפעל/כבה לולאה"
|
||||||
|
pt-BR = "Alternar loop"
|
||||||
|
|
||||||
|
[gui.hotkeys.column_slot]
|
||||||
|
en = "Slot"
|
||||||
|
ru = "Слот"
|
||||||
|
es = "Ranura"
|
||||||
|
fr = "Emplacement"
|
||||||
|
zh = "插槽"
|
||||||
|
ar = "الخانة"
|
||||||
|
kz = "Ұяшық"
|
||||||
|
he = "משבצת"
|
||||||
|
pt-BR = "Slot"
|
||||||
|
|
||||||
|
[gui.hotkeys.column_sound]
|
||||||
|
en = "Sound"
|
||||||
|
ru = "Звук"
|
||||||
|
es = "Sonido"
|
||||||
|
fr = "Son"
|
||||||
|
zh = "声音"
|
||||||
|
ar = "الصوت"
|
||||||
|
kz = "Дыбыс"
|
||||||
|
he = "צליל"
|
||||||
|
pt-BR = "Som"
|
||||||
|
|
||||||
|
[gui.hotkeys.column_key_chord]
|
||||||
|
en = "Key Chord"
|
||||||
|
ru = "Клавиша"
|
||||||
|
es = "Combinación de teclas"
|
||||||
|
fr = "Combinaison de touches"
|
||||||
|
zh = "组合键"
|
||||||
|
ar = "تركيبة المفاتيح"
|
||||||
|
kz = "Пернелер тіркесімі"
|
||||||
|
he = "צירוף מקשים"
|
||||||
|
pt-BR = "Combinação de teclas"
|
||||||
|
|
||||||
|
[gui.hotkeys.column_actions]
|
||||||
|
en = "Actions"
|
||||||
|
ru = "Действия"
|
||||||
|
es = "Acciones"
|
||||||
|
fr = "Actions"
|
||||||
|
zh = "操作"
|
||||||
|
ar = "الإجراءات"
|
||||||
|
kz = "Әрекеттер"
|
||||||
|
he = "פעולות"
|
||||||
|
pt-BR = "Ações"
|
||||||
|
|
||||||
|
[gui.hotkeys.no_hotkeys_configured]
|
||||||
|
en = "No hotkeys configured"
|
||||||
|
ru = "Горячие клавиши не настроены"
|
||||||
|
es = "No hay atajos configurados"
|
||||||
|
fr = "Aucun raccourci configuré"
|
||||||
|
zh = "未配置快捷键"
|
||||||
|
ar = "لا توجد اختصارات معينة"
|
||||||
|
kz = "Ыстық пернелер бапталмаған"
|
||||||
|
he = "לא הוגדרו מקשי קיצור"
|
||||||
|
pt-BR = "Nenhum atalho configurado"
|
||||||
|
|
||||||
|
[gui.hotkeys.capture.header]
|
||||||
|
en = "Press a key combination (e.g. Ctrl+Alt+1)"
|
||||||
|
ru = "Нажмите сочетание клавиш (например, Ctrl+Alt+1)"
|
||||||
|
es = "Presione una combinación de teclas (ej. Ctrl+Alt+1)"
|
||||||
|
fr = "Appuyez sur une combinaison de touches (ex. Ctrl+Alt+1)"
|
||||||
|
zh = "按下一个组合键 (例如 Ctrl+Alt+1)"
|
||||||
|
ar = "اضغط على تركيبة مفاتيح (مثلاً Ctrl+Alt+1)"
|
||||||
|
kz = "Пернелер тіркесімін басыңыз (мысалы, Ctrl+Alt+1)"
|
||||||
|
he = "לחץ על צירוף מקשים (למשל Ctrl+Alt+1)"
|
||||||
|
pt-BR = "Pressione uma combinação de tecla (ex: Ctrl+Alt+1)"
|
||||||
|
|
||||||
|
[gui.hotkeys.capture.for]
|
||||||
|
en = "for"
|
||||||
|
ru = "для"
|
||||||
|
es = "para"
|
||||||
|
fr = "pour"
|
||||||
|
zh = "用于"
|
||||||
|
ar = "لـ"
|
||||||
|
kz = "үшін"
|
||||||
|
he = "עבור"
|
||||||
|
pt-BR = "para"
|
||||||
|
|
||||||
|
[gui.hotkeys.capture.cancel]
|
||||||
|
en = "Press Escape to cancel"
|
||||||
|
ru = "Нажмите Escape для отмены"
|
||||||
|
es = "Presione Escape para cancelar"
|
||||||
|
fr = "Appuyez sur Échap pour annuler"
|
||||||
|
zh = "按 Escape 取消"
|
||||||
|
ar = "اضغط Esc للإلغاء"
|
||||||
|
kz = "Болдырмау үшін Escape пернесін басыңыз"
|
||||||
|
he = "לחץ על Escape לביטול"
|
||||||
|
pt-BR = "Pressione Esc para cancelar"
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user