스냅 애플리케이션에 환경 변수를 설정하거나 전달합니다(tcp를 통해 스냅 애플리케이션 내에서 다른 컴퓨터의 pulseaudio 서버로).

스냅 애플리케이션에 환경 변수를 설정하거나 전달합니다(tcp를 통해 스냅 애플리케이션 내에서 다른 컴퓨터의 pulseaudio 서버로).

친애하는 고급 사용자 및 개발자 여러분,

스냅샷 작동 방식을 조정하는 데 몇 가지 문제가 있습니다. 저는 항상 GNU/Linux 배포판이 제공하는 모든 가능성을 받아들였습니다. 그러나 스냅 패키지가 이러한 가능성을 빼앗아 가는 것 같습니다. 물론 의도한 것은 아니었습니다. 하지만...글쎄, 변경해야 할 사항은 변경할 수 없습니다...시스템 구성 파일과 애플리케이션 구성 파일, 환경 변수.

내 배포판: 우분투 데스크탑 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

관련 정보