是否有可能让indicator-appmenu忽略特定的应用程序?

新的Maverick中的indicator-appmenu破坏了LyX菜单:应用程序菜单既不显示在应用程序窗口中,也不显示在小程序中。 (请参见Bug report。)
在修复此错误的同时,有没有一种方法可以对小程序进行例外处理,以便忽略LyX并且仍然可以使用小程序进行其他操作呢?类似于Maximus的例外处理方式。

目前的答案在Ubuntu 12.10上都不起作用。如果有人能为此出重赏,我将不胜感激。我曾经出了100+的重赏,却没有得到任何回应。 - Flimm
对我来说(在12.10上)有效- 我知道这并没有太大帮助,但可能能解释为什么没有人回答你,因为这可能是你的系统独有的问题。可以尝试将其报告为一个错误。 - sup
5个回答

运行一个应用程序
要在应用程序内部而不是面板中启动一个应用程序(例如:gcalctool),请在终端中运行以下命令:
UBUNTU_MENUPROXY= gcalctool

要同时在应用程序和面板中启动具有菜单的应用程序,请运行以下命令:
APPMENU_DISPLAY_BOTH=1 gcalctool

如果不使用终端,您可以使用Alt + F2快捷键启动运行对话框,在其中输入以下命令:
env UBUNTU_MENUPROXY= gcalctool

或者
env UBUNTU_DISPLAY_BOTH=1 gcalctool

在Ubuntu 10.10中编辑应用启动器

为了方便始终使用相同的应用程序菜单设置启动应用程序,您可以编辑菜单、gnome-panel和桌面上的应用程序启动器:

  • Gnome-panel和桌面:只需右键单击启动器,选择“属性”,并在“命令”字段的值之前添加env UBUNTU_MENUPROXY=env UBUNTU_DISPLAY_BOTH=1


    (来源:xrmb2.net)

  • 菜单:右键单击菜单,选择“编辑菜单”。在新窗口中,找到要编辑的启动器,然后点击右侧的“属性”按钮。同样地,前置变量就像上面提到的一样(不要忘记 'env'),点击两次“关闭”即可完成。

Ubuntu 11.04 中基于 Compiz 的 Unity 修改启动器的方法
脏方法:在 /usr/share/applications 目录中更改启动器的 .desktop 文件:
例如,运行
gksudo gedit /usr/share/applications/gcalctool.desktop 现在编辑 Exec= 行,将其包含以上两个变量之一,例如:
Exec=env UBUNTU_MENUPROXY= gcalctool
保存文件,然后从 Unity 的启动器栏中启动 gcalctool 应用程序时,应该带有应用程序内的菜单。
这种方法的缺点是:它会更改所有用户的启动器,并可能在系统更新时被还原。
更好的方法:
如果已经添加了,取消固定到启动器栏的启动器。
将相关的 .desktop 文件复制到您的主目录中:
cp /usr/share/applications/gcalctool.desktop ~/.local/share/applications
像上面的方法一样,编辑 Exec= 行,将其包含以上两个变量之一:
Exec=env UBUNTU_MENUPROXY= gcalctool
使文件可执行:
chmod +x ~/.local/share/applications/gcalctools.desktop 在该文件夹中启动 Nautilus 并双击 .desktop 文件(示例中应该只显示 "Calculator"):
nautilus ~/.local/share/applications
现在您应该在启动器栏中看到启动器图标 - 通过快速列表固定它,完成。
注意:要使上述方法适用于KDE应用程序,请将UBUNTU_MENUPROXY=替换为QT_X11_NO_NATIVE_MENUBAR=1

2这个有效,谢谢。我还学到了QT_X11_NO_NATIVE_MENUBAR=1的方法。 - topyli
有趣的是,你使用ALT+F2这个在Natty with Unity中不可用的快捷键。在Natty中我们没有办法以图形化的方式来维护launcher的项目,所以你_必须_使用这个"脏方法"。 - popey
1@popey:在我的Natty上的compizconfig中,Ubuntu Unity插件的“运行命令”默认值是Alt-F2。这对你不起作用吗?如果是这样,请尝试禁用Gnome兼容性中的快捷键。 - idbrii
您可以在11.04中执行“编辑菜单”操作。在Dash中搜索菜单,选择“主菜单”,或使用Alt-F2运行“alacarte”。 - idbrii
这个方法在Ubuntu 12.10还有效吗? - Flimm
@flimm:是的,它有效。 - sup

应该是这样的:
#!/bin/sh
export APPMENU_DISPLAY_BOTH=1
exec lyx

摆脱那个持续存在的外壳进程。

另一个解决方法是启动LyX时不会出现双重菜单的情况。
UBUNTU_MENUPROXY= lyx

取消设置UBUNTU_MENUPROXY环境变量将完全忽略应用菜单。

@waluylo,我的(也可能是Robert的)lyx包装器看起来就像这样简单
#!/bin/sh
export APPMENU_DISPLAY_BOTH=1
lyx

我创建了一个名为"lyx_unity"的shell脚本,它在执行lyx之前先执行APPMENU_DISPLAY_BOTH=1,并编辑了菜单项,使其执行"lyx_unity"而不是"lyx"。

剧本是什么样子的?我不熟悉。你能贴出来吗? - waluyo