Почему некоторые открытые приложения отображаются как & ldquo; знаки вопроса & rdquo; в лаунчере единства?

У меня проблема с парой программ, в которых есть средства запуска в единстве, но после запуска я создаю отдельную иконку. Возможно ли, чтобы пусковая установка отслеживала окна, которые она порождает, чтобы лучше организовать? Или это ошибка в самом Unity?

enter image description here

Возможно, это не имеет значения, но эта конкретная программа является монопрограммой, а появившаяся иконка отображается в виде панели.

22
задан 11 October 2012 в 16:35

3 ответа

Что происходит

Подобные проблемы связаны со структурой сопоставления приложений Unity. Чтобы упростить технические детали, окна программ и приложения для Ubuntu - это две разные вещи. Ubuntu необходимо «угадать», какое приложение владеет конкретным окном. А иногда это предположение не удается, и в панели запуска появляется вопросительный знак.

Ошибка может быть вызвана:

  1. ошибкой в ​​ BAMF (упомянутой выше структуре сопоставления приложений).
  2. Неправильное описание приложения (он же файл .desktop).
  3. Отсутствие какого-либо описания приложения. Исполняемые файлы, запускающие окна, по своей сути не имеют этих метаданных.

Приложение, показанное в вопросе (KeePass2), страдает от проблемы типа 1, о которой было сообщено в соответствующий модуль отслеживания ошибок .

Примеры проблемы

Приведенные ниже примеры являются техническими и предназначены для программистов, которые хотят, чтобы их собственное приложение правильно отображалось в средстве запуска Ubuntu.

Проблема 3 - Нет описания приложения

Для интеграции приложения с Unity, то есть для скажем, быть доступным для поиска в Dash и помещаться в программу запуска - для этого должна быть запись на рабочем столе. Такие записи помещаются в каталоги / usr / share / applications / , / usr / local / share / applications / и $ HOME /.local / share / applications / (последние два предназначены для стороннего программного обеспечения, общесистемного и только для пользователя соответственно). Они заканчиваются расширением .desktop и имеют следующий базовый формат:

[Desktop Entry]
Type=Application
Name=My Application's Name
Icon=/file/path/of/my/icon
Exec=/file/path/of/my/executable

Эта запись запускает программу, вызывая исполняемый файл Exec . Всякий раз, когда эта программа отображает окно или диалоговое окно, Unity замечает, что его исполняемый файл «принадлежит» этому описанию приложения, и использует данное Имя и Значок в панели запуска.

Это это пример barebones. Формальная спецификация охватывает множество дополнительных функций.

Проблема 2 - Неправильное описание приложения

Предположим, что my_app.desktop существует в допустимом каталоге приложения, но:

  • / file / path / of / my / icon не существует в файловой системе.
  • / file / path / of / my / icon не является изображением.
  • в записи используется некорректный синтаксис или недопустимые теги.

В любом из вышеперечисленных случаев Ubuntu не сможет правильно отобразить окно приложения в панели запуска.

Проблема 1 - Ошибка в BAMF

Начиная с Ubuntu 11.10, BAMF имеет количество ошибок, препятствующих корректному сопоставлению приложений. Распространенные (временные) ошибки включают:

  • Путь Exec представляет собой символическую ссылку , а не обычный файл
  • . Исполняемый файл представляет собой сценарий, запускающий основной исполняемый файл.

] В этих случаях у программистов нет другого выбора, кроме как использовать обходной путь, такой как удаление абстракции символической ссылки или прямая ссылка на исполняемый файл. Ни то, ни другое не требуется самой спецификацией настольного компьютера.

23
ответ дан 11 October 2012 в 16:35

Окно можно сопоставить с приложением, только если установлено свойство WM_CLASS. Для этого в X11 вы используете:

XSetClassHint( display, window, &class_hints );

Вам необходимо передать указатель на структуру XClassHint с полями res_name и res_class.

1
ответ дан 11 October 2012 в 16:35

У меня было несколько проблем с 16.04, включая серые значки, а иногда тачпад работал нестабильно (Acer V15 nitro ) также программный центр (возможно, и другие значки) не открывался с помощью значка (только с помощью команды терминала). Я нашел где-то рекомендацию удалить и переустановить программное обеспечение gnome. С тех пор, как я сделал это, вся система стала на 100% стабильной, значки больше не были серыми, и работает отлично. Сначала это выглядело пугающим, когда я перезагружался после этого изменения - много системных сообщений о перезагрузке - так что делайте это на свой страх и риск.

sudo apt-get autoremove gnome-software && sudo apt-get install gnome-software
-1
ответ дан 11 October 2012 в 16:35

Другие вопросы по тегам:

Похожие вопросы: