Hey everyone,

After fairly long chats with Carsten and Mike during LinuxCon and over 
IRC, trying to fix systray on my own, and better understanding the 
systray landscape, I've also switched to the drop-xembed camp.

Introduction:
For those of you who don't know, there are currently two main ways for 
implementing systray in Linux, Xembed (legacy) and appindicator (fairly 
new).

Xembed: this is the legacy way of doing it. An application which wants 
to have a systray icon creates a small (22x22 px) window which gets 
embedded into the systray gadget. This is a window like any other, so 
for better or worse, everything is user controlled, including ugly 
inconsistent behaviour. To make things even worse, those "windows" 
usually don't have a transparent background, but instead use hacks to 
determine what solid colour background they should use, making 
themability, something we care about a lot in E, suck.

Appindicator: dis is a specification that start by the KDE devs a while 
back, and was adopted by unity/ubuntu. It's essentially a dbus api, 
which means the shell (enlightenment) has more control regarding look, 
feel and behaviour, and makes the shelf more consistent among apps.


Major issues with Xembed:
Apart from the issues mentioned above, xembed is also broken because it 
(obviously) doesn't work under wayland, it doesn't work with higher dpi 
screens (remember the 22x22 restriction?), clients implement it in a 
hacky way, and that means servers have to adapt, making it very painful 
to support, and last, but not least, it's considered obsolete by many 
people in the Linux world, namely us.


Rest of the ecosystem:
 From what I understand, KDE5 will have no xembed support, Unity already 
doesn't support it, and I hope we and many others will follow.
I don't remember the exact list, but from the kde blog (see link below) 
and off the top of my head, in elm we only support appindicator for 
systray, most Qt and GTK+ apps support it, dropbox and steam also use 
it, so it's really just skype that's broken, I'd complain to support and 
get it working. If you encounter anything else that doesn't, just open a 
ticket at the respective project.


But why not just fix the systray module?
It's a lot of work and it's just not worth it since there is a better 
and widely used alternative out there. I also tried writing a module to 
embed a standalone systray into our shelves only to find out that all 
the standalone systrays suck. :)
I wanted to port the e17 systray module to e20, but according to Mike, 
that won't work, as there are many issues with the compositor interactions.


Essentially, unless we come across a reasonable reason why Xembed 
support shouldn't be dropped, I suggest we go on and get rid of it in 
the next week or two.


References:
http://blog.martin-graesslin.com/blog/2014/03/system-tray-in-plasma-next/


Thanks.

--
Tom.


------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to