Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Icons 如何让sqldeveloper图标显示在我的unity栏中_Icons_Ubuntu 13.10_Ubuntu Unity - Fatal编程技术网

Icons 如何让sqldeveloper图标显示在我的unity栏中

Icons 如何让sqldeveloper图标显示在我的unity栏中,icons,ubuntu-13.10,ubuntu-unity,Icons,Ubuntu 13.10,Ubuntu Unity,我正在戴尔桌面上安装Ubuntu 13.10。我已经安装了sqldeveloper,并在我的桌面/dir中创建了一个sqldevoper.desktop文件来启动程序。请参阅下面的代码。我的问题是:在我的桌面屏幕上,我看到.desktop文件是一个sqldeveloper图标(圆形db图标上有一个绿色箭头)。我双击图标,程序启动。图标出现在我的统一栏中,然后图像变为“?”问号符号 你知道为什么会这样吗?icon.png(图像)位于桌面文件指向的位置。可能文件没有从Unity栏正确看到路径 sql

我正在戴尔桌面上安装Ubuntu 13.10。我已经安装了sqldeveloper,并在我的桌面/dir中创建了一个sqldevoper.desktop文件来启动程序。请参阅下面的代码。我的问题是:在我的桌面屏幕上,我看到.desktop文件是一个sqldeveloper图标(圆形db图标上有一个绿色箭头)。我双击图标,程序启动。图标出现在我的统一栏中,然后图像变为“?”问号符号

你知道为什么会这样吗?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

假设您已经验证了图标位于sqldeveloper.desktop指向的位置(您可以从终端尝试
ls/opt/sqldeveloper/icon.png

只需将这一行添加到sqldeveloper.desktop文件

StartupWMClass=oracle-ide-boot-Launcher
保存更改后,不要忘记运行命令
sudo update desktop database

这对我来说很有用 在SQL Developer的4.1.5版中,启动屏幕具有WM_类(字符串)=oracle ide osgi引导OracleIdeLauncher。在启动屏幕可见时,将此设置为.desktop文件中的键StartupWMClass的值首先可以正常工作

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

这个问题的一个有效解决方案是使用自定义bash脚本的.desktop文件。自定义脚本异步启动Oracle的启动脚本,然后等待主窗口出现,最后以编程方式将其WM_类更改为初始屏幕使用的相同值。该WM_类也由.desktop文件引用

自定义bash脚本 将其存储为$HOME/bin/launch-sqldeveloper.sh

#/bin/bash
JAVA_HOME=/usr/lib/jvm/JAVA-8-oracle
SQLD_HOME=/opt/sqldeveloper
#异步启动Oracle的启动脚本
env JAVA_HOME=$JAVA_HOME$SQLD_HOME/sqldeveloper.sh$*&
i=“0”
而[$i-lt 20]
做
#尝试获取SQL开发人员窗口ID
WIN_ID=$(xwininfo-root-tree)\
|grep-i“oracle sql开发人员”\
|grep-oP'(0x[a-f0-9]+))
#如果为非空(窗口已存在)
如果[-n“$WIN_ID”]
然后
echo“WIN\u ID=$WIN\u ID”
#将主窗口的WM_类属性设置为相同的值
#用于启动程序窗口的
xprop-id$WIN\u id\
-f WM_8s级\
-设置WM_类“oracle ide osgi引导OracleIdeLauncher”
#和出口回路
打破
其他的
#否则,睡眠1秒并递增循环计数器
回声“睡眠:$i”
睡眠1秒
i=$[$i+1]
fi
完成
回音“完成”
.桌面文件
[桌面输入]
类型=应用程序
终端=假
Name=SQL开发人员
Exec=sh-c'$HOME/bin/launch-sqldeveloper.sh%F'
Icon=/opt/sqldeveloper/Icon.png
StartupWMClass=oracle ide osgi引导OracleIdeLauncher

FYI,可以在
/opt/sqldeveloper/sqldeveloper/bin/SQLDeveloperIcons.icns
找到更好的图标文件。这是macOS图标文件,它会随着图标的大小进行缩放,而且它没有白色背景。这太棒了!(另一种选择是如此令人讨厌……)