Raziel K. Crowe
0d174a3fe6
|
3 years ago | |
---|---|---|
.. | ||
CMakeLists.txt | 3 years ago | |
Readme.md | 3 years ago | |
fdoselectionmanager.cpp | 3 years ago | |
fdoselectionmanager.h | 3 years ago | |
main.cpp | 3 years ago | |
org.kde.StatusNotifierItem.xml | 3 years ago | |
org.kde.StatusNotifierWatcher.xml | 3 years ago | |
plasma-xembedsniproxy.service.in | 3 years ago | |
snidbus.cpp | 3 years ago | |
snidbus.h | 3 years ago | |
sniproxy.cpp | 3 years ago | |
sniproxy.h | 3 years ago | |
xcbutils.h | 3 years ago | |
xembedsniproxy.desktop | 3 years ago | |
xtestsender.cpp | 3 years ago | |
xtestsender.h | 3 years ago |
Readme.md
##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/