Support for old-school XEmbed system tray icons in Plasma 5

Plasma 5 has abandoned the old xembed-based system tray support. I mentioned that in my announcement post for the Plasma 5 packages for Slackware-current, and also mentioned that there are solutions for that in Plasma 5. This means that a lot of applications (meaning: all non-Plasma 5 applications) will fail to display an icon in the system tray of your new Plasma 5 Workspace. No more Skype, no more Dropbox, no more Steamclient, etcetera. The applications will be running of course, but you can not interact with them through their system tray icon.

For some applications (Qt 4 and GTK+ 2 and 3 based in particular), I already added support to my set of Plasma 5 packages, but some applications still stubbornly refuse or are still unable to display a systray icon in your Plasma 5 Workspace.

For these applications, the best solution is to run an application like wmsystemtray which implements the XEmbed protocol and thereby allows applications to dock their systray icon in the wmsystemtray application’s window.

It is a bit of a clumsy solution because wmsystemtray itself is unable to dock into the Plasma 5 system tray, and therefore you will have a permanently visible window somewhere on your desktop which displays the systray icons for applications like dropbox, blueman, scim etc. But it is better than nothing at all.

Instructions about how to work with wmsystemtray so that it looks best and impacts your workspace the least, are contained in the “README.kwin” file inside the build directory in my repository, but that file is a bit hidden. Therefore, here are the instructions:

First of course, install the wmsystemtray package from my repository.

Start the application as follows. Type it in KRunner (Alt-F2) or in an X terminal:

wmsystemtray --non-wmaker --bgcolor white

The window will appear in the upper left corner of your workspace, obscuring the Plasma 5 workspace control icon. Grab the window and drag it to the upper right corner – I think it has a better placing there. The window will probably already show some applications that had been waiting all that time to show their systray icon.

Add the following content to a new file called “wmsystemtray.kwinrule” somewhere in your fiilesystem. The filename is not important, but the “.kwinrule” extension will make it easier to find later:

[Application settings for wmsystemtray] 
Description=Application settings for wmsystemtray 
desktop=-1 
desktoprule=2 
noborder=true 
noborderrule=2 
skippager=true 
skippagerrule=2 
skipswitcher=true 
skipswitcherrule=2 
skiptaskbar=true 
skiptaskbarrule=2 
type=2 
typerule=2 
wmclass=wmsystemtray0 wmsystemtray 
wmclasscomplete=true 
wmclassmatch=1

Then, open System Settings and go to”Window Management > Window Rules“. Click on the “Import” buton and point to the “wmsystemtray.kwinrule” you just created. Click “Apply” and immediately you will see the wmsystemtray window change: the border disappears and the window placeholder in the taskbar is gone too. Its place on the desktop is immutable now.

wmsystemtray

Next time you login to Plasma 5, its session manager will run the wmsystemtray again, so there is nothing more to do than the above.

Eric

25 thoughts on “Support for old-school XEmbed system tray icons in Plasma 5

  1. Pingback: Links 31/1/2015: Open Lunchbox, Librem 15 at Around $400,000 | Techrights

  2. In my case I work the other way around having a few applications from KDE on XFCE.
    Its strange that Dropbox icons will not show in tray since Dropbox are using QT5 for the UI engine (including the tray part).
    Anyway, in Dropbox’s case I think that there will be support for the ‘new’ way of doing things sooner or later.


  3. May I ask a question?

    I’ve built mirall-1.7.1 against qt5 (and qt5keychain), everything works well except for the icon in the systemtray; in fact the icon showed is not the one shipped with the app (the little cloud) but a “generic” (the first one, in this image: http://postimg.org/image/m3rb0v4zd/).
    I don’t know how to fix it, any tip?


  4. Hi Michelino

    I need to build a new version of mirall that works in Plasma 5 so I can do some tests, I have not tried this yet. It is strange that a generic icon is being used.
    I remember seeing a different VLC icon than the default too, when I was running that. Can you check what icon is shown in the Plasma menu for mirall?


  5. Hi Eric
    The digital clock is not showing my localtime, probably Western European time. But the analog clock is showing correctly.



  6. Hi Eric, thanks for the replay.

    In the Plasma menu “regular” owncloud icon is shown (and the same invoking it by krunner).


  7. I can’t find wmsystemtray.kwinrules anywhere, even when it’s running….I do a search and I find no trace of the file anywhere. There is a .kwinrulesrc file but I’m pretty sure that’s not the file you’re referring to.


  8. Owen, it is not there until you create it.
    I was quite specifiv in the article:

    Add the following content to a new file called “wmsystemtray.kwinrule” somewhere in your fiilesystem. The filename is not important, but the “.kwinrule” extension will make it easier to find later:



  9. This is a great workaround.

    My problem is that I instructed plasma to start with an empty session. So, I placed wmsystemtray in the autostart part of the systemsettings, but it does not start; so, I have to invoke it every time.



  10. I’m not sure it has anything todo with it, I swapped out Video cards thinking there may be an issue there….but no….I’m not sure why almost ALL Menu’s are blank white space — no items. So I’m sure it’s related to something else : ) Thanks for responding.



  11. This whole plasma 5 system tray issue sucks big time.
    I understand the developers decision from a design perspective but from a user’s perspective I have to say I dont’t care. you failed!
    As a user I don’t care if system notifier api is around for > 5 years and app devs had time to switch. I just want to use my f*ing applications the way I’m used to.
    The system notifier should bring a “greater user experience”, well currently it’s not. For that apps the only experience is that I can’t use them the way I’m used to.
    I dont’ care if an implementation works with wayland or not. until the devs ported these apps to work with system notifier I will stick with X and kde 4.
    Really guys, this way we will certainly not convince users to switch to kde. Reminds me of the too early released kde4. The switch from kde 3 to 4 was already painful enough and now this? Didn’t we learn anything?

    Don’t get me wrong I’m a kde user since the 1.x days and I love kde. I appreciate all the work you kde devs (and all oss devs – I’m one myself) do, but you really fucked this one up. 😉


  12. This seems like a fairly significant regression. Is there any way to get the system tray to display some sort of default icon that indicates that an XEmbed icon could not be displayed? That would at least make it easier for users to know what is happening.


  13. Hi, it works fine with a home-python-script (I use the egg.trayicon library, deprecated) and Plasma 5. The only thing is that I can’t move the wmsystemtray window.


  14. wmsystemtray is a foul compromise, I wish someone would create soem kind of plasmoid or extention to bring back true syst tray icons instead of having some weird additional non moveable window on the desktop to display tray icons. Using an application made for some outdates window manager on the most advanced Linux DE is no good idea



  15. Pingback: 解决 KDE Plasma 5 丢失系统托盘图标 - Kkyy.ME

  16. Hi Alien, I tryed trayer-srg but it doesn’t work, and the KDE system tray icons is becoming a problem for a lot of people. Really a bad strategic choice, to remove the support and don’t implement a compatibility layer.

    Ciao Frank



  17. xembed-sni-proxy implements a compatibility layer that allows xembed tray icons to be shown directly in the plasma notification area. It is not perfect (e.g. tooltips do not work) but usable and much more convenient that a window in the corner.



  18. Pingback: Mise en place de davmail | Simon Dujancourt

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.