2017-04-24 29 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/my-user-name/...而不是$HOME,那麼會在後臺打開一個窗口,並立即關閉,因此我無法捕捉到正在進行的操作。

有沒有人有一個想法,爲什麼一個.desktop文件Type=service不起作用,而一個非常相似的文件Type=application的作品?

回答

0

似乎環境變量不被.desktop文件處理器評估,正如在線發佈的類似問題所證明的那樣。如果有的話,看起來/home/user/.local/share/applications中的KDE理解環境變量是一個錯誤。

有一種可能的解決方法,請參見this StackOverflow post。就個人而言,我創建的服務菜單,下面的條目並沒有按預期方式工作(注意引號的位置):

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

如果我使用腳本絕對路徑Exec,但它表明的東西,可能是錯誤的爲「背景中的窗口」。進程名稱出現在任務欄上(通常只顯示窗口)並迅速消失。就我而言,那是因爲我的測試腳本里面只有一個命令,幾乎是瞬間完成執行。你期望你的程序運行多久?你是否證實它沒有成功完成?

如果你不想使用sh解決方法,並且不希望使用內部.desktop文件的絕對路徑,考慮將你的腳本在$PATH目錄之一,其中.desktop文件處理器將尋找它。您可以通過使用以下命令從等離子體角度看到該變量的值:

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

您好Miroslaw,感謝您的幫助。不幸的是你的解決方法對我無效。我也嘗試將腳本複製到/ usr/local/bin,但這也不起作用。我現在放棄了服務菜單,而是使用「Open with」。關於「Open with」的好消息,它可以在其他應用程序中使用,例如圖片瀏覽器,而服務菜單僅限於海豚 – AndriusWild