コンピュータが一時停止状態で再起動されるたびに(私は頻繁に実行します)、オーディオは少し壊れます。私のコンピュータはEasyEffects EQを使用しており、起動時にイコライザーを適用するために実行されます。しかし、コンピュータが省電力モードで再起動すると、基本的なオーディオデバイスは少し複雑になります。デフォルトはEasyEffects EQですが、オーディオは消えますただEasyEffectsはデフォルトのオーディオシンクなので
通常、デフォルト値に設定されたデバイスは汎用アナログ受信機です。この問題を解決するために、pavucontrolを使用するときにアナログ受信機をデフォルトに設定するとオーディオのみが通過します。感性知能はありません。、ただし、デフォルト値をEasyEffects EQに設定すると、、良い結果。以前はデフォルト設定でしたが、アナログ受信機をデフォルト設定に設定し、EQをデフォルト設定に設定した後にのみ機能しました。
この問題を解決するには、systemdを使用してスクリプトを作成しようとしています。 pactlを使用してアナログ受信機をデフォルト値に設定し、EQ受信機をデフォルト値に設定します。問題は、省電力モードで再起動した後にサービスを実行するという目標は、「--user」システムサービスではなく通常のシステムサービスでのみ機能することです。どうすれば解決できますか? 「ユーザー」システムサービスとして実行しようとすると機能しますが、スリープモードで再起動した後は自動的に起動しません。通常の systemd サービスとして実行すると、systemd サービスで「user」、「environment」を指定しても「sudo pactl」が動作しないため、動作しません。
停止後に実行させる他の方法はありますか?あるいは、汎用(ルート)システムサービスにその特定のコマンドを実行させることもできます。私のユーザールートアクセス権がありませんか?
一時停止から再起動した後に実行するスクリプト:
#! /usr/bin/sh
pactl set-default-sink alsa_output.pci-0000_09_00.3.analog-stereo
pactl set-default-source alsa_input.pci-0000_09_00.3.analog-stereo
sleep 20
pactl set-default-sink easyeffects_sink
pactl set-default-source easyeffects_source
答え1
/usr/lib/systemd/system-sleep
以下にスクリプト名を作成することは重要ではありませんが、rootが所有して実行権限を持っている必要があります。- Systemdは同じスクリプトを呼び出します今後そして後ろに一時停止し、最初の引数を「pre」または「post」に渡してどちらを示します。
- root として実行されるスクリプト内で、次を使用して別のユーザーとして 2 番目のスクリプトを開始することができます
sudo
(またはsu
好みに応じて).
例えば
sudo touch /usr/lib/systemd/system-sleep/custom-suspend.sh;
sudo chmod 744 /usr/lib/systemd/system-sleep/custom-suspend.sh;
スクリプト例:
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
if [[ "${1}" == "post" ]]; then
#AFTER resume
# version 1
sudo -u someuser -i /path/to/script2.sh
# alternative version
# su - someuser -c /path/to/script2.sh
fi
システム情報ソース: https://blog.christophersmart.com/2016/05/11/running-scripts-before-and-after-suspens-with-systemd/
答え2
上記の答えの助けを借りて、私はそれを動作させることができました!この記事を読んだ後、/lib/systemd/system-sleep/easy効果にスクリプトを作成しました。https://github.com/wwmm/easy効果/issues/1304そこに記載されているスクリプトを使用してください。うまくいかなかったので、このトピックで提供されている情報を使用して修正しました。以下はスクリプトです。最初はGitHubの問題から来て、最後は私のために働いた。
# easyeffects - systemd suspend/resume hook
case $1 in
pre) pkill easyeffects ;;
post) easyeffects --gapplication-service ;;
esac
#!/bin/sh
# easyeffects - systemd suspend/resume hook
case $1 in
pre) pkill easyeffects ;;
post) sudo -u USER-NAME DISPLAY=:0 XDG_RUNTIME_DIR=/run/user/1000 easyeffects --gapplication-service ;;
esac