2014-01-18 4 views
5

Dell 데스크탑에 Ubuntu 13.10을 설치 중입니다. sqldeveloper를 설치했고 프로그램을 시작하기 위해 내 Desktop/dir에 sqldeveoper.desktop 파일을 만들었습니다. 아래 코드를 참조하십시오. 내 문제는 이것입니다 : 데스크톱 화면에서 .desktop 파일이 sqldeveloper 아이콘 (녹색 화살표가있는 둥근 db 아이콘)으로 표시됩니다. 아이콘을 두 번 클릭하면 프로그램이 실행됩니다. 아이콘이 내 Unity 바에 나타나고 이미지가 '?'로 바뀝니다. 물음표 기호입니다.내 유니티 바에 sqldeveloper 아이콘을 표시하는 방법

왜 그런가? icon.png (이미지)는 데스크톱 파일이 가리키는 위치에 있습니다. 어쩌면 파일이 유니티 바에서 경로를 올바르게 볼 수 없습니까?

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 

감사합니다. 이미 아이콘이 sqldeveloper.desktop가 가리키는 위치에 확인한다고 가정 JohnC

답변

2

배경

SQL 개발자 버전 4.1.5에서, 시작 화면이 WM_CLASS (STRING) 오라클-IDE-OSGi에서 부팅 OracleIdeLauncher을 =이있다. .desktop 파일에서 키 StartupWMClass의 값으로 설정하면 처음에는 시작 화면이 표시되는 동안 정상적으로 작동합니다. SQL 개발자의 메인 윈도우가 나타날 때이 두 번째 창은 일반 WM_CLASS (STRING) = 태양 AWT-X11-XFramePeer 만 가지고 있기 때문에

문제는 온다. .desktop 파일의 StartupWMClass에 대해이 일반 값을 설정하면 완전히 이해할 수없는 이유로 작동하지 않습니다.

이 문제점의 해결 방법은 사용자 정의 bash 스크립트를 사용하는 .desktop 파일입니다. 커스텀 스크립트는 오라클의 startup 스크립트를 비동기식으로 실행 한 다음 메인 윈도우가 나타날 때까지 기다렸다가 최종적으로 스플래시 화면에서 사용하는 것과 동일한 값으로 WM_CLASS를 프로그래밍 방식으로 변경합니다. 그 WM_CLASS는 .desktop 파일에 의해 참조됩니다.

사용자 정의 bash는 스크립트

저장이 $ HOME/빈으로/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 
+1

가 참고로, 더 나은 아이콘 파일에서 찾을 수 있습니다 파일의 .desktop '/ opt/sqldeveloper/sqldeveloper/bin/SQLDeveloperIcons.icns'을 입력하십시오. 그것은 macOS 아이콘 파일이며 아이콘의 크기와 함께 확장되며, 흰색 배경이 없습니다. – bsara

+0

대단하군요! (대안은 매우 짜증나고 ...) – inanutshellus