Как да накарам иконата на sqldeveloper да се показва в моята лента за единство

Настройвам Ubuntu 13.10 на десктоп Dell. Инсталирах sqldeveloper и създадох файл sqldeveoper.desktop в моя Desktop/ dir, за да стартирам програмата. Вижте кода по-долу. Проблемът ми е следният: на екрана на работния плот виждам файла .desktop като икона на sqldeveloper (кръглата икона на db със зелена стрелка върху нея). Щраквам два пъти върху иконата и програмата се стартира. Иконата се появява в моята лента на Unity и след това изображението се променя на '?' символ на въпросителен знак.

Някакви идеи защо се случва това? Icon.png (изображение) е на мястото, към което сочи файлът на работния плот. Може би файлът не вижда пътя правилно от лентата на Unity?

sqldeveloper.desktop код:

[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

Благодаря за всяка насока в това. JohnC


person John Cowan    schedule 18.01.2014    source източник


Отговори (2)


Заден план

Във версия 4.1.5 на SQL Developer началният екран има WM_CLASS(STRING) = oracle-ide-osgi-boot-OracleIdeLauncher. Задаването на това като стойност за ключ StartupWMClass във вашия .desktop файл ще работи добре в началото, докато се вижда началният екран.

Проблемът идва, когато се появи главният прозорец на SQL Developer, защото този втори прозорец има само общия WM_CLASS(STRING) = sun-awt-X11-XFramePeer. Задаването на тази обща стойност за StartupWMClass във вашия .desktop файл не работи по причини, които не разбирам напълно.

Работещо решение за този проблем е .desktop файл, който използва персонализиран bash скрипт. Персонализираният скрипт стартира асинхронно стартовия скрипт на Oracle, след това изчаква да се появи главният прозорец и накрая променя своя WM_CLASS програмно на същата стойност, използвана от началния екран. Този WM_CLASS също се споменава от .desktop файла.

Персонализиран bash скрипт

Съхранявайте това като $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 файл

[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
person lbo    schedule 05.03.2017
comment
За информация, по-добър файл с икони може да се намери на /opt/sqldeveloper/sqldeveloper/bin/SQLDeveloperIcons.icns. Това е файлът с икони на macOS и ще се мащабира с размера на иконата, плюс това няма бял фон. - person bsara; 24.05.2017
comment
Това е страхотно! (Алтернативата беше толкова досадна...) - person inanutshellus; 26.01.2018

Ако приемем, че вече сте потвърдили, че иконата е на мястото, посочено от sqldeveloper.desktop (можете да опитате ls /opt/sqldeveloper/icon.png от терминала).

Просто добавете този ред към файла sqldeveloper.desktop

StartupWMClass=oracle-ide-boot-Launcher

И не забравяйте да изпълните командата sudo update-desktop-database след като запазите промените.

Това проработи за мен https://askubuntu.com/questions/458554/how-to-install-sql-developer-on-ubuntu-14-04

person Riyaz Parve    schedule 13.07.2016