The status-notifier-item package provides a haskell implementation of the status-notifier-item/app-indicator protocol.
The host server implementation provided is partial in the sense that it is headless (provides no graphical interface), and it is supposed to be used together with UI code that handles actually displaying a tray. The gtk-sni-tray provides a gtk tray widget that is implemented using the status-notifier-item library. taffybar Uses gtk-sni-tray to provide a tray widget that can be used with the many other widgets it offers.
This package provides a standalone status-notifier-watch binary that can be run on its own to handle the registration of status-notifier-items. By default, it is necessary to run this binary before starting either taffybar or gtk-sni-tray, becuase the trays provided in those binaries do not handle this responsibility. If this is not done, those binaries will fail at startup with this message:
MethodError {methodErrorName = ErrorName "org.freedesktop.DBus.Error.ServiceUnknown", methodErrorSerial = Serial 7, methodErrorSender = Just (BusName "org.freedesktop.DBus"), methodErrorDestination = Just (BusName ":1.549"), methodErrorBody = [Variant "The name org.kde.StatusNotifierWatcher was not provided by any .service files"]}
A client library is also provided for the StatusNotifierWatcher protocol
This package provides a client library for calling into status notifier items. It also provides a sample implementation of the server side of the StatusNotifierItem protocol as well as a status-notifier-item-static
binary that uses this implementation. This binary can be used to test host and watcher implementations, but it mostly just serves as an example of how to implement the protocol using this library, as it does not really do anything useful.