【问题标题】:KDE service menu issuesKDE 服务菜单问题
【发布时间】:2017-09-20 13:21:32
【问题描述】:

我在 /home/user/.local/share/applications 中有这个 .desktop 文件

[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 文件并将其复制到 /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 起作用?

【问题讨论】:

    标签: linux bash kde


    【解决方案1】:

    .desktop 文件处理器似乎没有评估环境变量,网上发布的类似问题证明了这一点。如果有的话,看起来 KDE 理解 /home/user/.local/share/applications 中的环境变量是一个错误。

    有关一种可能的解决方法,请参阅this StackOverflow post。就个人而言,我创建了具有以下条目的服务菜单,它确实按预期工作(注意引号的位置):

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

    如果我在Exec 中使用绝对路径来编写脚本,它确实会显示一些可能被误认为“后台窗口”的内容。进程名称出现在任务栏上(通常只显示窗口)并迅速消失。就我而言,那是因为我的测试脚本里面只有一个命令,并且几乎是瞬间完成的。您希望您的程序运行多长时间?您是否确认它没有成功完成?

    如果您不想使用sh 解决方法并且不想在.desktop 文件中使用绝对路径,请考虑将您的脚本放在$PATH 中的目录之一中,.desktop 文件处理器将寻找它。您可以使用以下命令从等离子的角度查看该变量的值:

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

    【讨论】:

    • 您好 Miroslaw,感谢您的帮助。不幸的是,您的解决方法对我不起作用。我还尝试将脚本复制到 /usr/local/bin ,但这也不起作用。我现在有点放弃服务菜单,改用“打开方式”。 “打开方式”的好处是它适用于其他应用程序,例如图片查看器,而服务菜单仅适用于海豚
    猜你喜欢
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多