2014-01-18 5 views
5

Ich richte Ubuntu 13.10 auf einem Dell Desktop ein. Ich habe sqldeveloper installiert und eine sqldeveoper.desktop-Datei in meinem Desktop/Verzeichnis erstellt, um das Programm zu starten. Siehe Code unten. Mein Problem ist folgendes: Auf meinem Desktop-Bildschirm sehe ich die .desktop-Datei als ein SQL-Entwickler-Symbol (das runde db-Symbol mit einem grünen Pfeil darauf). Ich doppelklicke auf das Symbol und das Programm startet. Das Symbol erscheint in meiner Unity-Leiste und das Bild wird dann zu einem '?' Fragezeichensymbol.Wie bekomme ich das sqldeveloper Icon in meiner Einheitsleiste?

Irgendwelche Ideen, warum das passiert? Das Icon.png (Bild) befindet sich an dem Ort, auf den die Desktop-Datei zeigt. Vielleicht sieht die Datei den Pfad nicht korrekt in der Unity-Leiste?

sqldeveloper.desktop Code:

[Desktop Entry] 
Type=Application 
Version=1.0 
Name=SQL Developer 
GenericName=Oracle Development Environment 
Comment=Proprietary environment for managing Oracle databases 
Exec=sqldeveloper %F 
Icon=/opt/sqldeveloper/icon.png 
Terminal=false 
Categories=Development;IDE; 
StartupNotify=true 

Vielen Dank für jede Richtung in diesem. JohnC

Antwort

0

Angenommen, Sie haben das Symbol bereits an der Position sqldeveloper.desktop (Sie können versuchen ls /opt/sqldeveloper/icon.png von Terminal).

Fügen Sie einfach diese Zeile Datei sqldeveloper.desktop

StartupWMClass=oracle-ide-boot-Launcher 

Und vergessen Sie nicht den Befehl sudo update-desktop-database nach dem Speichern der Änderungen auszuführen.

Dieser arbeitete für mich https://askubuntu.com/questions/458554/how-to-install-sql-developer-on-ubuntu-14-04

2

Hintergrund

In Version 4.1.5 von SQL Developer, der Splash-Screen hat WM_CLASS (STRING) = oracle-ide-OSGi-boot-OracleIdeLauncher. Wenn Sie diesen Wert als Wert für den Schlüssel StartupWMMClass in der .desktop-Datei festlegen, funktioniert dies zunächst einwandfrei, während der Begrüßungsbildschirm sichtbar ist.

Das Problem kommt, wenn das Hauptfenster von SQL Developer erscheint, weil dieses zweite Fenster den generischen WM_CLASS (STRING) = sun-AWT-X11-XFramePeer nur hat. Das Festlegen dieses allgemeinen Werts für StartupWMClass in Ihrer Desktop-Datei funktioniert aus Gründen, die ich nicht vollständig verstehe, nicht.

Eine funktionierende Lösung für dieses Problem ist eine .desktop-Datei, die ein benutzerdefiniertes Bash-Skript verwendet. Das benutzerdefinierte Skript startet das Startskript von Oracle asynchron, wartet dann, bis das Hauptfenster angezeigt wird, und ändert schließlich seine WM_CLASS programmgesteuert auf denselben Wert, der vom Begrüßungsbildschirm verwendet wird. Auf diese WM_CLASS wird auch von der .desktop-Datei verwiesen.

Benutzerdefinierte Bash-Skript

Shop dies als $ HOME/bin/launch-sqldeveloper.sh

#!/bin/bash 
JAVA_HOME=/usr/lib/jvm/java-8-oracle 
SQLD_HOME=/opt/sqldeveloper 

# Launch Oracle's startup script asynchronously 
env JAVA_HOME=$JAVA_HOME $SQLD_HOME/sqldeveloper.sh $* & 

i="0" 
while [ $i -lt 20 ] 
do 

# Try to get SQL Developer window ID 
WIN_ID=$(xwininfo -root -tree \ 
| grep -i 'oracle sql developer' \ 
| grep -oP '(0x[a-f0-9]+)') 

# If it is non-empty (window already exists) 
if [ -n "$WIN_ID" ] 
then 
    echo "WIN_ID=$WIN_ID" 

# Set WM_CLASS property of main window to same value 
# that is used for the launcher window 
    xprop -id $WIN_ID \ 
      -f WM_CLASS 8s \ 
      -set WM_CLASS "oracle-ide-osgi-boot-OracleIdeLauncher" 

# and exit loop 
    break 
else 

# Otherwise sleep for one second and increment loop counter 
    echo "Sleeping: $i" 
    sleep 1s 
    i=$[$i+1] 

fi 
done 
echo "Done" 

.desktop-Datei

[Desktop Entry] 
Type=Application 
Terminal=false 
Name=SQL Developer 
Exec=sh -c '$HOME/bin/launch-sqldeveloper.sh %F' 
Icon=/opt/sqldeveloper/icon.png 
StartupWMClass=oracle-ide-osgi-boot-OracleIdeLauncher 
+1

FYI, eine bessere Symboldatei zu finden ist '/ opt/sqldeveloper/sqldeveloper/bin/SQLDeveloperIcons.icns'. Es ist die macOS-Ikonendatei und wird mit der Größe des Symbols skaliert, plus es hat keinen weißen Hintergrund. – bsara

+0

Das ist großartig! (Die Alternative war so sehr nervig ...) – inanutshellus