2017-04-24 26 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