Почему некоторые открытые приложения отображаются как «вопросительные знаки» в Unity launcher?

21

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

Это может быть неважно, но эта конкретная программа является монопрограммой, а иконка, которая появляется, отображается как панель.

    
задан Andrew Redd 26.10.2011 в 19:01
источник

3 ответа

23

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

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

Неисправность может быть вызвана:

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

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

Примеры задач

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

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

Чтобы приложение могло интегрироваться с Unity, то есть быть доступным для поиска в Dash и помещаться в Launcher, необходимо иметь запись на рабочем столе. Такие записи помещаются в /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 замечает, что его исполняемый файл «принадлежит» к описанию этого приложения и использует данные Name и Icon в панели запуска.

Это пример с баребонами. формальная спецификация охватывает многие дополнительные функции.

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

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

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

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

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

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

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

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

    
ответ дан Jjed 07.11.2011 в 03:12
источник
1

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

XSetClassHint( display, window, &class_hints );

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

    
ответ дан Bram 10.08.2013 в 08:14
-1

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

sudo apt-get autoremove gnome-software && sudo apt-get install gnome-software
    
ответ дан Steve 21.08.2016 в 09:50