[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-usability
Subject:    Re: ksytray madness
From:       "Aaron J. Seigo" <aseigo () kde ! org>
Date:       2003-10-23 23:58:43
[Download RAW message or body]

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Thursday 23 October 2003 09:56, Fabrice Mous wrote:
> Don't no if this has been discussed here before. I checked out the archives

no, not here, but on bugs.kde.org there has been some... when i was looking at 
various systray issues a couple months back (still have a few more to address 
for 3.2.. must. find. time.) i rolled this exact problem around in my mind 
and on paper for the better part of a week... i even coded up a few 
possibilities with varying degrees of satisfaction, but eventually conceded 
that this requires extending the XDG system tray functional significantly. 
here are my thoughts:

systray widgets should have (at least) three possible states: active (meaning 
it represents an action in progress, e.g. a received email), inactive but 
interactive (meaning there's no action in progress, but it offers some sort 
of control interface, e.g. a media player's next/prev/stop/start menu), 
inactive and non-interactive..

Icons should be hideable. This should be done via a few methods:
	a) from the app the icon belongs to. the app should NOT have a "show systray 
icon sometimes" option, since many already have a "show systray icon" option 
and this would just lead to confusion. it also raises the spectre of syncing 
this option with the systray itself, which is asking for maintenance 
headaches. instead, the app should mark the icon as hideable when there are 
no pending actions or application interaction possibilities via the icon at 
that time. conversley, the app can mark the icon as being in an active state.
	b) from the systray, the user should be able to say "don't show this icon". 
perhaps a simple RMB/handle menu, ala the mixer applet. these user 
preferences would over ride the program supplied states.
	c) the systray itself should hide inactive non-interactive icons

Sytray autoexpansion: the systray should expand to take up more panel space 
either on mouse over or by some click (think XP) to show all systray icons 
that are either active or interactive. 

to do this properly the systray applet needs a bit more smarts and needs to be 
able to expand/contract and hide/unhide icons. not too tricky, and something 
i was able to accomplish in a few hours of hacking about on it.

but we also need to extend the icon <-> systray communication. the program 
responsible for the systray icon needs to be able to attach some metadata for 
the systray to use (e.g. it's in an active state), and this needs to be done 
in such a way as to make the systray able to react in real time to these 
changes. i'm heavily in favour of extending the KSystemTray class to have 
methods that allow setting the state, which then uses dcop to communicate 
with the system tray. yes, this means it would be KDE specific (until DBUS 
becomes a reality) but doing it via X atoms and the like really looks ugly. 
bleh.

we may also want to allow the systray to talk to the icons in a direct fashion 
(something that's not so easy thanks to the QXEmbed class and raw X juggling 
that is used for this hack we call a system tray). honestly, if it was up to 
me and i didn't care about non-KDE systray icons i'd say we dump the whole X 
embeding stupidity and make it a 100% DCOP interface, where the systemtray 
owns the icons, creates the menus, etc.... all via a set of DCOP calls that 
apps can access, transparently to them via the KSystemTray class. 
unfortunately, reality dictates we have to hobble it to work with other 
systems that aren't as good as KDE and lack anything sane resembling DCOP 
and/or reasonable icon handling. if there was ever a reason to say "Screw the 
rest of the X11 world of braindamage, let's make KDE work in spite of them" 
the system tray is it. that's the idealist in me, the pragmatist realizes 
that isn't an option (at this point in time).

anyways, long ramble, but i hope i got my idea across, namely: this requires 
some API changes, some more invasive than others, and a good overhaul and 
extension to the systray applet's capabilities. this may even require some 
BIC changes.

- -- 
Aaron J. Seigo
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA  EE75 D6B7 2EB1 A7F1 DB43
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux)

iD4DBQE/mGsz1rcusafx20MRAr23AJiXTMzyLrG52gegIfArKwg2tp/TAJ9rkA66
rbfcYBdXU9FfkbKczcBnPw==
=u4f2
-----END PGP SIGNATURE-----
_______________________________________________
kde-usability mailing list
kde-usability@mail.kde.org
http://mail.kde.org/mailman/listinfo/kde-usability
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic