Compare commits

..

101 Commits

Author SHA1 Message Date
arabianq 59bee29609 change version to 1.1.2 2025-11-23 01:49:57 +03:00
arabianq 12725d0add fix incorrect volume slider width 2025-11-23 01:47:54 +03:00
arabianq bb83ac54ef disable hotkeys when some widget is focused 2025-11-23 01:46:47 +03:00
arabianq adfc0f25c4 change version to 1.1.1 2025-11-09 22:37:55 +03:00
arabianq 572aa33c95 fix: crash when setting negative position 2025-11-09 22:28:49 +03:00
arabianq 3850a9ce10 new hotkeys to select dirs, files. 2025-11-09 22:26:07 +03:00
arabianq b7dc54c2cb cargo update 2025-11-09 21:53:55 +03:00
arabianq 0357c239d5 change version to 1.1.0 2025-11-09 21:53:18 +03:00
arabianq cb1bd42f83 add 10s timeout before starting pwsp-daemon via systemd service 2025-10-31 16:39:17 +03:00
arabianq 113eb38767 update dependencies 2025-10-31 16:37:38 +03:00
arabianq ab68648ef6 change version to 1.0.3 2025-10-13 23:54:16 +03:00
arabianq e10b6f1449 call pipewire::init in every pipewire thread 2025-10-13 23:51:37 +03:00
arabianq ede5028d35 cargo update 2025-10-13 23:48:40 +03:00
arabianq f721e4612a deps: update clap 2025-10-13 23:48:05 +03:00
arabianq ef9125024c deps: update egui, eframe, egui_material_icons 2025-10-13 23:47:42 +03:00
arabianq 12c70f0edb fix: now systemd service should wait for pipewire to start 2025-10-13 23:46:15 +03:00
arabianq eae455f0b8 change pwsp version to 1.0.2 2025-10-05 23:32:03 +03:00
arabianq e0a55dffa6 update dependencies 2025-10-05 23:31:32 +03:00
arabianq 6a755ad068 use device name instead of node id to get audio device 2025-10-05 23:26:29 +03:00
arabianq 7809a8c9ff fix pwsp.spec failed to build 2025-09-26 23:39:48 +03:00
arabianq 76a5f069ab update descriptions in github actions to use new tags format 2025-09-26 23:31:51 +03:00
arabianq ae84b345a4 change pwsp.spec to use new tags format 2025-09-26 23:30:09 +03:00
arabianq cdd58a04ed change package version to 1.0.1 2025-09-26 23:29:14 +03:00
arabianq 271955c777 cargo update 2025-09-26 23:28:21 +03:00
arabianq 5b475d1f07 bump serde version to 1.0.227 2025-09-26 23:27:56 +03:00
arabianq 5509b80f3e change code to work with pipewire 0.9.2 2025-09-26 23:25:30 +03:00
arabianq 2a31865822 bump pipewire crate to version 0.9.2 2025-09-26 23:20:11 +03:00
arabianq 258467d5bc change: now, instead of the full path to the file, only its name is displayed at the top 2025-09-26 23:09:28 +03:00
arabianq 51ab5eacbc fix: too large directory names break the interface 2025-09-26 23:06:27 +03:00
arabian 1957a5e2fd Delete scripts directory 2025-09-26 01:43:08 +03:00
arabian 5f852343da Update README.md 2025-09-26 01:42:14 +03:00
arabian aee48c8f8d Update release-deb.yml
fix .deb uploading
2025-09-26 01:22:35 +03:00
arabian c63b220d92 Update release-deb.yml
change name
2025-09-26 01:17:48 +03:00
arabian a4708f1812 Create release-deb.yml 2025-09-26 01:17:28 +03:00
arabian 3754121ab5 Update and rename build-release.yml to release-archive.yml 2025-09-26 01:10:35 +03:00
arabian a665939137 Update build-release.yml 2025-09-26 01:01:58 +03:00
arabian 974fdc9411 Update build-release.yml
try to fix zip creation
2025-09-26 00:54:56 +03:00
arabian 9a1107fb41 Update build-release.yml
change workflow_dispatch description
2025-09-26 00:50:13 +03:00
arabian ad2c15f9e3 Update build-release.yml
add build dependencies installation
2025-09-26 00:49:40 +03:00
arabian 6d66b57d1b Create build-release.yml 2025-09-26 00:46:28 +03:00
arabian 869b67738c Update README.md
add installation on Arch Linux from AUR
2025-09-26 00:35:27 +03:00
arabianq af3e19d794 update README.md 2025-09-25 19:50:09 +03:00
arabianq b42498d188 remove build_rpm.sh and cargo-generate-rpm mentions. Now copr handles rpm builds 2025-09-25 18:48:19 +03:00
arabianq 60975110da fix pwsp.spec 2025-09-25 18:40:06 +03:00
arabianq 05f243b322 add missing files to pwsp.spec 2025-09-25 17:54:10 +03:00
arabianq 0188cac476 specify BuildRequires and %install manually in pwsp.spec 2025-09-25 17:15:37 +03:00
arabianq 3e93ba14e1 update pwsp.spec file 2025-09-25 17:01:34 +03:00
arabianq 939dbea12b update pwsp.spec file 2025-09-25 16:57:41 +03:00
arabianq a4d3111c6d update pwsp.spec file 2025-09-25 16:55:26 +03:00
arabianq 9053056dfa fix Source url in pwsp.spec 2025-09-25 16:51:01 +03:00
arabianq e9e3f67735 add pwsp.spec 2025-09-25 16:47:26 +03:00
arabianq 9238e6563b remove generate_rpm_spec.sh 2025-09-25 16:46:33 +03:00
arabianq 939b01b587 use --path . in generate_rpm_spec 2025-09-25 16:44:18 +03:00
arabianq 489878c813 add rust-pwsp.spec 2025-09-25 16:39:19 +03:00
arabianq c1c1bfd487 add generate_rpm_spec.sh and rust-pwsp.spec 2025-09-25 16:38:25 +03:00
arabianq 2028a728e0 fix .rpm configuration 2025-09-24 23:49:36 +03:00
arabianq e627e71cf6 new README 2025-09-24 23:39:30 +03:00
arabianq dfe7a7e971 1.0.0 rewrite 2025-09-24 22:51:34 +03:00
arabianq 0535744b30 clear README 2025-09-14 01:05:24 +03:00
arabianq 3170e9f30a remove everything 2025-09-14 01:05:07 +03:00
arabianq 7ddd2c0dab change version to 0.1.8 2025-09-13 18:31:22 +03:00
arabianq 8590dcceae cargo update 2025-09-13 18:30:57 +03:00
arabianq fb6714aeee better imports 2025-09-13 18:30:19 +03:00
arabianq 34886e44a6 PlayerState::PLAYING -> PlayerState::Playing; PlayerState::PAUSED -> PlayerState::Paused 2025-09-13 18:28:30 +03:00
arabianq ede04dd3f8 cargo clippy 2025-09-13 18:27:22 +03:00
arabianq ad892dda29 bump egui and eframe to 0.32.3 2025-09-13 18:26:12 +03:00
arabianq 3a02e9991c change version to 0.1.7 2025-09-05 22:20:34 +03:00
arabianq 5d9d20417b update egui and eframe to 0.32.2 2025-09-05 22:19:26 +03:00
arabianq d1994d7226 change version to 0.1.6 2025-08-21 16:42:36 +03:00
arabianq b526d67d2f update deps 2025-08-21 16:42:22 +03:00
arabianq c641ec4f31 fix crash when seeking 2025-08-21 16:40:37 +03:00
arabianq 5bce45c97f Merge branch 'main' of github.com:arabianq/pipewire-soundpad 2025-07-21 12:20:07 +03:00
arabianq adfdf7db69 version -> 0.1.5 2025-07-21 12:19:50 +03:00
arabianq 7a7e0f741a update dependencies 2025-07-21 12:19:31 +03:00
arabianq d86cd6c5d3 rodio -> 0.21.1 2025-07-21 12:15:01 +03:00
arabian 61ba71d38e Update README.md 2025-07-15 20:30:56 +03:00
arabianq 7116ccf487 version -> 0.1.4 2025-07-12 00:51:57 +03:00
arabianq 654ef0d973 fix incorrect dependency for deb package 2025-07-12 00:51:31 +03:00
arabianq e9756b0681 update Cargo.toml 2025-07-12 00:27:50 +03:00
arabianq f72fe588e3 egui, eframe -> 0.32.0; egui_material_icons -> 0.4.0 2025-07-12 00:24:47 +03:00
arabianq 53533c35ef update build scripts 2025-07-12 00:22:52 +03:00
arabianq 382ddb0ff2 update README 2025-07-12 00:16:24 +03:00
arabianq 714f81ab34 update screenshot.png 2025-07-12 00:14:22 +03:00
arabianq 3c028972fe new build scripts and .desktop file 2025-07-08 05:01:44 +03:00
arabianq 7e3ff23156 version -> 0.1.31 2025-07-06 22:55:54 +03:00
arabianq 09cec44a5b maximum volume -> 1.0 from 5.0 2025-07-06 22:55:27 +03:00
arabianq ead17d26a9 version -> 0.1.3 2025-07-06 22:28:05 +03:00
arabianq dfa1cfbb15 now use single settings file instead of many; minor refactoring 2025-07-06 22:26:33 +03:00
arabianq a70c991711 new app::run function 2025-07-06 21:08:50 +03:00
arabianq 8c0704ce57 move creation of dirs to the separate function 2025-07-06 21:03:09 +03:00
arabianq 00196bfe7f split main.rs into main.rs and app.rs 2025-07-06 20:59:35 +03:00
arabianq 428fb4064d bump pwsp version to 0.1.2 2025-04-27 01:15:00 +03:00
arabianq e2b003be31 bump edition to 2024 2025-04-27 01:14:38 +03:00
arabianq 79176432de fixed setting player position to 0 2025-04-27 01:09:07 +03:00
arabianq 9e0a307106 bump egui, eframe and rfd versions 2025-04-27 01:01:24 +03:00
arabianq 428565594d v0.1.1 - minor fixes 2025-02-11 00:11:27 +03:00
arabianq 1d0e3036e9 Added unlink() function 2025-02-10 22:54:27 +03:00
arabianq b31f4c8c45 Update README.md 2025-02-10 17:40:10 +03:00
arabianq 84b6f8ce20 Added Cargo.lock 2025-02-10 02:58:14 +03:00
arabianq c797b204a2 Merge branch 'main' of github.com:arabianq/pipewire-soundpad 2025-02-09 23:41:48 +03:00
arabian faa29d8805 Create LICENSE 2025-02-09 13:43:23 +03:00
11 changed files with 112 additions and 187 deletions
Generated
+82 -91
View File
@@ -504,9 +504,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.49"
version = "1.2.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215"
checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -531,9 +531,9 @@ dependencies = [
[[package]]
name = "cfg-expr"
version = "0.20.5"
version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21be0e1ce6cdb2ee7fff840f922fb04ead349e5cfb1e750b769132d44ce04720"
checksum = "9acd0bdbbf4b2612d09f52ba61da432140cb10930354079d0d53fafc12968726"
dependencies = [
"smallvec",
"target-lexicon",
@@ -886,9 +886,9 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
[[package]]
name = "ecolor"
version = "0.33.3"
version = "0.33.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71ddb8ac7643d1dba1bb02110e804406dd459a838efcb14011ced10556711a8e"
checksum = "084980ebede2fb1ad6c4f54285b3e489052ef2b6aa4016e4c19349417adc75c5"
dependencies = [
"bytemuck",
"emath",
@@ -896,9 +896,9 @@ dependencies = [
[[package]]
name = "eframe"
version = "0.33.3"
version = "0.33.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "457481173e6db5ca9fa2be93a58df8f4c7be639587aeb4853b526c6cf87db4e6"
checksum = "4f60ee3c69cd01d5725b4ef476ed6a3a6009968c57843a2f1beb96f021e4a54b"
dependencies = [
"ahash",
"bytemuck",
@@ -931,9 +931,9 @@ dependencies = [
[[package]]
name = "egui"
version = "0.33.3"
version = "0.33.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a9b567d356674e9a5121ed3fedfb0a7c31e059fe71f6972b691bcd0bfc284e3"
checksum = "b75645894de4ca1695ab3ab7201c7953bb95c1725aafeefa6822dc901ad2a81b"
dependencies = [
"ahash",
"bitflags 2.10.0",
@@ -948,9 +948,9 @@ dependencies = [
[[package]]
name = "egui-wgpu"
version = "0.33.3"
version = "0.33.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e4d209971c84b2352a06174abdba701af1e552ce56b144d96f2bd50a3c91236"
checksum = "acdaac35a6e0ff458aaa5776b2bda578e38334a9d1258f7795042a70372745b7"
dependencies = [
"ahash",
"bytemuck",
@@ -968,9 +968,9 @@ dependencies = [
[[package]]
name = "egui-winit"
version = "0.33.3"
version = "0.33.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec6687e5bb551702f4ad10ac428bab12acf9d53047ebb1082d4a0ed8c6251a29"
checksum = "4772ed5f16fa8ec2ba295e58f62b58ee83fcf49e67ec13d2b7ddf4e9a2dea34e"
dependencies = [
"arboard",
"bytemuck",
@@ -989,9 +989,9 @@ dependencies = [
[[package]]
name = "egui_glow"
version = "0.33.3"
version = "0.33.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6420863ea1d90e750f75075231a260030ad8a9f30a7cef82cdc966492dc4c4eb"
checksum = "17b94ff67a1d18933fff2519f5f57c388f932c093036c381fb9ae2853b3e1e09"
dependencies = [
"bytemuck",
"egui",
@@ -1021,9 +1021,9 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]]
name = "emath"
version = "0.33.3"
version = "0.33.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "491bdf728bf25ddd9ad60d4cf1c48588fa82c013a2440b91aa7fc43e34a07c32"
checksum = "0e561352ae95c22ad179fb56c38d6e6eecd86cf4925cf5c70e738dd01df9b620"
dependencies = [
"bytemuck",
]
@@ -1039,9 +1039,9 @@ dependencies = [
[[package]]
name = "endi"
version = "1.1.1"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099"
checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
[[package]]
name = "enumflags2"
@@ -1066,9 +1066,9 @@ dependencies = [
[[package]]
name = "epaint"
version = "0.33.3"
version = "0.33.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "009d0dd3c2163823a0abdb899451ecbc78798dec545ee91b43aff1fa790bab62"
checksum = "a909ce8cee63e8350fb0c251ad39277a5b24f19add60787e84a3b3ab3f2bd83a"
dependencies = [
"ab_glyph",
"ahash",
@@ -1085,9 +1085,9 @@ dependencies = [
[[package]]
name = "epaint_default_fonts"
version = "0.33.3"
version = "0.33.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c4fbe202b6578d3d56428fa185cdf114a05e49da05f477b3c7f0fbb221f1862"
checksum = "ad9649446c23368ae138716910e3e28143995691b598fbb9de16b42b0722cbcc"
[[package]]
name = "equivalent"
@@ -1555,9 +1555,9 @@ checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
[[package]]
name = "icu_properties"
version = "2.1.2"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99"
dependencies = [
"icu_collections",
"icu_locale_core",
@@ -1569,9 +1569,9 @@ dependencies = [
[[package]]
name = "icu_properties_data"
version = "2.1.2"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899"
[[package]]
name = "icu_provider"
@@ -1682,9 +1682,9 @@ dependencies = [
[[package]]
name = "js-sys"
version = "0.3.83"
version = "0.3.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8"
checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65"
dependencies = [
"once_cell",
"wasm-bindgen",
@@ -1704,9 +1704,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
version = "0.2.178"
version = "0.2.177"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
[[package]]
name = "libloading"
@@ -1726,13 +1726,13 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
[[package]]
name = "libredox"
version = "0.1.11"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50"
checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
dependencies = [
"bitflags 2.10.0",
"libc",
"redox_syscall 0.6.0",
"redox_syscall 0.5.18",
]
[[package]]
@@ -1798,9 +1798,9 @@ dependencies = [
[[package]]
name = "log"
version = "0.4.29"
version = "0.4.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
[[package]]
name = "mach2"
@@ -1853,9 +1853,9 @@ dependencies = [
[[package]]
name = "mio"
version = "1.1.1"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
dependencies = [
"libc",
"wasi",
@@ -1864,9 +1864,9 @@ dependencies = [
[[package]]
name = "moxcms"
version = "0.7.11"
version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97"
checksum = "0fbdd3d7436f8b5e892b8b7ea114271ff0fa00bc5acae845d53b07d498616ef6"
dependencies = [
"num-traits",
"pxfm",
@@ -2601,7 +2601,7 @@ checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773"
[[package]]
name = "pwsp"
version = "1.2.0"
version = "1.1.2"
dependencies = [
"async-trait",
"clap",
@@ -2620,9 +2620,9 @@ dependencies = [
[[package]]
name = "pxfm"
version = "0.1.27"
version = "0.1.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8"
checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84"
dependencies = [
"num-traits",
]
@@ -2730,15 +2730,6 @@ dependencies = [
"bitflags 2.10.0",
]
[[package]]
name = "redox_syscall"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5"
dependencies = [
"bitflags 2.10.0",
]
[[package]]
name = "redox_users"
version = "0.5.2"
@@ -2787,9 +2778,9 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
[[package]]
name = "rfd"
version = "0.16.0"
version = "0.15.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672"
checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed"
dependencies = [
"ashpd",
"block2 0.6.2",
@@ -2806,7 +2797,7 @@ dependencies = [
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"windows-sys 0.60.2",
"windows-sys 0.59.0",
]
[[package]]
@@ -2972,9 +2963,9 @@ dependencies = [
[[package]]
name = "simd-adler32"
version = "0.3.8"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
[[package]]
name = "slab"
@@ -2984,9 +2975,9 @@ checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
[[package]]
name = "slotmap"
version = "1.1.1"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038"
checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a"
dependencies = [
"version_check",
]
@@ -3294,9 +3285,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.111"
version = "2.0.110"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea"
dependencies = [
"proc-macro2",
"quote",
@@ -3464,9 +3455,9 @@ dependencies = [
[[package]]
name = "toml_edit"
version = "0.23.9"
version = "0.23.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832"
checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d"
dependencies = [
"indexmap",
"toml_datetime",
@@ -3491,9 +3482,9 @@ checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
[[package]]
name = "tracing"
version = "0.1.43"
version = "0.1.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647"
checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
dependencies = [
"log",
"pin-project-lite",
@@ -3503,9 +3494,9 @@ dependencies = [
[[package]]
name = "tracing-attributes"
version = "0.1.31"
version = "0.1.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
dependencies = [
"proc-macro2",
"quote",
@@ -3514,9 +3505,9 @@ dependencies = [
[[package]]
name = "tracing-core"
version = "0.1.35"
version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c"
checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
dependencies = [
"once_cell",
]
@@ -3591,12 +3582,12 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
[[package]]
name = "uuid"
version = "1.19.0"
version = "1.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a"
checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"
dependencies = [
"js-sys",
"serde_core",
"serde",
"wasm-bindgen",
]
@@ -3639,9 +3630,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen"
version = "0.2.106"
version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd"
checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60"
dependencies = [
"cfg-if",
"once_cell",
@@ -3652,9 +3643,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.56"
version = "0.4.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c"
checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
dependencies = [
"cfg-if",
"js-sys",
@@ -3665,9 +3656,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.106"
version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3"
checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -3675,9 +3666,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.106"
version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40"
checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc"
dependencies = [
"bumpalo",
"proc-macro2",
@@ -3688,9 +3679,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.106"
version = "0.2.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4"
checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76"
dependencies = [
"unicode-ident",
]
@@ -3832,9 +3823,9 @@ dependencies = [
[[package]]
name = "web-sys"
version = "0.3.83"
version = "0.3.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac"
checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -4318,9 +4309,9 @@ dependencies = [
[[package]]
name = "winnow"
version = "0.7.14"
version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
dependencies = [
"memchr",
]
@@ -4486,18 +4477,18 @@ dependencies = [
[[package]]
name = "zerocopy"
version = "0.8.31"
version = "0.8.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3"
checksum = "43fa6694ed34d6e57407afbccdeecfa268c470a7d2a5b0cf49ce9fcc345afb90"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.31"
version = "0.8.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a"
checksum = "c640b22cd9817fae95be82f0d2f90b11f7605f6c319d16705c459b27ac2cbc26"
dependencies = [
"proc-macro2",
"quote",
+5 -5
View File
@@ -1,6 +1,6 @@
[package]
name = "pwsp"
version = "1.2.0"
version = "1.1.2"
edition = "2024"
authors = ["arabian"]
description = "PWSP lets you play audio files through your microphone. Has both CLI and GUI clients."
@@ -19,15 +19,15 @@ async-trait = "0.1.89"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.145"
clap = { version = "4.5.53", default-features = false, features = ["std", "suggestions", "help", "usage", "error-context", "derive"] }
clap = { version = "4.5.51", 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 = "0.16.0"
rfd = "0.15.4"
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 = { version = "0.33.0", default-features = false, features = ["default_fonts", "rayon"] }
eframe = { version = "0.33.0", default-features = false, features = ["default_fonts", "glow", "x11", "wayland"] }
egui_material_icons = "0.5.0"
[[bin]]
+1 -1
View File
@@ -4,7 +4,7 @@
%global cargo_install_lib 0
Name: pwsp
Version: 1.2.0
Version: 1.1.2
Release: %autorelease
Summary: Lets you play audio files through your microphone
+7 -10
View File
@@ -14,17 +14,17 @@ struct Cli {
#[derive(Subcommand, Debug)]
enum Commands {
/// Perform an action (ping, pause, resume, toggle-pause, stop, play)
/// Perform an action (ping, pause, resume, stop, play)
Action {
#[clap(subcommand)]
action: Actions,
},
/// Get information from the player (is paused, volume, position, duration, state, current-file-path, input, inputs)
/// Get information from the player (is paused, volume, position, state)
Get {
#[clap(subcommand)]
parameter: GetCommands,
},
/// Set information in the player (volume, position, input)
/// Set information in the player (volume, position)
Set {
#[clap(subcommand)]
parameter: SetCommands,
@@ -39,8 +39,6 @@ enum Actions {
Pause,
/// Resume audio playback
Resume,
/// Toggle pause
TogglePause,
/// Stop audio playback and clear the queue
Stop,
/// Play a file
@@ -53,11 +51,11 @@ enum GetCommands {
IsPaused,
/// Playback volume
Volume,
/// Playback position (in seconds)
/// Playback position
Position,
/// Duration of the current file
Duration,
/// Player state (Playing, Paused or Stopped)
/// Player state
State,
/// Current playing file path
CurrentFilePath,
@@ -71,9 +69,9 @@ enum GetCommands {
enum SetCommands {
/// Playback volume
Volume { volume: f32 },
/// Playback position (in seconds)
/// Playback position
Position { position: f32 },
/// Audio input id (see pwsp-cli get inputs)
/// Input
Input { name: String },
}
@@ -88,7 +86,6 @@ async fn main() -> Result<(), Box<dyn Error>> {
Actions::Ping => Request::ping(),
Actions::Pause => Request::pause(),
Actions::Resume => Request::resume(),
Actions::TogglePause => Request::toggle_pause(),
Actions::Stop => Request::stop(),
Actions::Play { file_path } => Request::play(file_path.to_str().unwrap()),
},
+12 -23
View File
@@ -1,7 +1,7 @@
use crate::gui::{SUPPORTED_EXTENSIONS, SoundpadGui};
use crate::gui::SoundpadGui;
use egui::{
Align, AtomExt, Button, Color32, ComboBox, FontFamily, Label, Layout, RichText, ScrollArea,
Slider, TextEdit, Ui, Vec2,
AtomExt, Button, Color32, ComboBox, FontFamily, Label, RichText, ScrollArea, Slider, TextEdit,
Ui, Vec2,
};
use egui_material_icons::icons;
use pwsp::types::audio_player::PlayerState;
@@ -48,15 +48,10 @@ impl SoundpadGui {
&mut self.config.save_scale_factor,
"Always remember UI scale factor",
);
let pause_on_exit_response = ui.checkbox(
&mut self.config.pause_on_exit,
"Pause audio playback when the window is closed",
);
if save_volume_response.changed()
|| save_input_response.changed()
|| save_scale_response.changed()
|| pause_on_exit_response.changed()
{
self.config.save_to_file().ok();
}
@@ -187,8 +182,6 @@ impl SoundpadGui {
ui.set_min_height(area_size.y);
ScrollArea::vertical().id_salt(0).show(ui, |ui| {
ui.set_min_width(area_size.x);
let mut dirs: Vec<PathBuf> = self.app_state.dirs.iter().cloned().collect();
dirs.sort();
for path in dirs.iter() {
@@ -223,18 +216,10 @@ impl SoundpadGui {
}
ui.horizontal(|ui| {
let add_dirs_button = Button::new(icons::ICON_ADD).frame(false);
let add_dirs_button_response = ui.add_sized([18.0, 18.0], add_dirs_button);
if add_dirs_button_response.clicked() {
self.add_dirs();
}
});
ui.with_layout(Layout::bottom_up(Align::Min), |ui| {
let play_file_button = Button::new("Play file");
let play_file_button_response = ui.add(play_file_button);
if play_file_button_response.clicked() {
self.open_file();
let add_dir_button = egui::Button::new(icons::ICON_ADD).frame(false);
let add_dir_button_response = ui.add_sized([18.0, 18.0], add_dir_button);
if add_dir_button_response.clicked() {
self.add_dir();
}
});
});
@@ -242,6 +227,10 @@ impl SoundpadGui {
}
fn draw_files(&mut self, ui: &mut Ui, area_size: Vec2) {
let extensions = [
"mp3", "wav", "ogg", "flac", "mp4", "m4a", "aac", "mov", "mkv", "webm", "avi",
];
ui.vertical(|ui| {
ui.horizontal(|ui| {
let search_field = ui.add_sized(
@@ -267,7 +256,7 @@ impl SoundpadGui {
continue;
}
if !SUPPORTED_EXTENSIONS
if !extensions
.contains(&entry_path.extension().unwrap_or_default().to_str().unwrap())
{
continue;
+3 -23
View File
@@ -23,10 +23,6 @@ use std::{
sync::{Arc, Mutex},
};
const SUPPORTED_EXTENSIONS: [&str; 11] = [
"mp3", "wav", "ogg", "flac", "mp4", "m4a", "aac", "mov", "mkv", "webm", "avi",
];
struct SoundpadGui {
pub app_state: AppState,
pub config: GuiConfig,
@@ -72,19 +68,10 @@ impl SoundpadGui {
};
}
pub fn open_file(&mut self) {
let file_dialog = FileDialog::new().add_filter("Audio File", &SUPPORTED_EXTENSIONS);
if let Some(path) = file_dialog.pick_file() {
self.play_file(&path);
}
}
pub fn add_dirs(&mut self) {
pub fn add_dir(&mut self) {
let file_dialog = FileDialog::new();
if let Some(paths) = file_dialog.pick_folders() {
for path in paths {
if let Some(path) = file_dialog.pick_folder() {
self.app_state.dirs.insert(path);
}
self.config.dirs = self.app_state.dirs.clone();
self.config.save_to_file().ok();
}
@@ -96,7 +83,6 @@ impl SoundpadGui {
&& current_dir == path
{
self.app_state.current_dir = None;
self.app_state.files.clear();
}
self.config.dirs = self.app_state.dirs.clone();
self.config.save_to_file().ok();
@@ -152,13 +138,7 @@ pub async fn run() -> Result<(), Box<dyn Error>> {
Ok(Box::new(SoundpadGui::new(&cc.egui_ctx)))
}),
) {
Ok(_) => {
let config = get_gui_config();
if config.pause_on_exit {
make_request_sync(Request::pause()).ok();
}
Ok(())
}
Ok(_) => Ok(()),
Err(e) => Err(e.into()),
}
}
+1 -22
View File
@@ -1,5 +1,5 @@
use crate::{
types::{audio_player::PlayerState, socket::Response},
types::socket::Response,
utils::{daemon::get_audio_player, pipewire::get_all_devices},
};
use async_trait::async_trait;
@@ -16,8 +16,6 @@ pub struct PauseCommand {}
pub struct ResumeCommand {}
pub struct TogglePauseCommand {}
pub struct StopCommand {}
pub struct IsPausedCommand {}
@@ -77,25 +75,6 @@ impl Executable for ResumeCommand {
}
}
#[async_trait]
impl Executable for TogglePauseCommand {
async fn execute(&self) -> Response {
let mut audio_player = get_audio_player().await.lock().await;
if audio_player.get_state() == PlayerState::Stopped {
return Response::new(false, "Audio is not playing");
}
if audio_player.is_paused() {
audio_player.resume();
Response::new(true, "Audio was resumed")
} else {
audio_player.pause();
Response::new(true, "Audio was paused")
}
}
}
#[async_trait]
impl Executable for StopCommand {
async fn execute(&self) -> Response {
-2
View File
@@ -36,7 +36,6 @@ pub struct GuiConfig {
pub save_volume: bool,
pub save_input: bool,
pub save_scale_factor: bool,
pub pause_on_exit: bool,
pub dirs: HashSet<PathBuf>,
}
@@ -49,7 +48,6 @@ impl Default for GuiConfig {
save_volume: false,
save_input: false,
save_scale_factor: false,
pause_on_exit: false,
dirs: HashSet::default(),
}
-4
View File
@@ -32,10 +32,6 @@ impl Request {
Request::new("resume", vec![])
}
pub fn toggle_pause() -> Self {
Request::new("toggle_pause", vec![])
}
pub fn stop() -> Self {
Request::new("stop", vec![])
}
-1
View File
@@ -7,7 +7,6 @@ pub fn parse_command(request: &Request) -> Option<Box<dyn Executable + Send>> {
"ping" => Some(Box::new(PingCommand {})),
"pause" => Some(Box::new(PauseCommand {})),
"resume" => Some(Box::new(ResumeCommand {})),
"toggle_pause" => Some(Box::new(TogglePauseCommand {})),
"stop" => Some(Box::new(StopCommand {})),
"is_paused" => Some(Box::new(IsPausedCommand {})),
"get_state" => Some(Box::new(GetStateCommand {})),
-4
View File
@@ -164,10 +164,6 @@ pub async fn get_all_devices() -> Result<(Vec<AudioDevice>, Vec<AudioDevice>), B
input_device.input_fl = Some(port.clone());
input_device.input_fr = Some(port)
}
"capture_MONO" => {
input_device.input_fl = Some(port.clone());
input_device.input_fr = Some(port);
}
_ => {}
}
} else if output_devices.contains_key(&node_id) {