这不是如何创建 Unity 指标的副本?. 我正在寻找系统指示器而不是应用程序指示器。
背景:
从这两个问题:
我了解到有两种类型的指标:
- 系统:声音,键盘,应用程序,...(尝试
ps ax | grep indicator
:) - 应用程序:nm-applet、sysmonitor……以及几乎所有在可用的应用程序指示器中列出的应用程序?
所有应用程序指标都由指标应用程序(系统一个)处理/显示。系统指标直接由Unity面板显示。
这两个问题都是关于从登录和锁定屏幕添加/删除指标。第一个是直接设置(在处理系统指标时)。第二个是一个艰难的设置(在处理应用程序指示器时),需要修改锁定屏幕的面板服务源(统一包)和登录屏幕的统一问候源。
对于sysmonitor
,对我来说这是解决方法。最好的解决方案是实施系统指示器而不是应用程序指示器。
话题:
系统指标是否有统一的API(最好是:Python,然后是C/C++)?请参考官方文档。
大多数系统指标都是使用 Vala 编程语言编写的。任何人都可以使用 Python 或 C 为系统指标编写小型演示吗?
更新:
我发现很少有链接可以推动:
在应用指标项目页面中,他们列出了用于应用指标的 AppIndicator-0.3 API(C和Python )的链接。
他们还列出了 Indicate-0.7 API(C和Python)。这是什么?好吧,它是桌面应用程序之间的 DBus 消息传递通道。另一方面,在系统指标项目页面中,他们提到:
系统指标 API
使用 libindicate 的消息菜单。- 使用 libunity 的声音菜单。
使用 Evolution-Data-Server 的日期/时间指示器
他们似乎列出了数据 API,而不是像 Evolution-Data-Server 那样的指标开发 API。但不确定
libindicate 和libunity。有人使用过这两个库吗?尝试
apt-cache rdepends libunity9 libindicator7 libindicator3-7
查看哪个指标正在中继这些库。
Update2:这是为了让感兴趣的用户保持更新。
从我到目前为止收集的内容来看,以下是可能的解决方案的顺序:
libindicator3-7
(高,很多指标都依赖它)我在源码中找到了一些测试示例,一些我试过的虚拟指标,可以安装在
/usr/lib/indicators3/7/
,它们是共享库.so
。我可以让它们显示在登录和常规会话中,但不能显示在锁定屏幕中。不过有一些测试指标服务,好像是Unity系统的。我还没有尝试过。
libindicator7
来自与 libindicator3-7 相同的来源,来自 rdepends:
mate-indicator-applet lxpanel-indicator-applet-plugin
它似乎被用来制作面板中指示器的容器。
libunity9
(低的)暂无研究
系统指标服务
好吧,这真的比我预期的要简单。它没有特定的 API。因为它只是一个GSimpleActionGroup,并带有通过 DBus 导出的相应GMenu,所以使用放入的同名声明文件告知 Unity 它们的存在
/usr/share/unity/indicators/
。不需要任何其他图书馆。这是一个非常小的C 语言示例:
tests/indicator-test-service.c
从libindicator
源获取副本indicator-test-service.c没有变化
com.canonical.indicator.test修改为添加锁定和欢迎模式
com.canonical.indicator.test.service从文件名中删除
.in
后缀并更改可执行路径编译它
手动安装
Greeter 的配置,覆盖默认指标列表
90_unity-greeter.gschema.override
安装
测试
笔记
DBus 服务很麻烦,如果你想让用户能够随时关闭应用程序。最好改用自动启动,就像默认指标一样。
我已经在这里上传了准备好的文件:
https://github.com/sneetsher/mysystemindicator_minimum
和修改后的副本:
https://github.com/sneetsher/mysystemindicator
我在哪里为不同的模式尝试了不同的菜单。它可以快速安装和测试。
这看起来太简单了,可以很容易地移植到任何其他支持 GIO Gnome lib(包括 DBus)的语言。由于我正在寻找 python,我可能会在稍后添加它。
参考:
系统指标插件
这不是上面那个完全独立的指示器,它只是一个共享库插件,类似于
libappmenu.so
&libprintersmenu.so
(应用程序菜单和打印机指示器)。它只能在常规用户会话和问候语中显示(不在锁定屏幕上)。我不能让它在我现在的机器上工作,但我以前做过。这里的步骤,可能是我遗漏了什么。
使用上面的相同来源
libindicator
test/libdummy-indicator-*.c
是示例(面板上显示的简单可见)编译
安装
配置在欢迎屏幕上显示
90_unity-greeter.gschema.override使用没有
lib
前缀和.so
扩展名的相同名称。安装
注意: 请查看这篇文章的底部,以获得对此答案的最终决定权。
我不知道我是否真的有任何帮助,但我希望这个想法可能有用。
根据我的搜索,系统和应用程序指标的差异是明显的。考虑到这一点,我现在介绍一个有问题的概念:
在查看以下帖子时,我想到了这个想法:
https://askubuntu.com/a/234204/408654
https://askubuntu.com/a/42213/408654
Unity API 似乎主要是为与应用程序指示器一起使用而构建的,但系统和应用程序指示器可能使用类似的编程 (C lang)。但是,您之前提到这两种类型的指标由两个不同的系统处理。因此,我接着阅读了您的一个来源:
如何在登录屏幕中添加或操作应用程序/系统指示器?
主要答案涉及覆盖现有用户以获得他们所需的访问权限。它还提供了添加和删除所有现有指标的解决方案。它是指标的统一管理解决方案。是否可以覆盖默认(预先存在的)用户来运行/引入系统指示器?
针对您的这部分查询:
不幸的是,没有办法将应用程序指示器 API 用于系统指示器。因此,我的解决方案是无效的:(