У меня проблема с парой программ, в которых есть средства запуска в единстве, но после запуска я создаю отдельную иконку. Возможно ли, чтобы пусковая установка отслеживала окна, которые она порождает, чтобы лучше организовать? Или это ошибка в самом Unity?
Возможно, это не имеет значения, но эта конкретная программа является монопрограммой, а появившаяся иконка отображается в виде панели.
Подобные проблемы связаны со структурой сопоставления приложений Unity. Чтобы упростить технические детали, окна программ и приложения для Ubuntu - это две разные вещи. Ubuntu необходимо «угадать», какое приложение владеет конкретным окном. А иногда это предположение не удается, и в панели запуска появляется вопросительный знак.
Ошибка может быть вызвана:
Приложение, показанное в вопросе (KeePass2), страдает от проблемы типа 1, о которой было сообщено в соответствующий модуль отслеживания ошибок .
Приведенные ниже примеры являются техническими и предназначены для программистов, которые хотят, чтобы их собственное приложение правильно отображалось в средстве запуска Ubuntu.
Для интеграции приложения с 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. Формальная спецификация охватывает множество дополнительных функций.
Предположим, что my_app.desktop
существует в допустимом каталоге приложения, но:
/ file / path / of / my / icon
не существует в файловой системе. / file / path / of / my / icon
не является изображением. В любом из вышеперечисленных случаев Ubuntu не сможет правильно отобразить окно приложения в панели запуска.
Начиная с Ubuntu 11.10, BAMF имеет количество ошибок, препятствующих корректному сопоставлению приложений. Распространенные (временные) ошибки включают:
Exec
представляет собой символическую ссылку , а не обычный файл ] В этих случаях у программистов нет другого выбора, кроме как использовать обходной путь, такой как удаление абстракции символической ссылки или прямая ссылка на исполняемый файл. Ни то, ни другое не требуется самой спецификацией настольного компьютера.
Окно можно сопоставить с приложением, только если установлено свойство WM_CLASS. Для этого в X11 вы используете:
XSetClassHint( display, window, &class_hints );
Вам необходимо передать указатель на структуру XClassHint с полями res_name и res_class.
У меня было несколько проблем с 16.04, включая серые значки, а иногда тачпад работал нестабильно (Acer V15 nitro ) также программный центр (возможно, и другие значки) не открывался с помощью значка (только с помощью команды терминала). Я нашел где-то рекомендацию удалить и переустановить программное обеспечение gnome. С тех пор, как я сделал это, вся система стала на 100% стабильной, значки больше не были серыми, и работает отлично. Сначала это выглядело пугающим, когда я перезагружался после этого изменения - много системных сообщений о перезагрузке - так что делайте это на свой страх и риск.
sudo apt-get autoremove gnome-software && sudo apt-get install gnome-software