2010-08-10 2 views
12

내 Linux 응용 프로그램 중 하나에 대해 응용 프로그램 바이너리, launcher.sh 스크립트 (LD_LIBRARY_PATH 용) 및 .desktop 파일 (모두 같은 폴더에 있음)이 있습니다.Linux 데스크탑 항목 파일에 대해 RELATIVE 경로가있는 아이콘을 어떻게 지정합니까?

아이콘의 절대 경로가 아닌 상대 경로를 사용하고 싶습니다. 내가 해봤

:

Icon=app.svg 
Icon=./app.svg 
Icon=$PWD/app.svg 
Icon=$(dirname %k)/app.svg 

그러나이 작품의 없음 (단 Icon=/path/to/app.svg). 상대 경로를 지정할 수없고 해결 방법을 사용해야하는 경우 launcher.sh 스크립트를 실행할 때마다 .desktop 파일에서 아이콘 경로를 다시 생성 할 수 있다고 생각했습니다.

어떻게 할 수 있습니까? sed 또는 Icon=([valid path chars]+)\n과 같은 유사 정규식을 사용하는 다른 대체 유틸리티를 사용 하시겠습니까?

답변

13

더 많은 조사를 한 후에는 데스크톱 항목 파일의 아이콘에 상대 경로를 지정할 수있는 것처럼 보이지 않습니다.

내가 사용하는 해결 방법은 내 launcher.sh 스크립트의 끝에 다음 코드를 추가했다 :이 아이콘 런처 스크립트가 실행될 때마다의 경로를 업데이트합니다

mv myapp.desktop myapp.desktop-bak 
sed -e "s,Icon=.*,Icon=$PWD/app.svg,g" myapp.desktop-bak > myapp.desktop 
rm myapp.desktop-bak 

하고, 이후 .desktop 파일은 실행 프로그램 스크립트를 가리키며 .desktop 파일을 클릭하면 효과적으로 아이콘이 업데이트됩니다.

cat 또는 위의 코드를 줄이기 위해 -i 옵션을 사용할 수 있지만 사용 된 솔루션이 더 안정적이라는 것을 알고 있습니다. 누구든지 그것에 대한 자세한 정보가 있으면 의견을 게시하십시오.

+0

고마워요 ... 그래도 여전히, 그것은 어색한 사양입니다. –

+0

물론 ... 상대 경로 지원 (분명히)을 추가하는 것을 아무도 생각할 수 없다. –

+0

글쎄요, 나는 보안 문제가 있다고 다른 곳에서 읽었습니다. 데스크탑 파일을 옮긴 다음 실수로 생각한 것과 다른 실행 파일을 열면 어떻게 될까요? 그러나 아이콘을 지정하는 또 다른 방법은 좋았을 것입니다. –

관련 문제