Skip to content

Java Programme im Unity Launcher

Java in UnityDie neue Oberfläche von Ubuntu, Unity, kann mir im großen durchaus gefallen, in Details geht sie mir teilweise aber ganz schön auf die Nerven. Eines dieser Details konnte ich jetzt für mich lösen: Manche Java Programme machen Probleme im Launcher. Man kann diese genauso wie andere Programme problemlos über die bekannten Mittel in den Unity Launcher packen, sie verhalten sich dort aber sehr untypisch: Wenn man diese aus dem Launcher startet wird ein neuer Eintrag mit dem Namen win0 im Launcher sichtbar, der kein Icon sondern nur ein Fragezeichen hat.

Man kann dieses Programm dann auch nicht wie gewohnt über das eigentliche Launcher Icon verwalten: Es hat keine Markierung für eine gestartete Instanz des Eintrags, ein Klick auf dieses Icon macht nicht die Instanz sichtbar, sondern startet eine neue, die wieder einen weiteren temporären Eintrag im Launcher erzeugt. Unity erkennt also offenbar nicht, dass das gestartete Programm zu dem ursprünglichen Launcher Eintrag gehört, sondern hält es für ein anderes Programm und erstellt nach Unity Launcher Logik einen entsprechend neuen temporären Eintrag.

In diesen Fällen muss man Unity also expliit mitteilen, wie der Thread heißen wird, der von diesem Launcher gestartet wird.

Ein eigenes Launcher File erzeugen

Dazu müssen wir uns erst einmal eine eigenes *.desktop File erzeugen. Wie dies unter Unity am einfachsten geht, ist hier ziemlich gut beschrieben. In meinem Fall handelt es sich um ein UML Tool (genannt MagicDraw). Mein Desktop File, das ich noch um ein selbst erstelltes Icon und einige Menukategorien erweitert habe, sieht nun wie folgt aus:

[Desktop Entry]
Version=1.0
Type=Application
Name=MagicDraw (UML)
Categories=Application;Development;IDE
Comment=MagicDraw UML IDE
Encoding=UTF-8
Exec='/home/grischa/Programme/MagicDraw_UML_Standard_Edition/bin/mduml' %f
Icon=/home/grischa/Programme/MagicDraw_UML_Standard_Edition/magicdraw.png
NoDisplay=false
StartupNotify=true
Terminal=false

Diese Datei können wir nun im Nautilus heraus suchen und einfach in den Launcher ziehen. Es erhält dann das angegebene Icon und startet das UML Tool. Bis hier hin ist das noch Standard, auf diese Weise kann man für jedes Programm eigene Launcher erzeugen, wenn man möchte.

Den Namen des Java Threads im Launcher angeben

Der so erzeugte Launcher reagiert aber wie oben beschrieben mit einem win0 Eintrag im Launcher, und hier kommt der eigentliche Trick: Wenn die Application gestartet ist, starten wir zusätzlich einen Terminal. In diesem geben wir folgendes ein:

xprop WM_CLASS

Wenn wir danach Enter drücken, verändert sich der Maus Cursor. Mit diesem klicken wir nun in das Fenster der gestarteten Java Anwendung. Der Terminal sieht (in meinem Beispiel des Tools MagicDraw) dann so aus:

grischa@grischa-T510:~$ xprop WM_CLASS
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "com-nomagic-launcher-Launcher"

Der letzte Eintrag "com-nomagic-launcher-Launcher" ist das, was wir gesucht haben, der Name der eigentlich gestarteten Anwendung.

Nun editieren wir noch einmal die obige Desktop Datei und fügen folgende zusätzliche Zeile ein:

StartupWMClass=com-nomagic-launcher-Launcher

Evtl. muss man sich danach noch mal ausloggen und wieder anmelden, aber der Launcher verhält sich nun wie jeder andere Launcher auch: Er bekommt die Markierung, wenn die Anwendung gestartet wurde (anstatt einen temporären Eintrag zu erzeugen, der die Markierung bekommt) und holt die Anwendung in den Vordergrund, wenn man noch einmal darauf klickt.

Ein Detail Problem gelöst, mal sehen ob ich meine weiteren auch bald abhaken kann. Anmerken möchte ich noch, dass das nicht alle Java Programme betrifft. Um genau zu sein, war MagicDraw bei mir bisher sogar die einzige Java Anwendung, die sich so verhielt. Eclipse, Azureus und Freemind hatten das nicht. Vielleicht liegt das daran, dass die drei genannten alle SWT benutzen, MagicDraw jedoch ein uraltes (ich vermute) Swing Programm ist.

Trackbacks

Rootbrian_

Rootbrian_ on : Rootbrian_ via Twitter

Continue reading "Rootbrian_ via Twitter"
RT @gbrockhaus gebloggt: Java Programme im #Unity Launcher http://t.co/0USADFVm #tipp #ubuntu
Grischa

Grischa on : Eigene Anwendungen im Unity Dash finden

Continue reading "Eigene Anwendungen im Unity Dash finden"
Ein weiteres kleines Detail Problem mit Unity konnte ich auch lösen. Wenn man weiß, wie es geht, ist die Lösung sogar ziemlich simpel. Ich hatte mir einige eigene Desktop Dateien für den Launcher erzeugt, welche ich auch über das

Comments

Display comments as Linear | Threaded

Schmidi

Schmidi on :

Danke, war sehr hilfreich!

N. Blum

N. Blum on :

Super Info

Das mit dem win0 kommt bei gar nicht in der 12.04

Meine Java Anwendung funktioniert schon mit Teil1 perfekt

Danke

Grischa

Grischa Read on twitter: on :

Das trat bei mir auch in der Tat nicht bei allen Java Anwendungen auf, es war bei mir sogar nur bei einer so. Eclipse hat das z.B. nicht, obwohl das ja auch eine Java Anwendung ist.

Grischa wrote about: Zurück zu Ubuntu Ocelot

Add Comment

E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
This blog allows you to add audio comments using audioboo.fm. Create a new boo and enter the link to the page into the boo field.
record
If you enter your twitter name, your timeline will get linked to your comment.
Promote one of your recent articles
This blog allows you to announce one of your recent blog articles with your comment. Please enter your the corresponding URL as homepage and a selection box will pop up letting you choose an article. (Javascript needed)
(Requirements: 1 comments written)
Standard emoticons like :-) and ;-) are converted to images.
tweetbackcheck