Compare commits

...
5 Commits
Author SHA1 Message Date
arabianq c75e073774 change version to 1.16.0 2026-07-30 11:20:44 +03:00
arabianq 464baa20ce cargo update 2026-07-30 11:20:16 +03:00
Tarasov AleksandrandGitHub 051e81d9f7 feat: add some helpers for in-app hotkeys (#182) 2026-07-30 11:18:01 +03:00
Tarasov AleksandrandGitHub 8854c401a9 fix(gui): add translation for "No tracks playing" (#181) 2026-07-30 10:36:57 +03:00
Tarasov AleksandrandGitHub c9f30e09d7 feat(lib, daemon, gui): daemon version in fullstate and gui (#180)
* add daemon_version field to the FullState

* add daemon version to the pwsp-gui settings page
2026-07-30 10:30:31 +03:00
16 changed files with 157 additions and 125 deletions
Generated
+27 -28
View File
@@ -601,9 +601,9 @@ dependencies = [
[[package]]
name = "clang-sys"
version = "1.8.1"
version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a"
dependencies = [
"glob",
"libc",
@@ -916,13 +916,13 @@ dependencies = [
[[package]]
name = "displaydoc"
version = "0.2.6"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.119",
"syn 3.0.3",
]
[[package]]
@@ -1280,11 +1280,10 @@ dependencies = [
[[package]]
name = "event-listener"
version = "5.4.1"
version = "5.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2"
dependencies = [
"concurrent-queue",
"parking",
"pin-project-lite",
]
@@ -1773,9 +1772,9 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
[[package]]
name = "http"
version = "1.4.2"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0"
dependencies = [
"bytes",
"itoa",
@@ -2194,7 +2193,7 @@ dependencies = [
"bitflags 2.13.1",
"libc",
"plain",
"redox_syscall 0.9.0",
"redox_syscall 0.9.1",
]
[[package]]
@@ -3216,7 +3215,7 @@ checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5"
[[package]]
name = "pwsp-cli"
version = "1.15.0"
version = "1.16.0"
dependencies = [
"anyhow",
"clap",
@@ -3227,7 +3226,7 @@ dependencies = [
[[package]]
name = "pwsp-daemon"
version = "1.15.0"
version = "1.16.0"
dependencies = [
"anyhow",
"clap",
@@ -3239,7 +3238,7 @@ dependencies = [
[[package]]
name = "pwsp-gui"
version = "1.15.0"
version = "1.16.0"
dependencies = [
"anyhow",
"dirs",
@@ -3264,7 +3263,7 @@ dependencies = [
[[package]]
name = "pwsp-lib"
version = "1.15.0"
version = "1.16.0"
dependencies = [
"anyhow",
"async-trait",
@@ -3400,9 +3399,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
version = "0.9.0"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759"
checksum = "07507be7b4a5f9f26eeb41eeaebb1f5a7ff29dfb29739facc21d35bf8b11c21e"
dependencies = [
"bitflags 2.13.1",
]
@@ -4261,7 +4260,7 @@ dependencies = [
"cfg-expr",
"heck",
"pkg-config",
"toml 1.1.3+spec-1.1.0",
"toml 1.1.4+spec-1.1.0",
"version-compare",
]
@@ -4399,13 +4398,13 @@ dependencies = [
[[package]]
name = "tokio-macros"
version = "2.7.1"
version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba"
checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.119",
"syn 3.0.3",
]
[[package]]
@@ -4432,9 +4431,9 @@ dependencies = [
[[package]]
name = "toml"
version = "1.1.3+spec-1.1.0"
version = "1.1.4+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c"
checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5"
dependencies = [
"indexmap",
"serde_core",
@@ -4491,9 +4490,9 @@ dependencies = [
[[package]]
name = "toml_parser"
version = "1.1.2+spec-1.1.0"
version = "1.1.3+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56"
dependencies = [
"winnow 1.0.4",
]
@@ -4996,15 +4995,15 @@ dependencies = [
[[package]]
name = "webbrowser"
version = "1.2.1"
version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fc95580916af1e68ff6a7be07446fc5db73ebf71cf092de939bbf5f7e189f72"
checksum = "ef62a3d5f7b2411119a11b6f62570dbff91d7105e011a20fb83fbf8f5761c40f"
dependencies = [
"core-foundation 0.10.1",
"jni",
"log",
"ndk-context",
"objc2 0.6.4",
"objc2-app-kit 0.3.2",
"objc2-foundation 0.3.2",
"url",
"web-sys",
+1 -1
View File
@@ -8,7 +8,7 @@ members = [
resolver = "2"
[workspace.package]
version = "1.15.0"
version = "1.16.0"
edition = "2024"
authors = ["arabian"]
homepage = "https://pwsp.arabianq.ru"
+4 -4
View File
@@ -1,6 +1,6 @@
pkgbase = pwsp-bin
pkgdesc = Lets you play audio files through your microphone (Pre-built binaries)
pkgver = 1.15.0
pkgver = 1.16.0
pkgrel = 1
url = https://github.com/arabianq/pipewire-soundpad
arch = x86_64
@@ -10,11 +10,11 @@ pkgbase = pwsp-bin
depends = alsa-lib
provides = pwsp
conflicts = pwsp
source = pipewire-soundpad-1.15.0.tar.gz :: https://github.com/arabianq/pipewire-soundpad/archive/refs/tags/v1.15.0.tar.gz
source = pipewire-soundpad-1.16.0.tar.gz :: https://github.com/arabianq/pipewire-soundpad/archive/refs/tags/v1.16.0.tar.gz
sha256sums = SKIP
source_x86_64 = pwsp-1.15.0-x86_64.zip :: https://github.com/arabianq/pipewire-soundpad/releases/download/v1.15.0/pwsp-v1.15.0-linux-x64.zip
source_x86_64 = pwsp-1.16.0-x86_64.zip :: https://github.com/arabianq/pipewire-soundpad/releases/download/v1.16.0/pwsp-v1.16.0-linux-x64.zip
sha256sums_x86_64 = SKIP
source_aarch64 = pwsp-1.15.0-aarch64.zip :: https://github.com/arabianq/pipewire-soundpad/releases/download/v1.15.0/pwsp-v1.15.0-linux-arm64.zip
source_aarch64 = pwsp-1.16.0-aarch64.zip :: https://github.com/arabianq/pipewire-soundpad/releases/download/v1.16.0/pwsp-v1.16.0-linux-arm64.zip
sha256sums_aarch64 = SKIP
pkgname = pwsp-bin
+1 -1
View File
@@ -1,7 +1,7 @@
# Maintainer: Alexander Tarasov <a.tevg@ya.ru>
pkgname=pwsp-bin
_pkgname=pipewire-soundpad
pkgver=1.15.0
pkgver=1.16.0
pkgrel=1
pkgdesc="Lets you play audio files through your microphone (Pre-built binaries)"
arch=('x86_64' 'aarch64')
+2 -2
View File
@@ -1,6 +1,6 @@
pkgbase = pwsp
pkgdesc = Lets you play audio files through your microphone
pkgver = 1.15.0
pkgver = 1.16.0
pkgrel = 1
url = https://github.com/arabianq/pipewire-soundpad
arch = x86_64
@@ -12,7 +12,7 @@ pkgbase = pwsp
makedepends = cmake
makedepends = pipewire
makedepends = alsa-lib
source = https://github.com/arabianq/pipewire-soundpad/archive/refs/tags/v1.15.0.tar.gz
source = https://github.com/arabianq/pipewire-soundpad/archive/refs/tags/v1.16.0.tar.gz
sha256sums = SKIP
pkgname = pwsp
+1 -1
View File
@@ -1,7 +1,7 @@
# Maintainer: Alexander Tarasov <a.tevg@ya.ru>
pkgsubn=pwsp
pkgname=pwsp
pkgver=1.15.0
pkgver=1.16.0
pkgrel=1
pkgdesc="Lets you play audio files through your microphone"
arch=('x86_64' 'aarch64')
+45 -45
View File
@@ -788,14 +788,14 @@
{
"type": "archive",
"archive-type": "tar-gzip",
"url": "https://static.crates.io/crates/clang-sys/clang-sys-1.8.1.crate",
"sha256": "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4",
"dest": "cargo/vendor/clang-sys-1.8.1"
"url": "https://static.crates.io/crates/clang-sys/clang-sys-1.9.1.crate",
"sha256": "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a",
"dest": "cargo/vendor/clang-sys-1.9.1"
},
{
"type": "inline",
"contents": "{\"package\": \"0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4\", \"files\": {}}",
"dest": "cargo/vendor/clang-sys-1.8.1",
"contents": "{\"package\": \"157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a\", \"files\": {}}",
"dest": "cargo/vendor/clang-sys-1.9.1",
"dest-filename": ".cargo-checksum.json"
},
{
@@ -1204,14 +1204,14 @@
{
"type": "archive",
"archive-type": "tar-gzip",
"url": "https://static.crates.io/crates/displaydoc/displaydoc-0.2.6.crate",
"sha256": "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f",
"dest": "cargo/vendor/displaydoc-0.2.6"
"url": "https://static.crates.io/crates/displaydoc/displaydoc-0.2.7.crate",
"sha256": "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8",
"dest": "cargo/vendor/displaydoc-0.2.7"
},
{
"type": "inline",
"contents": "{\"package\": \"1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f\", \"files\": {}}",
"dest": "cargo/vendor/displaydoc-0.2.6",
"contents": "{\"package\": \"c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8\", \"files\": {}}",
"dest": "cargo/vendor/displaydoc-0.2.7",
"dest-filename": ".cargo-checksum.json"
},
{
@@ -1607,14 +1607,14 @@
{
"type": "archive",
"archive-type": "tar-gzip",
"url": "https://static.crates.io/crates/event-listener/event-listener-5.4.1.crate",
"sha256": "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab",
"dest": "cargo/vendor/event-listener-5.4.1"
"url": "https://static.crates.io/crates/event-listener/event-listener-5.4.2.crate",
"sha256": "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2",
"dest": "cargo/vendor/event-listener-5.4.2"
},
{
"type": "inline",
"contents": "{\"package\": \"e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab\", \"files\": {}}",
"dest": "cargo/vendor/event-listener-5.4.1",
"contents": "{\"package\": \"5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2\", \"files\": {}}",
"dest": "cargo/vendor/event-listener-5.4.2",
"dest-filename": ".cargo-checksum.json"
},
{
@@ -2283,14 +2283,14 @@
{
"type": "archive",
"archive-type": "tar-gzip",
"url": "https://static.crates.io/crates/http/http-1.4.2.crate",
"sha256": "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425",
"dest": "cargo/vendor/http-1.4.2"
"url": "https://static.crates.io/crates/http/http-1.5.0.crate",
"sha256": "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0",
"dest": "cargo/vendor/http-1.5.0"
},
{
"type": "inline",
"contents": "{\"package\": \"6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425\", \"files\": {}}",
"dest": "cargo/vendor/http-1.4.2",
"contents": "{\"package\": \"918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0\", \"files\": {}}",
"dest": "cargo/vendor/http-1.5.0",
"dest-filename": ".cargo-checksum.json"
},
{
@@ -4272,14 +4272,14 @@
{
"type": "archive",
"archive-type": "tar-gzip",
"url": "https://static.crates.io/crates/redox_syscall/redox_syscall-0.9.0.crate",
"sha256": "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759",
"dest": "cargo/vendor/redox_syscall-0.9.0"
"url": "https://static.crates.io/crates/redox_syscall/redox_syscall-0.9.1.crate",
"sha256": "07507be7b4a5f9f26eeb41eeaebb1f5a7ff29dfb29739facc21d35bf8b11c21e",
"dest": "cargo/vendor/redox_syscall-0.9.1"
},
{
"type": "inline",
"contents": "{\"package\": \"c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759\", \"files\": {}}",
"dest": "cargo/vendor/redox_syscall-0.9.0",
"contents": "{\"package\": \"07507be7b4a5f9f26eeb41eeaebb1f5a7ff29dfb29739facc21d35bf8b11c21e\", \"files\": {}}",
"dest": "cargo/vendor/redox_syscall-0.9.1",
"dest-filename": ".cargo-checksum.json"
},
{
@@ -5486,14 +5486,14 @@
{
"type": "archive",
"archive-type": "tar-gzip",
"url": "https://static.crates.io/crates/tokio-macros/tokio-macros-2.7.1.crate",
"sha256": "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba",
"dest": "cargo/vendor/tokio-macros-2.7.1"
"url": "https://static.crates.io/crates/tokio-macros/tokio-macros-2.7.2.crate",
"sha256": "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e",
"dest": "cargo/vendor/tokio-macros-2.7.2"
},
{
"type": "inline",
"contents": "{\"package\": \"6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba\", \"files\": {}}",
"dest": "cargo/vendor/tokio-macros-2.7.1",
"contents": "{\"package\": \"78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e\", \"files\": {}}",
"dest": "cargo/vendor/tokio-macros-2.7.2",
"dest-filename": ".cargo-checksum.json"
},
{
@@ -5525,14 +5525,14 @@
{
"type": "archive",
"archive-type": "tar-gzip",
"url": "https://static.crates.io/crates/toml/toml-1.1.3+spec-1.1.0.crate",
"sha256": "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c",
"dest": "cargo/vendor/toml-1.1.3+spec-1.1.0"
"url": "https://static.crates.io/crates/toml/toml-1.1.4+spec-1.1.0.crate",
"sha256": "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5",
"dest": "cargo/vendor/toml-1.1.4+spec-1.1.0"
},
{
"type": "inline",
"contents": "{\"package\": \"53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c\", \"files\": {}}",
"dest": "cargo/vendor/toml-1.1.3+spec-1.1.0",
"contents": "{\"package\": \"3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5\", \"files\": {}}",
"dest": "cargo/vendor/toml-1.1.4+spec-1.1.0",
"dest-filename": ".cargo-checksum.json"
},
{
@@ -5590,14 +5590,14 @@
{
"type": "archive",
"archive-type": "tar-gzip",
"url": "https://static.crates.io/crates/toml_parser/toml_parser-1.1.2+spec-1.1.0.crate",
"sha256": "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526",
"dest": "cargo/vendor/toml_parser-1.1.2+spec-1.1.0"
"url": "https://static.crates.io/crates/toml_parser/toml_parser-1.1.3+spec-1.1.0.crate",
"sha256": "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56",
"dest": "cargo/vendor/toml_parser-1.1.3+spec-1.1.0"
},
{
"type": "inline",
"contents": "{\"package\": \"a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526\", \"files\": {}}",
"dest": "cargo/vendor/toml_parser-1.1.2+spec-1.1.0",
"contents": "{\"package\": \"1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56\", \"files\": {}}",
"dest": "cargo/vendor/toml_parser-1.1.3+spec-1.1.0",
"dest-filename": ".cargo-checksum.json"
},
{
@@ -6253,14 +6253,14 @@
{
"type": "archive",
"archive-type": "tar-gzip",
"url": "https://static.crates.io/crates/webbrowser/webbrowser-1.2.1.crate",
"sha256": "0fc95580916af1e68ff6a7be07446fc5db73ebf71cf092de939bbf5f7e189f72",
"dest": "cargo/vendor/webbrowser-1.2.1"
"url": "https://static.crates.io/crates/webbrowser/webbrowser-1.2.2.crate",
"sha256": "ef62a3d5f7b2411119a11b6f62570dbff91d7105e011a20fb83fbf8f5761c40f",
"dest": "cargo/vendor/webbrowser-1.2.2"
},
{
"type": "inline",
"contents": "{\"package\": \"0fc95580916af1e68ff6a7be07446fc5db73ebf71cf092de939bbf5f7e189f72\", \"files\": {}}",
"dest": "cargo/vendor/webbrowser-1.2.1",
"contents": "{\"package\": \"ef62a3d5f7b2411119a11b6f62570dbff91d7105e011a20fb83fbf8f5761c40f\", \"files\": {}}",
"dest": "cargo/vendor/webbrowser-1.2.2",
"dest-filename": ".cargo-checksum.json"
},
{
@@ -31,7 +31,7 @@
<name>arabian</name>
</developer>
<releases>
<release version="1.15.0" date="2026-07-26" />
<release version="1.16.0" date="2026-07-30" />
</releases>
<content_rating type="oars-1.1" />
</component>
+1 -1
View File
@@ -13,7 +13,7 @@
Name: pwsp
Version: 1.15.0
Version: 1.16.0
Release: %autorelease
Summary: Lets you play audio files through your microphone
+58 -36
View File
@@ -4,6 +4,17 @@ _version = 2
# Main page
# ----------------
[gui.no_tracks_playing]
en = "No tracks playing"
ru = "Не запущено ни одного трека"
es = "No hay pistas en reproducción"
fr = "Aucune piste en cours de lecture"
zh = "没有正在播放的曲目"
ar = "لا يوجد مسارات قيد التشغيل"
kz = "Ешқандай трек ойнатылып жатқан жоқ"
he = "אין רצועות שמנוגנות"
pt-BR = "Nenhuma faixa reproduzindo"
[gui.play_file_button]
en = "Play file"
ru = "Выбрать файл"
@@ -27,15 +38,15 @@ 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..."
en = "Search files... [Ctrl + F]"
ru = "Поиск файлов... [Ctrl + F]"
es = "Buscar archivos... [Ctrl + F]"
fr = "Rechercher des fichiers... [Ctrl + F]"
zh = "搜索文件... [Ctrl + F]"
ar = "البحث عن ملفات... [Ctrl + F]"
kz = "Файлдарды іздеу... [Ctrl + F]"
he = "חפש קבצים... [Ctrl + F]"
pt-BR = "Buscar arquivos... [Ctrl + F]"
[gui.context.dirs.open]
en = "Open"
@@ -126,37 +137,37 @@ he = "תאריך שינוי (הישן ביותר ראשון)"
pt-BR = "Data de modificação (Mais antigo primeiro)"
[gui.context.files.play_solo]
en = "Play Solo"
ru = "Играть"
es = "Reproducir solo"
fr = "Jouer en solo"
zh = "单独播放"
ar = "تشغيل منفرد"
kz = "Жалғыз ойнату"
he = "נגן סולו"
pt-BR = "Reproduzir"
en = "Play Solo [LMB]"
ru = "Играть [ЛКМ]"
es = "Reproducir solo [LMB]"
fr = "Jouer en solo [LMB]"
zh = "单独播放 [LMB]"
ar = "تشغيل منفرد [LMB]"
kz = "Жалғыз ойнату [ЛКМ]"
he = "נגן סולו [LMB]"
pt-BR = "Reproduzir [LMB]"
[gui.context.files.add_new]
en = "Add New"
ru = "Добавить"
es = "Añadir nuevo"
fr = "Ajouter un nouveau"
zh = "添加新项"
ar = "إضافة جديد"
kz = "Жаңасын қосу"
he = "הוסף חדש"
pt-BR = "Adicionar"
en = "Add New [Ctrl + LMB]"
ru = "Добавить [Ctrl + ЛКМ]"
es = "Añadir nuevo [Ctrl + LMB]"
fr = "Ajouter un nouveau [Ctrl + LMB]"
zh = "添加新项 [Ctrl + LMB]"
ar = "إضافة جديد [Ctrl + LMB]"
kz = "Жаңасын қосу [Ctrl + ЛКМ]"
he = "הוסף חדש [Ctrl + LMB]"
pt-BR = "Adicionar [Ctrl + LMB]"
[gui.context.files.replace_last]
en = "Replace Last"
ru = "Заменить Последний"
es = "Reemplazar último"
fr = "Remplacer le dernier"
zh = "替换上一个"
ar = "استبدال الأخير"
kz = "Соңғысын ауыстыру"
he = "החלף אחרון"
pt-BR = "Substituir"
en = "Replace Last [Shift + LMB]"
ru = "Заменить Последний [Shift + ЛКМ]"
es = "Reemplazar último [Shift + LMB]"
fr = "Remplacer le dernier [Shift + LMB]"
zh = "替换上一个 [Shift + LMB]"
ar = "استبدال الأخير [Shift + LMB]"
kz = "Соңғысын ауыстыру [Shift + ЛКМ]"
he = "החלף אחרון [Shift + LMB]"
pt-BR = "Substituir [Shift + LMB]"
[gui.context.files.show_in_fm]
en = "Show in File Manager"
@@ -283,6 +294,17 @@ kz = "GUI нұсқасы: %{version}"
he = "גרסת ממשק משתמש: %{version}"
pt-BR = "Versão da GUI: %{version}"
[gui.settings.daemon_version]
en = "Daemon version: %{version}"
ru = "Версия демона: %{version}"
es = "Versión del demonio: %{version}"
fr = "Version du démon: %{version}"
zh = "守护进程版本: %{version}"
ar = "إصدار démon: %{version}"
kz = "Демон нұсқасы: %{version}"
he = "גרסת השרת: %{version}"
pt-BR = "Versão do daemon: %{version}"
[gui.settings.theme.label]
en = "Color Scheme"
ru = "Цветовая схема"
+2 -1
View File
@@ -3,6 +3,7 @@ use egui::{Button, CollapsingHeader, FontFamily, Label, RichText, Slider, Ui};
use egui_material_icons::icons::*;
use pwsp_lib::types::{audio_player::TrackInfo, gui::AppState};
use pwsp_lib::utils::gui::format_time_pair;
use rust_i18n::t;
pub(crate) enum TrackAction {
Pause(u32),
@@ -15,7 +16,7 @@ impl SoundpadGui {
pub fn draw_header(&mut self, ui: &mut Ui) {
ui.vertical_centered_justified(|ui| {
if self.audio_player_state.tracks.is_empty() {
ui.label("No tracks playing");
ui.label(t!("gui.no_tracks_playing"));
return;
}
+10 -4
View File
@@ -120,10 +120,16 @@ impl SoundpadGui {
// --------------------------------
ui.with_layout(Layout::bottom_up(Align::Min), |ui| {
ui.label(t!(
"gui.settings.version",
version = env!("CARGO_PKG_VERSION")
));
ui.horizontal(|ui| {
ui.label(t!(
"gui.settings.version",
version = env!("CARGO_PKG_VERSION")
));
ui.label(t!(
"gui.settings.daemon_version",
version = self.audio_player_state.daemon_version
))
});
});
});
}
+1
View File
@@ -59,6 +59,7 @@ pub struct FullState {
pub all_inputs: HashMap<String, String>,
pub current_output: String,
pub all_outputs: HashMap<String, String>,
pub daemon_version: String,
}
/// Which of the two independent output paths a volume applies to.
+1
View File
@@ -684,6 +684,7 @@ impl Executable for GetFullStateCommand {
all_inputs,
current_output: audio_player.output_device_name.clone().unwrap_or_default(),
all_outputs,
daemon_version: env!("CARGO_PKG_VERSION").into(),
};
match serde_json::to_string(&full_state) {
+1
View File
@@ -130,6 +130,7 @@ pub struct AudioPlayerState {
pub all_outputs_sorted: Vec<(String, String)>,
pub is_daemon_running: bool,
pub daemon_version: String,
pub hotkey_config: Option<HotkeyConfig>,
}
+1
View File
@@ -148,6 +148,7 @@ pub fn start_app_state_thread(audio_player_state_shared: Arc<Mutex<AudioPlayerSt
}
guard.is_daemon_running = true;
guard.daemon_version = full_state.daemon_version;
}
// Poll hotkey config at a lower frequency (~every 2 seconds)