Как отобразить значок sqldeveloper на панели единства

Я устанавливаю Ubuntu 13.10 на рабочий стол Dell. Я установил sqldeveloper и создал файл sqldeveoper.desktop в папке Desktop/ для запуска программы. См. код ниже. Моя проблема заключается в следующем: на экране рабочего стола я вижу файл .desktop в виде значка sqldeveloper (круглый значок базы данных с зеленой стрелкой на нем). Я дважды щелкаю значок, и программа запускается. Значок появляется на панели 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

Спасибо за любое направление в этом. ДжонС


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 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