<div dir="ltr"><div>Hi,<br><br></div><div>few extra changes...<br></div><div><br>1. Watcher.<br>===========<br><br></div><div>1.1. Two extra methods - UnregisterHost and UnregisterItem with bus_name and object_path as arguments.<br><br></div><div>1.2. Previously I wrote that bus_name could be also empty, but now I think that it would be better to just require valid bus name - unique or well-known.<br><br></div><div>2. Item.<br>===========<br><br></div><div>2.1. Scroll method - change orientation argument from string to unsigned int (u). 0 = Horizontal, 1 = Vertical. Unrecognised orientation should be considered equal to Horizontal.</div><div><br></div><div>2.2. Category - change property type from string to unsigned int. 0 = ApplicationStatus, 1 = Communications, 2 = System Services, 3 = Hardware. Unrecognised category should be considered equal to ApplicationStatus.<br></div><div><br></div><div>2.3. Status - change property type from string to unsigned int. 0 = Passive, 1 = Active, 2 = Needs Attention. Unrecognised status should be considered equal to Passive.</div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Dec 6, 2015 at 4:01 PM, Alberts Muktupāvels <span dir="ltr"><<a href="mailto:alberts.muktupavels@gmail.com" target="_blank">alberts.muktupavels@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><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.<span class="HOEnZb"><font color="#888888"><br><br>-- <br><div><div dir="ltr">Alberts Muktupāvels<br></div></div>
</font></span></div></div></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr">Alberts Muktupāvels<br></div></div>
</div></div>