실행기에서 "시작된"Java 프로그램에 대한 중복 아이콘을 제거하려면 어떻게해야합니까?


45

Natty의 Unity 런처에서 Java 프로그램 (예 : IntelliJ IDEA 및 Crashplan)을 시작할 때 중복 아이콘이 표시됩니다 (이미지 참조). IntelliJ의 경우 .desktop 파일을 만들었습니다. Crashplan의 경우 .desktop 파일이 응용 프로그램과 함께 제공됩니다. .desktop 파일 (또는 다른 곳)에서이 문제가 발생하지 않도록 변경할 수있는 것이 있습니까? 통일 자체에 대한 버그 보고서를 찾을 수 없지만 Gnome-Do / Docky와 같은 프로그램에는 버그 보고서가 있으며이를 방지하기 위해 응용 프로그램을 내부적으로 변경해야했습니다.

중복 아이콘이 이미지에서 첫 번째 아이콘은 .desktop 파일에서 생성 된 것이고 두 번째 아이콘은 시작한 후입니다. 응용 프로그램을 닫으면 두 번째 아이콘이 사라집니다.

사용자 정의 IntelliJ .desktop 파일

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=/opt/idea/bin/idea128.png
Name[en_US]=IntelliJ IDEA
Exec=/opt/idea/bin/idea.sh
Name=IntelliJ IDEA
Icon=/opt/idea/bin/idea128.png
StartupNotify=true

Crashplan은 .desktop 파일을 제공합니다

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=CrashPlan
Categories=;
Comment=CrashPlan Desktop UI
Comment[en_CA]=CrashPlan Desktop UI
Exec=/usr/local/crashplan/bin/CrashPlanDesktop
Icon=/usr/local/crashplan/skin/icon_app_64x64.png
Hidden=false
Terminal=false
Type=Application
GenericName[en_CA]=

1
Unity에서 Minecraft를 시작할 때 비슷한 문제가 발생합니다
Marco Ceppi

2
감사합니다. 문제는 주류 사용자에게 영향을 미칩니다 (AWN 및 기타 독 애호가에게는 문제였습니다). Java (Java뿐만 아니라) 응용 프로그램 개발자 가이 문제를 해결하기를 바랍니다. 그건 그렇고, Eclipse는 그런 문제가없는 것처럼 보이지만 MySQL Workbench 및 OpenOffice.org (LiberOffice가 등장하기 전에 AWN을 사용하려고 시도했을 때) 에서이 문제를 해결하지 못했습니다.
Ivan

문제는 내가 기억할 수있는 한 응용 프로그램이 바보 같은 식별 할 수없는 WM_CLASS 이름을 사용하는 것입니다.
Ivan

그러한 문제가 없다면 Unity 또는 AWN을 사용하십시오. 그러나 모든 응용 프로그램이 완벽하게 지원하는 것은 아니지만 기존 작업 표시 줄을 선호합니다 (반 솔루션이 싫어하기 때문에).
Ivan

답변:


47

.desktop 파일에 StartupWMClass 문자열을 추가 하십시오. xprop이 클래스를 얻으려면 command를 사용하십시오 . 예를 들면 다음과 같습니다.

$ xprop|grep WM_CLASS
 WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "java-lang-Thread"

$ cat /usr/share/applications/PHPStorm.desktop | grep StartupWM
StartupWMClass=sun-awt-X11-XFramePeer

스레드 에서 더 많은 불만 (AWN에 관한 것이지만 Unity에서도 작동합니다)


1
이것은 Crashplan StartupWMClass=CrashPlan에는 훌륭 하지만 IntelliJ는 좀 더 설득력이 필요했습니다. 제대로 작동하려면 이 정보 ( blog.jteam.nl/2011/01/09/… )를 사용해야 했습니다.
Tim

IntelliJ를 업데이트하기 위해 작은 것으로서 idea.sh 스크립트가 아닌 idea.vmoptions를 직접 수정했습니다. -javaagent:agent.jar=IntelliJ_IDEA파일에 추가 하십시오.
Tim

1
IntelliJ 11에서는 agent.jar이 더 이상 필요하지 않습니다. StartupWMClass = jetbrains-idea

그리고 jetbrains-idea-ceCommunity Edition에도 적용됩니다. 추신 : 팀 감사합니다. 451F.
Synesso

2
@Ivan : 둘 다 사용할 필요는 없으며 어느 쪽이든 사용할 수 있습니다 . 그래서 경우는 jetbrains-idea고유 한, 당신이 원하는 하나를 사용하는 것입니다 대신sun-awt-X11-XFramePeer
MestreLion

9

Ubuntu 11.10의 Intellij Idea 11의 경우 아이디어의 .desktop 파일에 다음 줄을 추가해야합니다.

StartupWMClass=jetbrains-idea

4

Java 프로그램 인 SQLDeveloper 에서이 문제를 해결할 수있었습니다.

xprop (그리고 SQLDeveloper 창을 클릭)을 사용하여 다음과 같은 출력 줄을 찾았습니다.

WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "oracle-ide-boot-Launcher"

위에서 발견 한 의견과 https://bugs.launchpad.net/unity/+bug/757991 에서 로컬 sqldeveloper.desktop 파일에 다음 줄을 추가했습니다.

