<div dir="ltr"><div>Hi!<br><br></div>I think that it is time to update this specification. Here is list with changes that I propose.<br><br>1. Specification.<br>=================<br><br>1.1. Currently we have three components - Watcher, Host and Item. We should rename specification from 'Status Notifier Item' to 'Status Notifier'.<br><br>1.2. Current implementations use org.kde.* for dbus names. While this specification is not used by all desktop environments it is not used only by kde either. We should start using org.freedesktop.* for dbus names.<br><br>1.3. We should start to use versioned dbus interface names.<br clear="all"><div><div><br>2. Watcher.<br>===========<br><br>2.1. Make method, property and signal names shorter by removing 'StatusNotifier' part from names.<br><br>2.2. RegisterHost method, change arguments to:<br>- bus_name (s) - the bus name of Status Notifier Host or empty to use sender;<br>- object_path (o) - the object path of Status Notifier Host.<br><br>2.3. RegisterItem method, change arguments to:<br>- bus_name (s) - the bus name of Status Notifier Item or empty to use sender;<br>- object_path (o) - the object path of Status Notifier Item.<br><br>2.4. RegisteredItems property, change type from 'as' to 'a(so)' - bus name and object path for each registered item.<br><br>2.5. ProtocolVersion property, remove it.<br><br>2.6. Rename 'StatusNotifierHostRegistered' signal to 'HostsChanged'. Should be emitted when new host is registered or existing disappears.<br><br>2.7. ItemRegistered signal, change arguments to:<br>- bus_name (s) - the bus name of Status Notifier Item that was registered;<br>- object_path (o) - the object path of Status Notifier Item that was registered;<br><br>2.8. ItemUnregistered signal, change arguments to:<br>- bus_name (s) - the bus name of Status Notifier Item that was unregistered;<br>- object_path (o) - the object path of Status Notifier Item that was unregistered;<br><br>Watcher should use:<br>- org.freedesktop.StatusNotifier1.Watcher as bus name and interface name;<br>- /org/freedesktop/StatusNotifier1/Watcher as object path.<br><br>Improvements over existing interface:<br>- removed unused property;<br>- ability to create/register multiple items/hosts from one connection (currently it is not possible because there can not be two objects with same path);<br>- hosts and items are not required to create separate bus name.<br><br>Updated dbus interface is added as attachment.<br><br>3. Host.<br>========<br><br>Host should use:<br>- org.freedesktop.StatusNotifier1.Host as interface name.<br><br>Optionally (not required, but similar to current specification):<br>- org.freedesktop.StatusNotifier1.Host-{pid}-{id} as bus name where {pid} is process id and {id} is unique identifier starting with 1 (was 'org.kde.StatusNotifierHost-{pid}');<br>- /org/freedesktop/StatusNotifier1/Host{id} as object path where {id} is unique identifier starting with 1 (was '/StatusNotifierHost').<br><br>4. Item.<br>========<br><br>4.1. Drop all New* signals and use PropertiesChanged to get new/changed data.<br><br>4.2. New property - IconThemePath (type=s). An additional path to add to the theme search path to find the icons. It looks like this is used by current implementations.<br><br>4.3. New property - ItemIsMenu (type=b). I have seen this in interface files, does anyone knows if this is really used? If not then it should not be included in updated spec.<br><br>4.4. New property - Menu (type=o). Object path to dbus menu (com.canonical.dbusmenu interface). This is used at least by ubuntu.<br><br></div><div>Maybe type could be changed from o to s? So if there is no menu it could be set to empty string instead of non-existent path?</div><div><br>4.5. Specification should mention which properties are required and which ones are optional.<br><br>Item should use:<br>- org.freedesktop.StatusNotifier1.Item as interface name.<br><br>Optionally (not required, but similar to current specification):<br>- org.freedesktop.StatusNotifier1.Item-{pid}-{id} as bus name where {pid} is process id and {id} is unique identifier starting with 1 (was 'org.kde.StatusNotifierItem-{pid}-{id}');<br>- /org/freedesktop/StatusNotifier1/Item{id} as object path where {id} is unique identifier starting with 1 (was '/StatusNotifierItem').<br><br>Updated dbus interface is added as attachment.<br><br>-- <br><div class="gmail_signature"><div dir="ltr">Alberts Muktupāvels<br></div></div>
</div></div></div>