При запуске Java-программ (таких как IntelliJ IDEA и Crashplan) в лаунчере Natty's Unity отображаются дублированные значки (см. Изображение). Для IntelliJ я создал файл .desktop, для Crashplan файл .desktop поставляется вместе с приложением. Есть ли что-то, что можно изменить в файлах .desktop (или где-то еще), чтобы это не происходило? Я не смог найти отчет об ошибке для самого Unity, но такие программы, как 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]=
Добавьте строку StartupWMClass в файл .desktop. Используйте команду xprop
, чтобы получить этот класс. Например :
$ 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)
Для Intellij Idea 11 под Ubuntu 11.10 необходимо добавить в файл идеи .desktop следующую строку:
StartupWMClass=jetbrains-idea
Мне удалось исправить это для SQLDeveloper, который является программой на Java:
Используя 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
Я задокументировал исправление для Eclipse 4.x и 3.x здесь .
Это решение предназначено для glx-dock, также известного как Cairo-dock, но работает для все панели задач полагаются на WM_CLASS
.
В случае затмения запуск также представляет собой двухэтапный процесс.
По сути, вам нужно идентифицировать Eclipse branding plugin.xml, применимый к вашей версии Eclipse, и изменить свойство имя приложения
. Когда основные окна рабочей среды созданы, Jface вызовет SWT Display.setName
, и это установит вам WM_CLASS. Если это объявленный WM_CLASS для вашей программы запуска, то запущенные экземпляры найдут свою панель запуска док-станции.
Не забудьте выполнить eclipse -clean
в первый раз.
Переход через табуляцию также занимает много времени. улучшено.
После установки IntelliJ IDEA 2017.2.5 под Ubuntu 17.04 (с иконками Numix) мне пришлось изменить строку StartupWMClass = jetbrains-idea
на StartupWMClass = jetbrains- idea-ce
в файле .desktop программы, чтобы значок-дубликат исчез.
Я полагаю, что «ce» означает Community Edition, которая у меня есть, поэтому я не знаю, почему значение этого свойства в файле. Файл desktop изначально не имел суффикса "ce".
Ни один из других ответов у меня не помог, но в конце концов я нашел еще более простое решение.
Откройте Intellij-Idea и на верхней панели найдите инструменты раскрывающееся меню. Затем нажмите кнопку Создать запись на рабочем столе . Он создаст правильно работающую запись .desktop в вашей папке .local / share / applications
, которая должна распознаваться любой средой рабочего стола, которую вы используете. Он не создает повторяющихся значков, и вы даже можете изменить значок, если хотите.
К сожалению, использование аргумента nosplash
возвращает проблему дублирования значков, поэтому я не знаю, как это исправить.
IntelliJ IDEA запускается скриптом ($IDEA_HOME/bin/idea.sh). При нажатии кнопки запуска выполняется скрипт, который запускает java исполняемый файл и сразу же выходит из системы. Unity замечает, что запущенное вами приложение (скрипт) уже вышло - поэтому на первой иконке IDEA нет индикатора. Однако в данный момент запущено другое (из запускаемого запускающим устройством) приложение - и поэтому на первой иконке IDEA отображается вторая иконка.
Надеюсь, что исправление такого поведения будет реализовано в ближайшее время - но это не очень просто. Придется вручную вести список ассоциаций между окнами и пусковыми установками, с которыми они должны быть связаны.
Для CrashPlan можно попробовать переместить файл приложения CrashPlan.desktop в /usr/share/приложения. Только приложения, которые там живут, могут быть заблокированы в пусковой установке.
sudo mv ~/Desktop/CrashPlan.desktop /usr/share/applications/.
Затем попробуйте использовать тире для запуска CrashPlan.
Возможно, вы сможете сделать что-то похожее с IntelliJ IDEA, но так как он запускает скрипт, я не уверен, что он будет работать правильно.