如何让sqldeveloper图标显示在我的统一栏中

时间:2014-01-18 17:12:45

标签: icons ubuntu-13.10 ubuntu-unity

我正在戴尔桌面上安装Ubuntu 13.10。我已经安装了sqldeveloper并在我的Desktop / dir中创建了一个sqldeveoper.desktop文件来启动该程序。见下面的代码。我的问题是:在我的桌面屏幕上,我看到.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

2 个答案:

答案 0 :(得分:2)

背景

在SQL Developer 4.1.5版中,启动画面有 WM_CLASS(STRING)= oracle-ide-osgi-boot-OracleIdeLauncher 。将此设置为.desktop文件中的关键StartupWMClass的值将首先正常工作,同时可以看到启动画面。

问题出现在SQL Developer的主窗口出现时,因为第二个窗口只有通用的 WM_CLASS(STRING)= sun-awt-X11-XFramePeer 。在.desktop文件中为StartupWMClass设置此通用值并不是出于我不完全理解的原因而工作。

此问题的解决方案是使用自定义bash脚本的.desktop文件。自定义脚本异步启动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

答案 1 :(得分:0)

假设您已经验证图标位于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