.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.