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_ am : Rootbrian_ via Twitter

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

Grischa am : Eigene Anwendungen im Unity Dash finden

"Eigene Anwendungen im Unity Dash finden" vollständig lesen
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

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Schmidi

Schmidi am :

Danke, war sehr hilfreich!

N. Blum

N. Blum am :

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 Auf Twitter lesen: am :

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 schrieb auch: Zurück zu Ubuntu Ocelot

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Dieses Blog erlaubt Dir, Audio Kommentare über audioboo.fm hinzuzufügen. Erstelle einen neuen Boo und gib hier den Link auf die Seite Deines Boos ein.
record
Wenn Du Deinen Twitter Namen eingibst wird Deine Timeline in Deinem Kommentar verlinkt.
Bewirb einen Deiner letzten Artikel
Dieses Blog erlaubt Dir mit Deinem Kommentar einen Deiner letzten Artikel zu bewerben. Bitte gib Deine Blog URL als Homepage ein, dann wird eine Auswahl erscheinen, in der Du einen Artikel auswählen kannst. (Javascript erforderlich)
(Bedingung: 1 Kommentare geschrieben)
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
tweetbackcheck