Re: Revisiting the GNOME Panel in general...



On 29/09/04 13:57, Scott James Remnant wrote:

On Tue, 2004-09-28 at 11:38 +0800, Davyd Madeley wrote:

On Mon, 2004-09-27 at 12:45 +0100, Scott James Remnant wrote:
On Thu, 2004-09-23 at 00:01 +0800, Davyd Madeley wrote:
Scott, we indeed have identical views. For anyone who didn't understand
my mumblings, try Scott's ;)

Excellent!  From reading your original post I had the impression mine
were a bit more radical (especially combining launchers and nicons).
Call me fearfully conservative ;)

When you're thinking radical, there's no point backing down on the scary
bits <g>

* Applet API.  I'm with you that basically we're making everything a
  notification icon, in effect.  The Applet APIs would need to be
  overhauled to make the world a simpler place.  A lot of the harder
  work isn't needed with a more intelligent Panel.
I think we have pretty much everything we need already in the
notification area spec. We could almost overhaul libpanel-applet to be
EggTrayIcon I think. From my musing, all of the smarts would have to be
in the panel.

On a review of that, there's still some bits missing from
EggTrayIcon/notification icons we may want/need to do away with
"applets" entirely:

 * "type" hint -- in order to place new icons intelligently, we'd need
   some kind of associated purpose hint for them.  This could be
   "launcher", "hardware", "information", etc.
Is this useful in addition to giving applets unique names? (which would be needed to let the panel order the icons correctly as they are created).

 * size negotiation -- applets can query the panel to find out it's
   size and orientation, notification icons can't.  Possibly useful for
   things like the contact lookup applet
The notification icon spec currently has no size negotiation. The spec currently says " Tray icons may be assigned any size by the system tray, and should do their best to cope with any size effectively.":
   http://freedesktop.org/Standards/systemtray-spec/0.1/ar01s05.html

It should be possible to add some extra messages to change this default behaviour though. The notification icon will probably want to know whether the panel is horizontal or vertical. If it is horizontal, the icon should be able to set a fixed width and be able to ask to expand to fill free space. The icon would take its height from the panel height. For a vertical panel, the same applies with height and width swapped.

The icon should also be notified of panel orientation changes and height changes so it can change appearance appropriately.

 * moving/re-ordering icons -- we'd need some way to be able to move
   and re-order icons; this would need co-operation with the applet to
   let the panel do that to it.
The window manager spec has something similar to this:
   http://freedesktop.org/Standards/wm-spec/1.2/ar01s04.html#id2503404

This _NET_WM_MOVERESIZE hint is used to coordinate resizes between the app and window manager using the resize grips found in the status bar of many apps. Something similar could probably done to handle cooperative moving of notification icons.

 * menus -- how do we add things like the Move, Lock & Remove menu
   items?  How do those messages go to the panel
This is currently handled with the BonoboUI component code, so that those menu items invoke actions in the panel rather than the applet.

One option is to treat these menu items as something that applets SHOULD provide rather than appear magically through the use of Bonobo (this might be the only option to make it possible to implement on other desktops). A standard "applet widget" could make it easy to provide these features though.

The move option can probably be implemented using the previously mentioned method. Remove can be implemented by simply exiting or destroying the notification icon widget. Handling lock down might be a bit more difficult though.


This still leaves a few problems though:

  1. how do you get the list of applets to provide something like the
     current "add to panel" dialog?
  2. How to add/remove applets from the session (if they should be
     handled by the session manager, that is).  This is a problem that
     things like Novel's netapplet are already running into.


James.

--
Email: james jamesh id au
WWW:   http://www.jamesh.id.au/





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]