如何在不使用 libappindicator 的情况下在 Ubuntu 14+ 中创建应用程序指示器图标?

如何在不使用 libappindicator 的情况下在 Ubuntu 14+ 中创建应用程序指示器图标?

我正在尝试用 PHP 和 wxWidgets 编写简单的桌面实用程序应用程序php 的经过大量努力(以及 20 多分钟的编译时间)生成 PHPwxwidgets.so模块后,我想从一个简单的状态指示器开始。我在 Ubuntu 14.04 LTS 上运行 PHP 5.5.9。

我问一个问题堆栈溢出,并在等待答案时添加了额外的研究。事实证明,在最近的 Ubuntu 版本中,这并不简单,因为(a)11.x 之后的版本运营白名单以允许普通wxTaskBarIcon图标出现,并且 (b) 由于 13.10wxTaskBarIcon图标根本不出现,而 Ubuntu 需要特殊处理。

我发现有一个黑客将白名单恢复到 14.x,但这需要修改受信任的存储库,无论如何,我宁愿正确地执行此操作。

我看到询问 Ubuntu有疑问如何找到实时状态图标的 PID, 和如何将菜单项添加到会话(“cog”)小程序。它们都利用了命令行中的 DBus 调用。有趣的是,有一个关于这正是我想要实现的但答案依赖于libappindicator,而 PHP 没有可用的绑定。

因此,我认为一定有我可以从控制台(以及 PHP 应用程序)进行的 DBus 调用,但有关这方面的文档很少甚至没有。我尝试在 GitHub 上浏览各种源代码,但除了搜索几个freedesktop.org命令字符串外,我真的不知道我在寻找什么。我也用官方文档,除非我遗漏了一些非常明显的东西。

因此,我的问题是:可以使用命令行上的 DBus 调用创建应用程序指示器吗?如果可以,该怎么做?我想使用图标、文本、菜单和系统指示器可以做的任何事。或者,如果 DBus 不是解决问题的方法,libappindicator考虑到我没有为我首选的语言绑定该库,我该怎么做?


编辑:我在 Stack Overflow 上添加了对我的问题的自我回答,表明目前最好的解决方案是在 Python 中构建一个单独的指示器应用程序,并在该应用程序和 wxPHP 应用程序之间开辟一个通信渠道。

但是,我将保持这个问题开放,因为它略有不同 - 如何使用 DBus 从 PHP 实现相同的目的。(我希望我可以弄清楚如何在 PHP 中发送 DBus 消息,但格式是我需要的)。

相关内容