From kde-panel-devel Fri Oct 30 15:54:44 2015 From: "David Edmundson" Date: Fri, 30 Oct 2015 15:54:44 +0000 To: kde-panel-devel Subject: Re: Review Request 125655: Xembed SNI Proxy Message-Id: <20151030155444.14097.81429 () mimi ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-panel-devel&m=144622050411211 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--===============0441390630169923191==" --===============0441390630169923191== Content-Type: multipart/alternative; boundary="===============9177224376572719600==" --===============9177224376572719600== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://git.reviewboard.kde.org/r/125655/ ----------------------------------------------------------- (Updated Oct. 30, 2015, 3:54 p.m.) Review request for Plasma. Repository: plasma-workspace Description ------- 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. Diffs (updated) ----- xembed-sni-proxy/xembedsniproxy.desktop PRE-CREATION xembed-sni-proxy/xcbutils.h PRE-CREATION xembed-sni-proxy/sniproxy.cpp PRE-CREATION xembed-sni-proxy/snidbus.cpp PRE-CREATION xembed-sni-proxy/sniproxy.h PRE-CREATION xembed-sni-proxy/org.kde.StatusNotifierWatcher.xml PRE-CREATION xembed-sni-proxy/snidbus.h PRE-CREATION xembed-sni-proxy/org.kde.StatusNotifierItem.xml PRE-CREATION xembed-sni-proxy/main.cpp PRE-CREATION xembed-sni-proxy/fdoselectionmanager.cpp PRE-CREATION xembed-sni-proxy/fdoselectionmanager.h PRE-CREATION CMakeLists.txt 50091ea8ffb01177d34e18217b929cfb9ede3d23 xembed-sni-proxy/CMakeLists.txt PRE-CREATION xembed-sni-proxy/Readme.md PRE-CREATION Diff: https://git.reviewboard.kde.org/r/125655/diff/ Testing ------- Thanks, David Edmundson --===============9177224376572719600== MIME-Version: 1.0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 7bit
This is an automatically generated e-mail. To reply, visit: https://git.reviewboard.kde.org/r/125655/

Review request for Plasma.
By David Edmundson.

Updated Oct. 30, 2015, 3:54 p.m.

Repository: plasma-workspace

Description

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.

Diffs (updated)

  • xembed-sni-proxy/xembedsniproxy.desktop (PRE-CREATION)
  • xembed-sni-proxy/xcbutils.h (PRE-CREATION)
  • xembed-sni-proxy/sniproxy.cpp (PRE-CREATION)
  • xembed-sni-proxy/snidbus.cpp (PRE-CREATION)
  • xembed-sni-proxy/sniproxy.h (PRE-CREATION)
  • xembed-sni-proxy/org.kde.StatusNotifierWatcher.xml (PRE-CREATION)
  • xembed-sni-proxy/snidbus.h (PRE-CREATION)
  • xembed-sni-proxy/org.kde.StatusNotifierItem.xml (PRE-CREATION)
  • xembed-sni-proxy/main.cpp (PRE-CREATION)
  • xembed-sni-proxy/fdoselectionmanager.cpp (PRE-CREATION)
  • xembed-sni-proxy/fdoselectionmanager.h (PRE-CREATION)
  • CMakeLists.txt (50091ea8ffb01177d34e18217b929cfb9ede3d23)
  • xembed-sni-proxy/CMakeLists.txt (PRE-CREATION)
  • xembed-sni-proxy/Readme.md (PRE-CREATION)

View Diff

--===============9177224376572719600==-- --===============0441390630169923191== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KUGxhc21hLWRl dmVsIG1haWxpbmcgbGlzdApQbGFzbWEtZGV2ZWxAa2RlLm9yZwpodHRwczovL21haWwua2RlLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3BsYXNtYS1kZXZlbAo= --===============0441390630169923191==--