システムが再起動したら、通常のALSAを使用してalsa-restore.service
サウンドカードの状態(ボリューム、ミュートスイッチなど)を復元します。
私が興味を持っているのは、PipeWire / WirePlumberを使用して同じ目標を達成する方法です。再起動後、何らかの理由でヘッドフォン出力がミュートされ、他の設定がいくつかのデフォルト状態にリセットされました。
alsa-restore.service
PipeWire / WirePlumberが起動時に設定を上書きするため、機能しません。
WirePlumber Luaの設定は非常に複雑なので理解できません。私は助けを探しています。
答え1
通常、グラフィカルデスクトップユーザーインターフェースを持つLinuxシステムで表示される最初のプログラムは、ログイン画面を表示するためのスタートアッププログラムです。ウェルカムプログラムは、すべてのユーザーに対して定義されたユーザー単位(サービス)の開始をトリガーするsystemdユーザーコンテキストで実行されます。デバイスの1つは、WirePlumberの起動をトリガーするPipewireです。
WirePlumberが起動すると、デフォルトでは、最初に行うことの1つは次のとおりです。これは、ボリューム構成を含むユーザーごとに保存されていた以前に保存されたパスを復元することです。これが失敗すると、WirePlumberは受信機のボリュームをデフォルトの40%に設定し、ソースを100%に設定します。
したがって、ウェルカムプログラムがWirePlumberをサポートしていない場合は、ログイン画面が表示されるたびにボリュームをリセットできます。これは、WirePlumberインスタンスが実際のユーザーのログイン時に選択して以前に保存されたボリュームを上書きする変更です。
追加の状況情報がなければ、この特定の問題があなたに影響を与えるかどうかを伝えるのは難しいですが、解決するのは難しい一般的な問題のようです。私の場合、LightDMでこれが起こりました。Debian Wiki には SDDM の問題を扱う PipeWire セクションがあります。。
ウェルカムは通常、オーディオを再生する必要がないことを考慮して、私が好む解決策は、ウェルカムユーザーアカウントに対してPipeWireが実行されないように完全に無効にすることです。これを行うには、端末で次のコマンドを実行します。
- Greetingrユーザーのsystemdセッションにログインします
sudo machinectl shell lightdm@ /bin/sh
。lightdm
ウェルカムプログラムを実行しているユーザーに置き換えます。 - PipeWireとWirePlumberを停止します。
systemctl --user stop pipewire.service pipewire.socket wireplumber.service wireplumber.socket
- PipeWireとWirePlumberを無効にします。
systemctl --user disable pipewire.service pipewire.socket wireplumber.service wireplumber.socket
- 追加のセーフティネットでPipeWireとWirePlumberをブロックします。
systemctl --user mask pipewire.service pipewire.socket wireplumber.service wireplumber.socket
- すべてが順調に進むと、
systemctl --user status wireplumber.service
WirePlumberデバイスは無効で無効になっていることを報告する必要があり、手順1を繰り返しても再起動されません。この時点から、実際のユーザーログインでのみWirePlumberが起動します。