On Wed, Jan 1, 2014 at 5:42 PM, Philipp Heckel <[email protected]>wrote:
> Hello Vincent, > > I tried to fiddle something together for the Unity "appindicator" tray. It > conflicts with your changes in the "gui" branch, and it's not completely > working: > > > https://github.com/binwiederhier/syncany/commit/d772bdae76fee8b3f12cd9ed23c9c25d876c6719 > > Since Unity removed SystemTray support entirely now, this solution is > (like in 2011) using an additional Python script to instantiate the tray. I > added a TrayIconFactory to create a tray depending on the desktop > environment (Linux/Unity -> UnityTrayIcon; others: DefaultTrayIcon). > Ok sound good. I changed TrayIcon from interface to abstract class in order to handle common function such as show website, preferences etc. ... > > The DefaultTrayIcon is your code; the UnityTrayIcon starts the python > script. The communication between the python script and the Java code is > via the daemon websocket, so: > > 1) unitytray.py (WS client) -> daemon WS Server (forwards) -> > UnityTrayIcon (WS Client) > --> e.g. for events {'action': 'tray_menu_item_clicked', 'command': 'NEW'} > > 2) and UnityTrayIcon (WS Client) -> daemon WS Server (forwards) -> > unitytray.py (WS Client) > --> e.g. for events {"text":"All files in > sync","action":"update_tray_status_text"} > > ok : another option would be to start a web socket server in gui and make python script connect to it ? > *Issues:* > *a) Python:* Introducing a new language (Python) usually comes with > issues (deployment, dependencies, IPC, etc.). Any pure-Java alternatives > for Appindicator support are welcome. I have not found any back in 2011, > and I couldn't find any now... Ideas? > could not find anything .... one solution in the future could be to use java-gnome library and jython once java-gnome would have implemented gtk appindicator API > > *b) Indirect communication: *The code is nowhere near stable, but the > communication works quite well. However, I'm not sure that the indirection > via the daemon WS Server is such a good idea. Any thoughts? Maybe the > UnityTrayIcon should simply start its own WS Server and let unitytray.py > connect to it. > see above :) unitytray is only linked to gui ans it make sense to let UniTray handle this (I switched the code to implement a webserver on another port) > > *c) Deployment: *The Python script obviously must be put somewhere when > deploying the application (e.g. in "bin/"). This is currently not done. The > script only works if "Launcher.java" is started from Eclipse. > or extracted at runtime to random temp folder and deleted when application exits ? > > *d) Python script resources*: The Python script needs the same resources > (tray.png, etc.) as the DefaultTrayIcon, but it cannot access the resources > from a JAR. That means the deployment must include the extracted resources > somewhere. > or resources could be sent to python script through web socket > *e) Event abstraction: *Both DefaultTrayIcon and UnityTrayIcon should > fire events to a central source, such that onExitClicked(), etc. only has > to be implemented once. > see above / use of common abstract parent class > > @Vincent: You obviously don't have to take my entire code, but I hope it > helps with the Tray stuff. > yes, but what you did is good. just need to strengthen python script and find a clean way to install python dependencies (web socket, appindicator) > Best > Philipp > > > > -- > Mailing list: https://launchpad.net/~syncany-team > Post to : [email protected] > Unsubscribe : https://launchpad.net/~syncany-team > More help : https://help.launchpad.net/ListHelp > > -- Vincent Wiencek [email protected]
-- Mailing list: https://launchpad.net/~syncany-team Post to : [email protected] Unsubscribe : https://launchpad.net/~syncany-team More help : https://help.launchpad.net/ListHelp

