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


50

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

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


如果单击鼠标右键,会出现“编辑菜单”项吗?
slm

不,根本没有右键菜单。
2013年

1
GNOME是一个桌面环境,而不是窗口管理器。GNOME 2.x中的窗口管理器称为Metacity,GNOME3使用称为Mutter合成窗口管理器
Thomas Nyman

Answers:


89

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

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

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

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

按照约定,桌面文件的名称中不得包含空格或国际字符。

每个桌面文件都分成几,每组都从方括号([])中的组标题开始。每个部分均包含多个以等号()分隔的keyvalue=

以下是桌面文件的示例:

[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

说明

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

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

  • %f 单个文件名。
  • %F 多个文件名。
  • %u 一个URL。
  • %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

设置脚本的可执行位:

$ chmod +x ~/bin/launch-application

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

Exec=/home/user/bin/launch-application

我这样做了,我可以在应用程序下看到该图标,但是当我单击该应用程序无法启动时,光标只会变为加载符号几秒钟。没有错误讯息。
2013年

@mart您能告诉我们您要为哪个应用程序添加启动器吗?
Thomas Nyman

1
FTL-我在网络上某处购买的独立游戏。从控制台开始工作。
2013年

1
@mart <path>/.FTL将指向一个名为的隐藏文件.FTL,该文件与./FTL指向一个FTL在当前目录中名为的文件不同。您可以尝试在终端中FTL通过启动/full/path/path/to/FTL,以查看是否获得任何有意义的错误输出。例如,如果可执行文件在当前工作目录中搜索库,则可能必须执行启动器脚本,该脚本执行一些操作,并将桌面文件中pushd <path>; ./FTL; popdExec说明符指向启动器脚本。
Thomas Nyman

1
更正:它从目录内部有效
mart

12

Thomas Nyman的回答很好。

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

从中进行Gnome应用程序的说明 gnome-desktop-item-edit

  1. 打开终端窗口,然后键入以下命令:

    gnome-desktop-item-edit-创建新的/ home / [您的用户名] /。local / share / applications

  2. 在打开的窗口中填写以下内容: 在此处输入图片说明

    Name: Gnome Applicaiton

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

    单击该图标以选择其他图标。

  3. 单击确定关闭窗口

  4. 关闭终端窗口

测试新生成的 Gnome Application

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

真的很好用,谢谢。有什么方法可以更改新应用程序显示在哪个菜单中?我的出现在应用程序->其他
SteveP

0

托马斯·尼曼(Thomas Nyman)和杜迪·博伊(Dudi Boy)的先前回答非常好且详尽。我发布此消息是因为在其他任何帖子中都没有找到我的疑问的答案,因此我不得不搜索git问题。

在执行了类似Thomas Nyman建议的步骤之后,我已经能够使我的程序的图标出现在“应用程序菜单”中。这里的问题是我使用Dash停靠在侧边栏上,而无法像其他图标一样将图标固定为收藏夹。搜索后,我发现您需要StartupWMClass=ApplicationName.desktop文件中添加该行。之后,通过右键单击Dash to Dock中的图标,将显示添加到收藏夹的选项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.