snixembed - proxy StatusNotifierItems as XEmbedded systemtray-spec icons (WIP)
electron has recently dropped support for the old XEmbed-based system tray
protocol, while many status bars for simple X window managers still do no not
support newer protocols like StatusNotifierItem.
This project is basically a dirty hack using deprecated GTK+ StatusIcons to
proxy this new specification to the old one.
- pixmap icons (it will crash when no pixmaps are supplied)
- activation on left mouse button
- context menu on right mouse button
This is enough for electron apps like Riot and Signal.
For autostarting, use
snixembed --fork to avoid race conditions (it will wait
for the forked service to be ready before exiting).
- ayatana/libappindicator seem to think their standard is supported when they
see the service, and then start talking appindicator to it. Therefore they
do not fall back to XEmbed specification, and the tray icons are broken.
As I have not been able to find a decent specification for this standard,
there is no real work going on in fixing this. The relevant error:
g_bus_watch_name: assertion 'g_dbus_is_name (name)' failed
- some apps probe for StatusNotifierItem support not by checking for the D-Bus
service but by checking environment variables. Exporting
does the trick in some cases.
Issues are tracked on sourcehut: ~steef/snixembed.