kill the systray?
Aaron J. Seigo
aseigo at kde.org
Tue Sep 24 16:04:55 UTC 2013
On Tuesday, September 24, 2013 17:06:14 Sebastian Kügler wrote:
> Hey,
>
> Now that I have your attention ;), I'd like to discuss the future of the
> system tray. I'm porting it right now to Qt5/KF5, and running into some
> problems.
>
> Quick background: The systemtray widget in Plasma supports three kinds of
> "Items", traditional, xembed-based systray icons, dbus statusnotifiers and
> embedded plasmoids. It's a bit of an odd widget (well, almost its own OS
> ;)), with different implementations that put all of the above three into
> one system tray. So far so good.
>
> Two problems:
>
> * Qt5 doesn't seem to have the API we need to do our xembed tricks anymore,
> especially QX11EmbedContainer is gone.
it’s missing more than gone; i’ve heard several times that someone or another
was working on it.
> If we even get it to work under
> X11, it seems entirely futile to expect this to be feasible in a Wayland
> world.
agreed ...
> * Embedding Plasmoids doesn't work in the new world, and notmart has not
> idea yet how to solve this
i’m sort of happy about this; it always was a hack that went against the
overall design of things.
i’m tempted to say “just make the containment handle the system tray” but that
leads to several new kinds of problems that, while they will only affect a
small % of people, should be avoided.
taking a quick step back, the real issue is that we would like selected
Plasmoids to be able to offer a system tray version of themselves.
tbh, this really sounds like a perfect job for QML packages. as the
systemtray itself is a plasmoid, it should be able to offer access to the same
API that a stand-alone plasmoid would offer.
in this approach, the battery (e.g.) would be split into two packages (or
become a hybrid package?). when loaded as a plasmoid, everything would be as
normal.
when loaded as a systemtray package, a different mainscript would be loaded
that would otherwise use the exact same QML. it just wouldn’t be a plasmoid
anymore and the system tray itself would be responsible for loading these
altered packages.
as i write this, the idea of a hybrid package becomes more and more desirable
sounding. with a different main script, it should be possible to launch the
same UI but without it being an actual plasmoid.
this would also change how plasmoids advertise they can be in the system tray:
they would add Plasma/Systemtray (or whatever) to their ServiceTypes. there
would be a PackageStructure for these that would load an alternate mainscript
(which could be defined in the metadata.desktop just as we have now).
this also opens the door for extending the system tray with things that aren’t
plasmoids. not sure that’s a purely good thing ;)
> When I asked Martin if he knew a way to do the xembed, he replied (being
> Martin ;)) asking if we can just kill it and quoted starwars. I wonder: Can
> we kill it yet?
if Gtk+ supported status notifiers natively, then i’d say “yes”. it doesn’t, so
anyone who uses a Gtk+ application with a system tray icon will suddenly not
be able to access it. i’m pretty sure that’s going to cause problems.
as the GNOME devs are currently porting to Wayland as well, now would be a
good time to find out what they plan to do with their xembed system tray.
oh, and the tasks widget ought to gain support for application based status
notifiers (so that the system tray can opt out of them) as well as skiplists.
what i’d really like to see is this become a part of the wayland specific
support that we can build around the “every window has an associated .desktop
file” thing. Martin?
--
Aaron J. Seigo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20130924/01f03b12/attachment.sig>
More information about the Plasma-devel
mailing list