如何为以后台模式启动的终端应用程序创建菜单项

如何为以后台模式启动的终端应用程序创建菜单项

我想启动例如我的 ElasticSearch 实例,该实例是通过在 cinnamon 菜单中一键单击手动安装的。

我能做的是/opt/elasticsearch-1.6.2/bin/elasticsearch &应用程序在后台启动。所以我希望通过添加菜单项来实现相同的行为。但我无法在后台模式下启动它,只有前台似乎可以工作。

工作(但仅限 fg):

$ cat ~/.local/share/applications/elasticsearch-1.6.2.desktop
[Desktop Entry]
Version=1.6.2
Type=Application
Name=ElasticSearch
Icon=/opt/elasticsearch-1.6.2/bin/elasticsearch-icon.png
Exec="/opt/elasticsearch-1.6.2/bin/elasticsearch"
Comment=ElasticSearch 1.6.2
Categories=Development;Server;
Terminal=true
StartupWMClass=elasticsearch

不起作用(尝试&在最后设置一个 in Exec ):

Exec="/opt/elasticsearch-1.6.2/bin/elasticsearch &"

我错过了什么吗?

答案1

您可能想尝试:

x-terminal-emulator -e /opt/elasticsearch-1.6.2/bin/elasticsearch &

这应该使用默认终端(如果兼容,您可以指定您的首选终端),它通常支持 -e(xterm、ROXterm、XFCE4-terminal)。它对我来说适用于 alsamixer。

答案2

我不知道这是否是最充分的答案。但这最终对我有用:

  1. 创建一个 shell 脚本,通过以下方式启动 ElasticSearchnohup

    #!/usr/bin/env sh
    # -*- coding: utf-8 -*-
    nohup /opt/elasticsearch-1.6.2/bin/elasticsearch 2> /dev/null &
    
  2. 将 shell 脚本移至 /usr/local/bin (可选)并使其可执行

    chmod +x elasticsearch && mv elasticsearch /usr/local/bin/
    
  3. 配置桌面入口调用shell脚本

    [Desktop Entry]
    Version=1.6.2
    Type=Application
    Name=ElasticSearch
    Icon=/opt/elasticsearch-1.6.2/bin/elasticsearch-icon.png
    Exec=elasticsearch
    Comment=ElasticSearch 1.6.2
    Categories=Development;Server;
    Terminal=false
    StartupWMClass=elasticsearch
    

这种方法需要nohup额外的资源,但优点是外包给 shell 脚本是一种更通用的解决方案,也许也适合其他应用程序。

相关内容