![스냅 애플리케이션에 환경 변수를 설정하거나 전달합니다(tcp를 통해 스냅 애플리케이션 내에서 다른 컴퓨터의 pulseaudio 서버로).](https://linux55.com/image/191432/%EC%8A%A4%EB%83%85%20%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%97%90%20%ED%99%98%EA%B2%BD%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%84%A4%EC%A0%95%ED%95%98%EA%B1%B0%EB%82%98%20%EC%A0%84%EB%8B%AC%ED%95%A9%EB%8B%88%EB%8B%A4(tcp%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EC%8A%A4%EB%83%85%20%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%20%EB%82%B4%EC%97%90%EC%84%9C%20%EB%8B%A4%EB%A5%B8%20%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98%20pulseaudio%20%EC%84%9C%EB%B2%84%EB%A1%9C)..png)
친애하는 고급 사용자 및 개발자 여러분,
스냅샷 작동 방식을 조정하는 데 몇 가지 문제가 있습니다. 저는 항상 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