スナップアプリケーションに環境変数を設定または渡します(tcpを介してスナップアプリケーション内から別のコンピュータのpulseaudioサーバーに)。

スナップアプリケーションに環境変数を設定または渡します(tcpを介してスナップアプリケーション内から別のコンピュータのpulseaudioサーバーに)。

親愛なる上級ユーザーと開発者、

スナップショットのしくみを調整するにはいくつかの問題があります。私はいつもGNU / Linuxディストリビューションが提供するすべての可能性を受け入れました。しかし、スナップパッケージがこの可能性を奪っているようです。もちろん意図したものではありませんでした。しかし……もちろん、変更する必要はありません…システム構成ファイルとアプリケーション構成ファイル、環境変数。

マイディストリビューション:Ubuntuデスクトップ20.04 amd64

私がしたいこと:

パルスオーディオサポート(スナップ)プログラムをインストールし、環境変数PULSE_SERVERで設定した値に応じて、特定のパルスオーディオサーバーまたはソケットを使用してプログラムを起動します。私は常にpulseaudioのローカルインスタンスまたは他のコンピュータで実行されているpulseaudioインスタンスを使用することを選択できるようにしたいと思います。

環境変数をコマンドに正常に渡す方法や、通常はスナップパッケージの環境変数を設定する方法がありません。 (また、スナップインターフェイス「オーディオ再生」、「オーディオ録音」、および廃止された「pulseaudio」を調整する実際のドキュメントや方法が見つかりません... )

したがって、snap でインストールされたプログラムは、ユーザーが UID 1000 の起動で作成した場合、デフォルトの構成 (例: /run/user/1000/pulse/native) を使用して、pulseaudio によって生成されたホストの pulseaudio ソケットにバインドされているように見えます。

解決策を見つけるのに役立ちますか? (PULSE_SERVER変数を正常に設定/配信することが望ましいが、他の解決策も興味深い)

事前にありがとう

答え1

これはちょっとしたハッキン​​グですが、Chromeを例にしてenv変数をsnapに渡す方法は次のとおりです。

echo "PULSE_SERVER=$PULSE_SERVER; chromium.launcher" | snap run --shell chromium

ホストに設定された $PULSE_SERVER を取得し、スナップ内のシェルにパイプし、基本プロセスを開始するために使用されます。

答え2

常にそうであるかどうかはわかりませんが、現在(私の場合はUbuntu 22.04)カスタム環境変数をスナップアプリケーションに渡すことは他のアプリケーションと同じです。

#Only to show that it is a snap version of firefox
$ which firefox
/snap/bin/firefox

#Passing a variable
$ MOZ_ENABLE_WAYLAND=1 firefox

私の場合、私の目で動作していることがわかります(FirefoxはXWaylandではもはやぼやけません)。ただし、確認するための「科学的」方法が必要な場合:

$ JUST_A_TEST=hello snap run --shell firefox
#The next comman is inside a snap shell
$ env | grep hello
JUST_A_TEST=hello
#To exit snap shell
$ exit

関連情報