2017-04-24 18 views
0

내가 "열기"메뉴에 표시하고 완벽하게 작동 /home/user/.local/share/applicationsKDE 서비스 메뉴

[Desktop Entry] 
Categories=AudioVideo;Video; 
Comment=This Bash script compresses the specified video files (wildcards supported) to lossy h.264 format in an MP4 container 
Exec="\\$HOME/Scripts/Git/compress2mp4.sh" %F 
GenericName=Batch compress to mp4 
Icon=folder-video 
MimeType=video/x-msvideo;video/quicktime;video/mpeg;video/mp4; 
Name=Compress to mp4 
NoDisplay=false 
Path= 
StartupNotify=true 
Terminal=true 
TerminalOptions=\s--noclose 
Type=Application 
Version=1.0 
X-DBUS-ServiceName= 
X-DBUS-StartupType=none 
X-KDE-SubstituteUID=false 
X-KDE-Username= 

이의 .desktop 파일을 실행합니다.

는 그럼 난 다른의 .desktop 파일을 생성 /home/user/.local/share/kservices5/ServiceMenus

[Desktop Entry] 
Type=Service 
ServiceTypes=KonqPopupMenu/Plugin 
MimeType=video/x-msvideo;video/quicktime;video/mpeg;video/mp4; 
Icon=folder-video 
Actions=compress2mp4 
X-KDE-Priority=TopLevel 
X-KDE-StartupNotify=false 
X-KDE-Submenu=Video 


[Desktop Action compress2mp4] 
Name=Compress to mp4 
Icon=video-mp4 
Exec="$HOME/Scripts/Git/compress2mp4.sh" %F 

서비스 메뉴가 표시에 복사하지만이 오류 제공 :

Could not find the program '$HOME/Scripts/Git/compress2mp4.sh' 

$HOME\\$HOME 및로 대체하려고했지만 도움이되지 않았습니다. $HOME 대신 /home/my-user-name/...을 입력하면 백그라운드에서 창이 열리 며 곧바로 닫히므로 어떤 일이 일어나는지 파악할 수 없습니다.

.desktop 파일 Type=service이 작동하지 않는 이유는 누구입니까? 비슷한 파일 Type=application이 작동하는 이유는 무엇입니까?

답변

0

온라인 환경에 게시 된 유사한 문제로 입증 된 바와 같이 환경 변수가 .desktop 파일 프로세서에서 평가되지 않는 것 같습니다. 무엇이든, 그것은 /home/user/.local/share/applications에있는 KDE 이해 환경 변수가 버그라고 봅니다.

가능한 해결 방법은 this StackOverflow post을 참조하십시오. 개인적으로, 나는 항목을 다음과 같이 서비스 메뉴를 생성하고 (인용 부호의 위치에주의) 예상대로 일했다 : 나는 Exec에서 스크립트에 절대 경로를 사용하는 경우

Exec=sh -c "$HOME/bin/test.sh %F" 

, 그것은 착각 수있는 일을 보여 않습니다 "백그라운드 창". 프로세스 이름이 작업 표시 줄 (일반적으로 창만 표시)에 나타나고 빠르게 사라집니다. 필자의 경우에는 테스트 스크립트에 명령이 하나만 있고 실행이 거의 즉각적으로 완료 되었기 때문입니다. 얼마나 오랫동안 프로그램을 운영 할 것으로 기대하십니까? 성공적으로 완료되지 않았 음을 확인 했습니까?

당신이 sh 해결 방법을 사용하고, .desktop 파일 프로세서가 찾을 것이다 $PATH의 디렉토리 중 하나에 스크립트를 배치하는 것이 좋습니다 .desktop 파일 내부에 절대 경로를 사용하지 않으하지 않으려면

. 다음 명령을 사용하여 혈장의 관점에서 변수의 값을 볼 수 있습니다.

tr '\0' '\n' < /proc/$(pidof plasmashell)/environ 
+0

안녕 Miroslaw, 도와 줘서 고맙습니다. 불행히도 귀하의 해결 방법은 저에게 효과적이지 않았습니다. 또한 스크립트를/usr/local/bin에 복사하려고 시도했지만 그 중 하나가 작동하지 않았습니다. 저는 지금 서비스 메뉴를 포기하고 대신 "Open with"을 사용합니다. "Open with"에 대한 좋은 점은 다른 응용 프로그램에서 작동한다는 것입니다. 돌고래에서만 서비스 메뉴가 작동하는 동안 사진을 보는 사람들 – AndriusWild