Xembed SNI Proxy

Review Request #125655 - Created Oct. 16, 2015 and submitted

David Edmundson

The goal of this project is to make xembed system trays available in Plasma.

This is to allow legacy apps (xchat, pidgin, tuxguitar) etc. system trays[1] available in Plasma which only supports StatusNotifierItem [2].

Ideally we also want this to work in an xwayland session, making X system tray icons available even when plasmashell only has a wayland connection.

How it works (in theory)

  • We register a window as a system tray container
  • We render embeded windows composited offscreen
  • We render contents into an image and send this over DBus via the SNI protocol
  • XDamage events trigger a repaint
  • Activate and context menu events are replyed via X send event into the embedded container as left and right clicks

Code is a mix of hacks and bodges bashing client apps into place, and I happily acknowledge it looks pretty bad. Unfotunately most of it seems to be needed, but I'd love to be proved wrong on most of it.

CMakeLists changes are obviously currently wrong, I can strip half of find_packages and I need an add_subdirectory in the root file, but it's easier for me to sync with the separate repo mirror this way till we're close to merging. I expect this to take quite some revisions.



  • 5
  • 17
  • 1
  • 23
Description From Last Updated
QScopedPointer Martin Flöser Martin Flöser
please do even one more thing (if possible): render once to it with a translucent background. The tricky part is ... Martin Flöser Martin Flöser
my search for selectionAtom only find's this usage. Given that I recommend to skip using the Xcb::atoms for it and ... Martin Flöser Martin Flöser
why add the COPYING files? Martin Flöser Martin Flöser
that also looks like something you probably didn't want to add ;-) Martin Flöser Martin Flöser
Martin Flöser
Marco Martin
Martin Flöser
David Edmundson
Martin Flöser
David Edmundson
Martin Flöser
Martin Flöser
David Edmundson
Review request changed

Status: Closed (submitted)

Change Summary:

Submitted with commit 2fc947526df5d7f62db79e7f224cc13b1aa15493 by David Edmundson to branch master.