Thoughts on the systray II.

Lubos Lunak l.lunak at suse.cz
Mon Apr 18 16:34:25 BST 2005


On Friday 15 of April 2005 20:29, Aaron Seigo wrote:
> On April 15, 2005 16:46, Lubos Lunak wrote:
> > 2) converting applet-like systray apps to real applets. Aaron had some
> > issues with this because of having bad nightmares about XEmbed, so this
>
> no, not because of XEmbed, but because the systray form factor and
> ease-of-programming have real world benefits that applets will not be able
> to cover as well.

 Really? What exactly should be the difference? With a systray app is roughly 
like this, if I'm mistaken:
- get some template app with the Makefile.am and the stub with main()
- use KSystemTray to provide the necessary info and the contents of the 
systray icon
- make install
- add the systray icon by finding it in the K-Menu

 I'm talking about applet-like systray icons now of course, the ones like 
kxkb, docked cpu/network/whatever indicators and so on, not things like 
KMail's or KArm's systray icon.

 Now, what's should be the big difference compared to something like:
- get some template with the Makefile.am
- use KPanelApplet or KSimplePanelApplet to provide the necessary info 
(roughly the same info like above I'd say) and the contents of the applet
- make install
- add the applet by finding in the the kicker RMB menu

 In fact in some cases that could be even simpler. E.g. my favourite Klipper 
quit dialog again - you don't need anything like that with applets. Do you 
want a new kicker applet? Just add it with the menu. Don't you want the 
applet anymore? Remove it and be done. Do you want a systray icon? Run the 
app. Don't you want it anymore? Remove it. Doesn't work? Well, perhaps you 
need to confirm that you really want to get rid of it completely and that you 
haven't got just momentarily bored by it. Or perhaps you need to find some 
checkbox. Or maybe something else, who knows?

 There may be things that might need some work this way. E.g. Kicker should 
allow applets not to take the full panel height and two of them have the same 
X coordinate. I intentionally say X coordinate because I think there's no 
need to implement a grid. Just if two applets have the same X and fit 
together within the height, put the first one above the second one.

 
 But I think you still fail to realize what I really want. My problem is that 
the current systray as a whole sucks big time. Yeah, the underlying mechanism 
isn't that good either. But the real problem with the systray is that it's 
just a random inconsistent mess of everything. There are applets. It's used 
for notifications and status reporting. It's used for removing rarely used 
things from the taskbar. It's used for quick access. People don't know how to 
put some things there (sorry, ksystraycmd is just a hack). People get annoyed 
by the "really quit? ... er ... like forever?" dialogs. People get confused 
by the minimize vs close buttons functionality.

 Why should I have a keyboard layout indicator next to some icon representing 
a window I'm not going to touch for the next hour and some icon that will 
blink when something important happens? I think that if we just split the 
systray into separate parts for such separate uses that would be already an 
improvement.

 That's why I want to have applet-like systray icons converted to real 
applets. Because, face it, applet-like systray icons are just like real 
applets from the UI point of view, it's just the underlying implementation 
that's different. This may cause some problems in Kicker like having too much 
space taken by the applet handles, but I think those are rather problems of 
Kicker than applets.

> > 4) not using the systray for daemons, quick access and such stuff,
> > instead simply not having any GUI for those, or using applets/whatever.
> > I'm not actually sure what was the opinion on this.
>
> depends on the daemon. for some this is the obvious step (e.g. the
> uiserver), for others it may not be. i don't think we can classify them all
> together unfortunately.

 But we can try. Do you have any examples that'd be different from George's 
KWallet and print manager case?


On Friday 15 of April 2005 23:29, Aaron Seigo wrote:
> On April 15, 2005 16:46, Lubos Lunak wrote:
> > flags, NET::Trayed and NET::TrayedHidden, first one meaning the window
>
> thinking about this a bit more, i'm ok with using WM hints for now .... but
> i'd like to see this move away from being X specific so that it runs as
> expected elsewhere too and is therefore futureproofed. of course, that
> means having an IPC mechanism that doesn't require an explicit target but
> allows the consumer to poll for information as WM hints do.

 It is not X-specific, strictly speaking. Why should you care how 
KWinModule::trayedWindows() gets the list? I don't think something like DCOP 
could work here because that way one stuck app could freeze everything that'd 
want to find out some detail. WMs don't ask apps about details, but apps 
always set the info and the WM can fetch it anytime it wants. Also, since the 
patches move major portion of the functionality to KWin, it simply has to be 
X. I have no idea how other platforms handle that.

-- 
Lubos Lunak
KDE developer
---------------------------------------------------------------------
SuSE CR, s.r.o.  e-mail: l.lunak at suse.cz , l.lunak at kde.org
Drahobejlova 27  tel: +420 2 9654 2373
190 00 Praha 9   fax: +420 2 9654 2374
Czech Republic   http://www.suse.cz/




More information about the kde-core-devel mailing list