3
0
mirror of https://github.com/Qortal/Brooklyn.git synced 2025-02-07 06:44:18 +00:00
Brooklyn/plasma/workspace/xembed-sni-proxy
2022-03-05 22:41:29 +05:00
..
CMakeLists.txt Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
fdoselectionmanager.cpp Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
fdoselectionmanager.h Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
main.cpp Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
org.kde.StatusNotifierItem.xml Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
org.kde.StatusNotifierWatcher.xml Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
plasma-xembedsniproxy.service.in Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
Readme.md Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
snidbus.cpp Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
snidbus.h Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
sniproxy.cpp Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
sniproxy.h Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
xcbutils.h Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
xembedsniproxy.desktop Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
xtestsender.cpp Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00
xtestsender.h Plasma desktop workspace tweaks 2022-03-05 22:41:29 +05:00

##XEmbed SNI Proxy

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.

This project should be portable onto all other DEs that speak SNI.

##How it works (in theory)

  • We register a window as a system tray container
  • We render embedded 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

There are a few extra hacks in the real code to deal with some toolkits being awkward.

##Build instructions

cmake .
make
sudo make install

After building, run xembedsniproxy.

[1] http://standards.freedesktop.org/systemtray-spec/systemtray-spec-latest.html [2] http://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/