При запуске Java-программ (таких как IntelliJ IDEA и Crashplan) в лаунчере Natty's Unity отображаются дублированные значки (см. Изображение). Для IntelliJ я создал файл .desktop, для Crashplan файл .desktop поставляется вместе с приложением. Есть ли что-то, что можно изменить в файлах .desktop (или где-то еще), чтобы это не происходило? Я не смог найти отчет об ошибке для самой Unity, но такие программы, как Gnome-Do / Docky, имеют отчеты об ошибках и должны были внести внутренние изменения в свои приложения, чтобы предотвратить это.
На этом изображении 1-й значок создан из файла .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]=
Ответы:
Добавьте строку StartupWMClass в ваш файл .desktop. Используйте
xprop
команду, чтобы получить этот класс. Например :Больше деталей в этой теме (это о AWN, но работает и для Unity)
источник
StartupWMClass=CrashPlan
но IntelliJ нужно было немного убедительнее. Я должен был использовать информацию из этого ( blog.jteam.nl/2011/01/09/… ), чтобы заставить это работать должным образом.-javaagent:agent.jar=IntelliJ_IDEA
в файл.jetbrains-idea-ce
для Community Edition. PS спасибо большое за Тим, 451F.jetbrains-idea
это единственный один, тот , который вы хотите использовать его вместо того, чтобы изsun-awt-X11-XFramePeer
Для Intellij Idea 11 под Ubuntu 11.10 необходимо добавить в файл идеи .desktop следующую строку:
источник
Мне удалось это исправить для SQLDeveloper, который является Java-программой:
Используя xprop (а затем щелкнув окно SQLDeveloper), я нашел следующую строку вывода:
Основываясь на комментариях, найденных выше и в https://bugs.launchpad.net/unity/+bug/757991 , я добавил следующую строку в мой локальный файл sqldeveloper.desktop:
источник
Я задокументировал исправление для Eclipse 4.x и 3.x здесь .
Это решение предназначено для glx-dock aka Cairo-dock, но работает для всех панелей задач, на которые опирается
WM_CLASS
.В случае затмения запуск также состоит из двух этапов.
По сути, вам нужно определить Eclipse Branding Plugin.xml, применимый к вашей версии Eclipse, и изменить
application name
свойство. Когда будут созданы главные окна рабочей среды, Jface вызовет SWT,Display.setName
и это установит вам WM_CLASS. Если это объявленный WM_CLASS для вашей панели запуска, то запущенные экземпляры найдут свою панель запуска.Не забудьте сделать
eclipse -clean
в первый раз.Вкладка через также значительно улучшена.
источник
IntelliJ IDEA запускается скриптом ($ IDEA_HOME / bin / idea.sh). При щелчке на его панели запуска выполняется скрипт, который запускает исполняемый файл Java и сразу же завершает работу. Unity замечает, что приложение, которое вы запустили (скрипт), уже закрылось - поэтому на первом значке IDEA нет индикатора. Однако в настоящий момент запущено другое (из исполняемого файла, запускаемого модулем запуска) приложение, и именно поэтому отображается второй значок IDEA.
Я надеюсь, что исправление этого поведения будет реализовано в ближайшее время, но оно не очень простое. Это должно было бы включать поддерживаемые вручную списки ассоциаций между окнами и программами запуска, с которыми они должны быть связаны.
источник
Для CrashPlan вы можете попробовать переместить файл приложения CrashPlan.desktop в / usr / share / Applications. Только приложения, которые там живут, могут быть заблокированы в панели запуска.
Затем попробуйте использовать тире для запуска CrashPlan.
Возможно, вы сможете сделать что-то подобное с IntelliJ IDEA, но так как он запускает скрипт, я не уверен, будет ли он работать правильно.
источник
Ни один из других ответов не сработал для меня, но в итоге я нашел еще более простое решение.
Откройте Intellij-Idea и в верхней панели найдите выпадающее меню инструментов . Затем нажмите кнопку « Создать запись на рабочем столе» . Он создаст правильно работающую запись .desktop в вашей
.local/share/applications
папке, которая должна распознаваться любой рабочей средой, которую вы используете. Это не делает дубликат значка, и вы даже можете изменить значок, если хотите.К сожалению, использование
nosplash
аргумента возвращает проблему с дублирующимся значком, поэтому я не уверен, как это исправить.источник
После установки IntelliJ IDEA 2017.2.5 под Ubuntu 17.04 (с иконками Numix) мне пришлось изменить строку
StartupWMClass=jetbrains-idea
наStartupWMClass=jetbrains-idea-ce
в файле .desktop программы, чтобы дублированный значок исчез.Я предполагаю, что «ce» означает «Community Edition», которое у меня есть, поэтому я не знаю, почему значение этого свойства в файле .desktop изначально не имело суффикса «ce».
источник