在Ubuntu中所看到的systray icon目前有两种,一种就是旧的基于freedesktop system tray spcification的。而新的则是采用dbus实现的,更加简单和方便。不过目前好像gnome3和Ubuntu 的 unity有了不同的标准,具体还未看。如果有详细需求的同学可以仔细查一下。
以下仅是前阵子简单看了下新的Status Notify Specification后的总结。
用来取代Freedesktop System tray specification.
通过 d-bus进行进程间通信,这样可以使gtk,qt的程序可以互相通信。
StatusNotifierItem: 要显示图标的应用程序
StatusNotifierWatcher:所有StatusNotifierItem要注册到Watcher里
StatusNotifierHost: Host通过Watcher来得到所有Item,并将所有Item展现出来
indicator-application-service: StatusNotifierHost服务的实现
indicator-messages/session/me: StatusNotifierWatcher的实现
其中菜单采用dbusmenu spec
DBusMenu spec
用dbus来实现一个菜单,主要用于indicator