Quiero lanzar una aplicación que es un JAR al iniciar mi sesión. La gracia, y creo causa del problema, es que esta se lanza en el systemtray.
La aplicación se llama
Tomighty, para lanzarlo ejecuto el siguiente comando desde terminal:
Código BASH:
Ver original$ /usr/lib/jvm/java-7-oracle/bin/java -jar /opt/tomighty-0.7.1.jar
... y se debería ver así una vez arrancada:

(es el tomate de la izquierda).
Cuando coloco la instrucción desde la opción que me da Ubuntu para arrancar el programa (botón superior derecho > Startup Applications...), simplemente no hace nada, no arranca. Ante esto, creé un script para lanzarlo y direccionar la salida a un archivo e indico la ruta de este script en el cuadro de dialogo de Ubuntu.
Código BASH:
Ver original#!/bin/bash
/usr/lib/jvm/java-7-oracle/bin/java -jar /opt/tomighty-0.7.1.jar > /tmp/tomighty 2>&1
Es entonces que tengo lo siguiente en el archivo donde mando la salida:
Código:
Jan 12, 2012 9:58:38 PM org.tomighty.log.Log info
INFO: Loading messages for locale en_US
Jan 12, 2012 9:58:38 PM org.tomighty.log.Log info
INFO: Messages not available for locale en_US.
Exception in thread "main" java.lang.UnsupportedOperationException: The system tray is not supported on the current platform.
at java.awt.SystemTray.getSystemTray(SystemTray.java:173)
at org.tomighty.ui.tray.AwtTray.iconSize(AwtTray.java:28)
at org.tomighty.resources.TrayIcons.tomato(TrayIcons.java:43)
at org.tomighty.ui.TrayManager.initialize(TrayManager.java:63)
at org.tomighty.ioc.Factory.create(Factory.java:45)
at org.tomighty.ioc.Container.create(Container.java:61)
at org.tomighty.ioc.Container.get(Container.java:50)
at org.tomighty.ioc.Container.get(Container.java:43)
at org.tomighty.Tomighty.main(Tomighty.java:58)
Estoy entendiendo, el problema será que cuando la lanza la aplicación aún no está listo la bandeja del sistema. Viendo el archivo que se encarga de lanzar el sonido cuando inicio sesión (que viene por default), veo que tiene parámetros que parecen condicionales. Copio su contenido como ilustración:
Código:
# ~/.config/autostart/libcanberra-login-sound.desktop
[Desktop Entry]
Type=Application
Name=GNOME Login Sound
Comment=Plays a sound whenever you log in
Exec=/usr/bin/canberra-gtk-play --id="desktop-login" --description="GNOME Login"
OnlyShowIn=GNOME;Unity;
AutostartCondition=GSettings org.gnome.desktop.sound event-sounds
X-GNOME-Autostart-Phase=Application
X-GNOME-Provides=login-sound
X-GNOME-Autostart-enabled=false
Comparándolo con el que crea para mi aplicación, no tiene nada de eso:
Código:
# ~/.config/autostart/java.desktop
[Desktop Entry]
Type=Application
Exec=/usr/local/bin/tomighty
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Tomighty
Name=Tomighty
Comment[en_US]=
Comment=
He intentado jugar copiando dichas "condicionales" al archivo para mi aplicación pero sin éxito. Igual podría partir del creado y cambiar solo la instrucción, pero pregunto aquí ¿cuál es la "manera correcta" de hacerlo?. No creo Ubuntu no pueda resolver esto de manera automágica ...
Gracias de antemano