StartupWMClass=oracle-ide-boot-Launcher

1
SQLDeveloper 버전 4에서 WM_CLASS는 "sun-awt-X11-XFramePeer", "oracle-ide-osgi-boot-OracleIdeLauncher"로 변경되었으므로 .desktop 매개 변수는 다음과 같이 변경되어야합니다. StartupWMClass = oracle-ide-osgi-boot-OracleIdeLauncher
Pisu

2

나는 이클립스 4.x 및 3.X에 대한 수정 문서화 한 여기를 .

이 솔루션은 glx-dock (일명 Cairo-dock) 용이지만에 의존하는 모든 작업 표시 줄에서 작동합니다 WM_CLASS.

이클립스의 경우 출시는 두 단계 프로세스입니다.

        여기에 이미지 설명을 입력하십시오

기본적으로 필요한 것은 Eclipse 버전에 적용 가능한 Eclipse 브랜딩 plugin.xml을 식별하고 application name특성을 수정하는 것 입니다. 워크 벤치 기본 창이 작성되면 Jface가 SWT를 호출하여 Display.setNameWM_CLASS를 설정합니다. 런처에 대해 선언 된 WM_CLASS 인 경우 실행중인 인스턴스는 도크 런처를 찾습니다.

eclipse -clean처음에하는 것을 잊지 마십시오 .

탭핑도 훨씬 향상되었습니다.

여기에 이미지 설명을 입력하십시오


0

IntelliJ IDEA는 스크립트 ($ IDEA_HOME / bin / idea.sh)에 의해 시작됩니다. 실행기를 클릭하면 스크립트가 실행되어 Java 실행 파일이 시작되고 즉시 종료됩니다. Unity는 시작한 응용 프로그램 (스크립트)이 이미 종료되었음을 확인했습니다. 이것이 첫 번째 IDEA 아이콘에 표시기가없는 이유입니다. 그러나 현재 실행중인 다른 응용 프로그램 (런처에서 시작한 실행 파일)이 실행 중이므로 두 번째 IDEA 아이콘이 표시됩니다.

이 동작에 대한 픽스가 곧 구현되기를 희망하지만 매우 간단한 것은 아닙니다. 창과 연결해야하는 실행기와 손으로 유지 관리하는 목록 연결이 필요합니다.


0

CrashPlan의 경우 앱 파일 CrashPlan.desktop을 / usr / share / applications로 이동해보십시오. 거기에있는 앱만 실행기에 잠글 수 있습니다.

sudo mv ~/Desktop/CrashPlan.desktop /usr/share/applications/.

그런 다음 대시를 사용하여 CrashPlan을 실행하십시오.

IntelliJ IDEA와 비슷한 작업을 수행 할 수는 있지만 스크립트를 실행 중이므로 제대로 작동하는지 확실하지 않습니다.


~ / .local / share / applications에 .desktop 파일이 모두 있으며 실행기에 파일을 잠그는 데 아무런 문제가 없습니다. 나는 당신이 런처에서 실행 가능하지만 잠겼을 때 아직 실행되지 않았다는 것을 의미한다고 가정합니다.
Tim

흠. 발사기에 배치 할 수 없습니다. 나는 alacarte (메뉴 편집기)로 내 것을 만들었습니다. 어쩌면 ~ / .local이 다른 곳에 연결되어 있기 때문일 수 있습니다 ... 앱에 실행 삼각형 (왼쪽)과 활성 삼각형 (오른쪽)이 표시됩니까?
idbrii

아이콘의 "시작된"버전의 경우 예. 첫 번째 샷에서 연속 삼각형을 볼 수 있습니다. 나는 더 많은 연구를했고 중복 아이콘에 대한 해결 방법이 있다고 생각합니다. 여기에 답변을 게시합니다.
Tim

@ 451F는 대답으로 나를 이겼습니다 .IntelliJ가 더 잘 작동하는 방법에 대한 의견에 그의 답변에 약간을 추가했습니다.
Tim

0

다른 답변은 저에게 효과적이지 않았지만 결국에는 더 간단한 해결책을 찾았습니다.

Intellij-Idea를 열고 상단 막대에서 도구 드롭 다운 메뉴를 찾으십시오 . 그런 다음 Create Desktop Entry 버튼을 선택하십시오 . .local/share/applications폴더 에 제대로 작동하는 .desktop 항목이 만들어 지며 사용중인 데스크톱 환경에 따라 인식됩니다. 중복 아이콘을 만들지 않으며 원하는 경우 아이콘을 변경할 수도 있습니다.

불행히도 nosplash인수를 사용하면 중복 아이콘 문제가 발생하므로 어떻게 해결할 수 있는지 잘 모르겠습니다.


0

Ubuntu 17.04 (Numix 아이콘 포함)에서 IntelliJ IDEA 2017.2.5를 설치 한 후 프로그램의 .desktop 파일에서 행 StartupWMClass=jetbrains-idea을 변경 StartupWMClass=jetbrains-idea-ce하여 중복 아이콘이 사라져야했습니다.

"ce"는 내가 가지고있는 Community Edition의 약자이므로 .desktop 파일에서이 속성의 값에 원래 "ce"접미사가없는 이유를 모르겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.