I recently did some gcc visibility-related stuff to most of the libraries we have.
With this, we can avoid exporting unnecessary dynamic symbols.
Take liblxqt for example, after using the gcc visibility trick, number of the exported symbols decreased by 50% (about 1000).
This not only make the file size smaller, it also speed up runtime dynamic linking and symbol name resolution and make loading faster.
I did not touch libqtxdg since it's more complicated.
Other libs already received the treatment and the result was generally good.
About lxqt-panel, I'd like to make building plugins outside the lxqt-panel source tree possible. These requires several changes.
1. lxqt-panel should be split into lxqt-panel and liblxqt-panel. All classes/functions used by the plugins should be in liblxqt-panel.
2. BuildPlugin.cmake should be reworked and create LxQtPanel-config.cmake, which is installable.
3. Install plugin API headers
About #1, making core plugin API its own library liblxqt-panel is needed. Though without this back-linking from the plugins to the executable still works, it's not portable.
After these are done, we can develop plugins outside the lxqt-panel source tree. So other third parties can develop lxqt panel plugins as well. We can also develop some distro-specific panel plugins, such as libindicator plugin for ubuntu.
I haven't start doing this since Александр Соколов knows this much better than me, and also your comments and suggestions are needed.