.desktop 파일에서 변수 설정


75

.desktop 파일에서 환경 변수를 설정하는 방법이 있습니까? 사용자 정의 gtk 스타일로 응용 프로그램 (Eclipse)을 실행하려고하므로 기본적으로 .desktop 파일을 실행하여 다음 결과를 얻고 싶습니다.

GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

나는 그것을 bash 스크립트에 넣고 .desktop 파일에서 실행하려고 시도했지만 Unity 런처와 잘 통합되지 않습니다.

답변:


111

.desktop파일 을 편집하여 응용 프로그램에 환경 변수를 추가 할 수 있습니다 . 예를 들어, 환경 변수로 "digiKam"을 실행 APPMENU_DISPLAY_BOTH=1하려면 해당 digikam.desktop파일을 찾고 env명령을 통해 변수 설정을 "Exec"항목에 추가하십시오 .

Exec=env APPMENU_DISPLAY_BOTH=1 digikam -caption "%c" %i

귀하의 경우 :

Exec=env GTK2_RC_FILES=gtkrc.custom /path/to/eclipse

1
사용자를 포함하는 env 변수를 어떻게 설정할 수 $HOME있습니까? 확장 Exec=env MYVAR="$HOME/foo"되거나 Exec=env MYVAR="~/foo"확장 되지 도 않습니다 . 대신 문자 그대로 전달됩니다.
— 400 고양이


9

.desktop파일 을 수정하는 대안 은 예를 들어 래퍼 스크립트를 넣는 것 ~/bin입니다.

$ cat ~/bin/eclipse
#!/bin/sh
export GTK2_RC_FILES=gtkrc.custom
exec /usr/bin/eclipse "$@"

이렇게하면 다음에 응용 프로그램 패키지가 업데이트 될 때 사용자 지정 내용을 덮어 쓰지 않습니다.

편집하다:

왜 이것이 작동하는지에 대한 힌트는 PATH변수에 무엇이 포함되어 있는지 확인하면 알 수 있습니다. 나의 경우에는:

$ echo $PATH
/home/gunnar/bin:/home/gunnar/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

~/bin는 목록에서 첫 번째 폴더이므로 이전을 /usr/bin봅니다.


.desktop 파일을 로컬 설정에 넣으면 어쨌든 재정의되지 않습니다.
— Auspex

@Auspex : 맞습니다. 그러나 동시에 로컬 복사본을 사용하는 경우 패키지 소유 .desktop파일을 업데이트해도 이점이 없습니다 .
— Gunnar Hjalmarsson

래퍼를 넣는 것이 어떻게 ~/bin도움이 되는지 모르겠습니다 . 패키지 소유 .desktop파일은 해당 래퍼를 볼 수 없습니다! 또한 사용해야합니다update-alternatives
— Auspex

@Auspex : .desktop파일이 래퍼를 "볼"필요는 없습니다. 그냥 실행 되고 래퍼 eclipse로 인해 PATH대신 선택됩니다 /usr/bin/eclipse. 명확히하기 위해 답을 편집했습니다.
— Gunnar Hjalmarsson

예. .desktop 파일 은 래퍼를 볼 필요가 있습니다. 평균 .desktop 파일이 전체 경로를 지정한다고 생각했지만 추가 검사에서 대부분의 시스템 파일은 명령 이름 만 지정한다고 생각하므로 래퍼 가 표시 됩니다 . 그러나 내가 가지고있는 유일한 Eclipse 데스크탑 파일은 질문에 지정된 형식으로 Eclipse 바이너리에 대한 전체 경로를 제공합니다.
— Auspex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.