如何将应用程序添加到 GNOME 窗口管理器?

mar*_*art 75 gnome3

GNOME 机载文档仅涵盖任何人都可以轻松猜到的内容。我有一个只能从命令行启动的应用程序。并不是说我介意使用终端,而是...

无论如何,我如何将命令(最好是一个漂亮的标志)添加到 GNOME WM?

Tho*_*man 117

GNOME和其他与freedesktop.org兼容的桌面环境中,例如KDEUnity,应用程序通过桌面条目添加到桌面的菜单或桌面外壳中,桌面条目在带有.desktop扩展名的文本文件中定义(称为桌面文件)。桌面环境根据从可用桌面条目中提取的组合信息为用户构建菜单。

桌面文件可以在以下两个位置之一创建:

  • /usr/share/applications/ 用于系统中每个用户可用的桌面条目
  • ~/.local/share/applications/ 对于单个用户可用的桌面条目

您可能需要重新启动 GNOME 才能使新添加的应用程序工作。

按照惯例,桌面文件的名称中不应包含空格或国际字符。

每个桌面文件被分成多个,每个组以方括号 ( []) 中的组标题开始。每个部分包含许多对,由等号 ( =)分隔。

以下是桌面文件的示例:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Application Name
Comment=Application description
Icon=/path/to/icon.xpm
Exec=/path/to/application/executable
Terminal=false
Categories=Tags;Describing;Application
Run Code Online (Sandbox Code Playgroud)

解释

  • [Desktop Entry]Desktop Entry组报头标识文件作为桌面项
  • Type 条目的类型,有效值为ApplicationLinkDirectory
  • Encoding桌面文件 的字符编码
  • Name 在菜单或启动器中可见的应用程序名称
  • Comment 工具提示中使用的应用程序的描述
  • Icon 在菜单或启动器中为应用程序显示的图标
  • Exec 用于从 shell 启动应用程序的命令。
  • Terminal 应用程序是否应在终端中运行,有效值为truefalse
  • Categories 分号 ( ;) 分隔的菜单类别列表,应在其中显示条目

Exec键中的命令行参数可以用以下变量表示:

  • %f 单个文件名。
  • %F 多个文件名。
  • %u 单个网址。
  • %U 多个网址。
  • %d 单个目录。与 结合使用%f以定位文件。
  • %D 多个目录。与 结合使用%F以定位文件。
  • %n 没有路径的单个文件名。
  • %N 没有路径的多个文件名。
  • %k 桌面文件位置的 URI 或本地文件名。
  • %v 设备条目的名称。

请注意,~或环境变量$HOME在桌面文件中未扩展,因此引用的任何可执行文件必须位于$PATH或 通过其绝对路径引用。

GNOME 开发中心提供了完整的桌面入门规范

启动脚本

如果要启动的应用程序需要在调用之前完成某些步骤,您可以创建一个启动应用程序的 shell 脚本,并将桌面条目指向 shell 脚本。假设应用程序需要从某个当前工作目录运行。在合适的位置创建启动脚本(~/bin/例如)。该脚本可能类似于以下内容:

#!/bin/bash
pushd "/path/to/application/directory"
./application "$@"
popd
Run Code Online (Sandbox Code Playgroud)

设置脚本的可执行位:

$ chmod +x ~/bin/launch-application
Run Code Online (Sandbox Code Playgroud)

然后Exec将桌面条目中的键指向启动脚本:

Exec=/home/user/bin/launch-application
Run Code Online (Sandbox Code Playgroud)

  • @mart `<path>/.FTL` 会指向一个名为 `.FTL` 的隐藏文件,它与 `./FTL` 不同,后者指向当前目录中名为 `FTL` 的文件。您可以尝试在终端中通过 `/full/path/path/to/FTL` 启动 `FTL`,以查看是否有任何有意义的错误输出。例如,如果可执行文件在当前工作目录中搜索库,您可能必须执行一个启动程序脚本,该脚本执行类似于 `pushd <path>; ./FTL; popd` 并将桌面文件中的 `Exec` 说明符指向启动程序脚本。 (2认同)

Dud*_*Boy 17

托马斯·尼曼 (Thomas Nyman) 的回答非常好。

Gnome 带有 gui 工具,可gnome-desktop-item-edit协助创建 *.desktop 文件。我们需要从命令行使用它,或者为它创建一个桌面文件。

制作 Gnome 应用程序的说明 gnome-desktop-item-edit

  1. 打开终端窗口并输入以下命令:

    gnome-desktop-item-edit --create-new /home/[your user name]/.local/share/applications
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在打开的窗口中填写以下内容:

侏儒桌面项目编辑

Name: Gnome Applicaiton

Command: gnome-desktop-item-edit --create-new /home/[your user name]/.local/share/applications

单击该图标可选择不同的图标。

  1. 单击“确定”关闭窗口

  2. 关闭终端窗口

测试新生成 Gnome Application

  1. 打开破折号
  2. 类型应用
  3. 你应该看到 Gnome Application之前输入的
  4. 选择它
  5. 创建另一个应用程序

要为所有用户创建,请使用:

sudo gnome-desktop-item-edit --create-new /usr/share/applications
Run Code Online (Sandbox Code Playgroud)

如果 debian/ubuntu 上缺少该命令,请尝试:

sudo apt-get install gnome-panel 
Run Code Online (Sandbox Code Playgroud)

  • 该命令在 Ubuntu 19.10 中不可用。 (4认同)
  • 似乎该命令已被删除(自3.32起?) https://askubuntu.com/q/1184733/ https://gitlab.gnome.org/GNOME/gnome-panel/commit/758b548aa9d2b920b6e91664b0de9c414b65f2e9 (3认同)
  • 这真的很好用,谢谢。有没有办法改变新应用程序出现在哪个菜单中?我的出现在应用程序->其他 (2认同)
  • 该命令在 CentOS 8 中也不可用,是否已被弃用?或者有没有办法以某种方式安装这个包? (2认同)

小智 7

图形化解决方案是安装 MenuLibre

它可用于 Ubuntu 风格的发行版,通过

apt install menulibre
Run Code Online (Sandbox Code Playgroud)

或者你可以从源安装它

它允许按 Gnome 类别对应用程序进行分类,并且与 Chrome 应用程序配合良好。

自由菜单