diff --git a/packages/aur/bin/PKGBUILD b/packages/aur/bin/PKGBUILD index 5526cd3..2425c23 100644 --- a/packages/aur/bin/PKGBUILD +++ b/packages/aur/bin/PKGBUILD @@ -28,7 +28,7 @@ package() { install -Dm644 "$_srcsrc/pwsp-gui/assets/pwsp-gui.desktop" "${pkgdir}/usr/share/applications/pwsp-gui.desktop" install -Dm644 "$_srcsrc/pwsp-gui/assets/icon.png" "${pkgdir}/usr/share/icons/hicolor/256x256/apps/pwsp.png" - install -Dm644 "$_srcsrc/pwsp-gui/assets/pwsp-daemon.service" "${pkgdir}/usr/lib/systemd/user/pwsp-daemon.service" + install -Dm644 "$_srcsrc/pwsp-daemon/assets/pwsp-daemon.service" "${pkgdir}/usr/lib/systemd/user/pwsp-daemon.service" install -Dm644 "$_srcsrc/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" } diff --git a/packages/aur/standart/PKGBUILD b/packages/aur/standart/PKGBUILD index 529417a..cf79c34 100644 --- a/packages/aur/standart/PKGBUILD +++ b/packages/aur/standart/PKGBUILD @@ -44,5 +44,5 @@ package() { install -Dm644 "pwsp-gui/assets/pwsp-gui.desktop" "${pkgdir}/usr/share/applications/pwsp-gui.desktop" install -Dm644 "pwsp-gui/assets/icon.png" "${pkgdir}/usr/share/icons/hicolor/256x256/apps/pwsp.png" - install -Dm644 "pwsp-gui/assets/pwsp-daemon.service" "${pkgdir}/usr/lib/systemd/user/pwsp-daemon.service" + install -Dm644 "pwsp-daemon/assets/pwsp-daemon.service" "${pkgdir}/usr/lib/systemd/user/pwsp-daemon.service" } diff --git a/packages/rpm/pwsp-git.spec b/packages/rpm/pwsp-git.spec index 86552da..78d5786 100644 --- a/packages/rpm/pwsp-git.spec +++ b/packages/rpm/pwsp-git.spec @@ -68,7 +68,16 @@ install -Dm755 target/release/pwsp-gui %{buildroot}%{_bindir}/pwsp-gui install -Dm644 pwsp-gui/assets/pwsp-gui.desktop %{buildroot}%{_datadir}/applications/pwsp.desktop install -Dm644 pwsp-gui/assets/icon.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/pwsp.png -install -Dm644 pwsp-gui/assets/pwsp-daemon.service %{buildroot}/usr/lib/systemd/user/pwsp-daemon.service +install -Dm644 pwsp-daemon/assets/pwsp-daemon.service %{buildroot}/usr/lib/systemd/user/pwsp-daemon.service + +%post +%systemd_user_post pwsp-daemon.service + +%preun +%systemd_user_preun pwsp-daemon.service + +%postun +%systemd_user_postun_with_restart pwsp-daemon.service %files %license LICENSE diff --git a/packages/rpm/pwsp.spec b/packages/rpm/pwsp.spec index b5cd1a1..b481986 100644 --- a/packages/rpm/pwsp.spec +++ b/packages/rpm/pwsp.spec @@ -68,7 +68,16 @@ install -Dm755 target/release/pwsp-gui %{buildroot}%{_bindir}/pwsp-gui install -Dm644 pwsp-gui/assets/pwsp-gui.desktop %{buildroot}%{_datadir}/applications/pwsp.desktop install -Dm644 pwsp-gui/assets/icon.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/pwsp.png -install -Dm644 pwsp-gui/assets/pwsp-daemon.service %{buildroot}/usr/lib/systemd/user/pwsp-daemon.service +install -Dm644 pwsp-daemon/assets/pwsp-daemon.service %{buildroot}/usr/lib/systemd/user/pwsp-daemon.service + +%post +%systemd_user_post pwsp-daemon.service + +%preun +%systemd_user_preun pwsp-daemon.service + +%postun +%systemd_user_postun_with_restart pwsp-daemon.service %files %license LICENSE diff --git a/pwsp-daemon/assets/pwsp-daemon.service b/pwsp-daemon/assets/pwsp-daemon.service new file mode 100644 index 0000000..d30de89 --- /dev/null +++ b/pwsp-daemon/assets/pwsp-daemon.service @@ -0,0 +1,16 @@ +[Unit] +Description=Pipewire Soundpad Daemon +Requires=pipewire.service +After=pipewire.service +PartOf=graphical-session.target + +[Service] +Type=simple +ExecStart=/usr/bin/pwsp-daemon +Restart=on-failure +RestartSec=3 +RuntimeDirectory=pwsp +SyslogIdentifier=pwsp-daemon + +[Install] +WantedBy=default.target diff --git a/pwsp-gui/Cargo.toml b/pwsp-gui/Cargo.toml index 8c8dc2a..05843e4 100644 --- a/pwsp-gui/Cargo.toml +++ b/pwsp-gui/Cargo.toml @@ -38,6 +38,7 @@ percent-encoding.workspace = true name = "pwsp" section = "sound" priority = "optional" +maintainer-scripts = "maintainer-scripts" assets = [ [ "target/release/pwsp-daemon", @@ -65,7 +66,7 @@ assets = [ "644", ], [ - "assets/pwsp-daemon.service", + "../pwsp-daemon/assets/pwsp-daemon.service", "usr/lib/systemd/user/pwsp-daemon.service", "644", ], diff --git a/pwsp-gui/assets/pwsp-daemon.service b/pwsp-gui/assets/pwsp-daemon.service deleted file mode 100644 index 8a95b8c..0000000 --- a/pwsp-gui/assets/pwsp-daemon.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Pipewire Soundpad Daemon -After=pipewire.service - -[Service] -ExecStart=/usr/bin/pwsp-daemon -Restart=no -RuntimeDirectory=pwsp - -[Install] -WantedBy=default.target \ No newline at end of file diff --git a/pwsp-gui/maintainer-scripts/postinst b/pwsp-gui/maintainer-scripts/postinst new file mode 100755 index 0000000..3b67bfb --- /dev/null +++ b/pwsp-gui/maintainer-scripts/postinst @@ -0,0 +1,21 @@ +#!/bin/sh +set -e + +if [ "$1" = "configure" ]; then + if [ -x "/usr/bin/systemctl" ]; then + systemctl --global enable pwsp-daemon.service || true + + for uid_dir in /run/user/*; do + if [ -d "$uid_dir/systemd" ]; then + uid=$(basename "$uid_dir") + if [ "$uid" != "0" ]; then + username=$(id -un "$uid" 2>/dev/null) || continue + su -s /bin/sh -c "XDG_RUNTIME_DIR=$uid_dir systemctl --user daemon-reload" "$username" || true + su -s /bin/sh -c "XDG_RUNTIME_DIR=$uid_dir systemctl --user try-restart pwsp-daemon.service" "$username" || true + fi + fi + done + fi +fi + +exit 0 diff --git a/pwsp-gui/maintainer-scripts/postrm b/pwsp-gui/maintainer-scripts/postrm new file mode 100755 index 0000000..a748fdc --- /dev/null +++ b/pwsp-gui/maintainer-scripts/postrm @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +if [ "$1" = "remove" ]; then + if [ -x "/usr/bin/systemctl" ]; then + for uid_dir in /run/user/*; do + if [ -d "$uid_dir/systemd" ]; then + uid=$(basename "$uid_dir") + if [ "$uid" != "0" ]; then + username=$(id -un "$uid" 2>/dev/null) || continue + su -s /bin/sh -c "XDG_RUNTIME_DIR=$uid_dir systemctl --user daemon-reload" "$username" || true + fi + fi + done + fi +fi + +exit 0 diff --git a/pwsp-gui/maintainer-scripts/prerm b/pwsp-gui/maintainer-scripts/prerm new file mode 100755 index 0000000..a512615 --- /dev/null +++ b/pwsp-gui/maintainer-scripts/prerm @@ -0,0 +1,20 @@ +#!/bin/sh +set -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + if [ -x "/usr/bin/systemctl" ]; then + systemctl --global disable pwsp-daemon.service || true + + for uid_dir in /run/user/*; do + if [ -d "$uid_dir/systemd" ]; then + uid=$(basename "$uid_dir") + if [ "$uid" != "0" ]; then + username=$(id -un "$uid" 2>/dev/null) || continue + su -s /bin/sh -c "XDG_RUNTIME_DIR=$uid_dir systemctl --user stop pwsp-daemon.service" "$username" || true + fi + fi + done + fi +fi + +exit 0