LINUX.ORG.RU

Ubuntu 20.04 Qt не отображается иконка на панели задач

 , ,


0

2

Добрый день

Собственно есть самый примитивный проект на Qt на виджетах. При его запуске через Qt Creator или вручную на левой вертикальной панели задач вместо иконки приложения просто пустой квадрат. Проверял на Qt5.15.2/6.2.4/6.3.2 везде такая же фигня.

При этом в qBittorrent, установленного в системе из стандартного репозитория иконка нормально отображается.

Подскажите пжлс, в чем прикол? Может я какой нужный пакет удалил. Не помню.

★★★★★

Последнее исправление: rumgot (всего исправлений: 2)

@Silerus, @slackwarrior

Немного поэкспериметировал. Если вызвать setWindowIcon() (у QAplication или у QMainWindow) то иконка отображается но только в сессии Xorg, а в сессии Wayland все равно отображается иконка по умолчанию в виде шестиренки.

А далее обнаружил, что без вызова setWindowIcon() иконка НЕ отображается в сессии Xorg, а в Wayland отображается дефолтная иконка в виде шестиренки. Но ведь и в Xorg сессии должна отображаться какая нибудь дефолтная иконка.

rumgot ★★★★★
() автор топика
Последнее исправление: rumgot (всего исправлений: 1)

@Silerus, @slackwarrior

Еще уточняющая информация. При запуске приложения в сессии Wayland (для этого нужно зайти в систему в сессии Wayland и далее запускать свое приложение так: QT_QPA_PLATFORM=wayland ./untitled) на панели задач Ubuntu отображается дефолтная иконка в виде шестиренки. Если при этом вызвать setWindowIcon() то устанавливается иконка в заголовке приложения, а на панели задач все равно отображается в виде шестиренки. А если войти в систему в сессии Xorg (или в сессию Wayland но запускать приложение без передачи QT_QPA_PLATFORM=wayland), то без вызова setWindowIcon() у приложения на панели задач отображается пустой квадрат, а при вызове setWindowIcon() отображается переданная иконка.

rumgot ★★★★★
() автор топика
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

Тот же дистрибутив, но десктоп - KDE 5. Пример кода

#include <QApplication>
#include <QtGlobal>
#include <QDateTime>
#include "widget.h"
#include "math.h"


Widget* widget; // потомок QWidget

...

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    uint seed = QDateTime::currentDateTime().toTime_t();
    qsrand(seed);

    widget = new Widget;
    widget->show();
    //widget->showMaximized();

    return a.exec();
}
На панели задач и в заголовке окна показывается дефолтная иконка - эмблема Xorg.

damix9 ★★★
()
Ответ на: комментарий от rumgot

А далее обнаружил, что без вызова setWindowIcon() иконка НЕ отображается в сессии Xorg, а в Wayland отображается дефолтная иконка в виде шестиренки. Но ведь и в Xorg сессии должна отображаться какая нибудь дефолтная иконка.

Видимо какие-то кеши иконок сбились. На чистом юзере проверь. Если там будет всё норм – ищи в каком кеше зарылась собака и инвалидируй его.

P.S. У себя на 22.04 проверил – шестерёнка как под XWayland, так и на Wayland по умолчанию есть.

EXL ★★★★★
()
Ответ на: комментарий от DrBrown

Так фишка в том, что если явно устанавливать иконку приложения, то и setWindowIcon() тоже работает. Проблема именно в отсутствии иконки по умолчанию при запуске на Xorg.

rumgot ★★★★★
() автор топика
Ответ на: комментарий от EXL

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

rumgot ★★★★★
() автор топика
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

по умолчанию при запуске на Xorg.

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

Deprecated он такой вот, да.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Поскольку в следующей версии Ubuntu по умолчанию используется Wayland

У меня впечатление, что в Canonical засели засланные с M$, которые хотят погубить ляликс. Это же будет означать, что у простых юзеров без красных глаз не будет ничего работать и они не будут знать как это пофиксить. Переход на недоделанный Wayland - это диверсия от мелкомягких.

damix9 ★★★
()
Ответ на: комментарий от damix9

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

EXL ★★★★★
()
Ответ на: комментарий от EXL

Но Иксы в намного лучшем состоянии, это недоделанность совершенно разных уровней.

В Wayland нельзя даже мышку настроить А вы помните бесячий баг иксов, который всегда раздражал? (комментарий)

В Иксах тоже плохо. По идее указанные настройки должны быть вообще графическими, но ландо бы через конфиги ...

Я не против Wayland, но сначала его надо опробовать на гентушниках. Тут хуже всего не само наличие ошибок в ПО, а то, что пользователь не будет знать что делать. Из хорошего сообщения об ошибке должно следовать, что пользователю (или другой части системы) делать. А тут как будет: человек создает конфиги по инструкции, реальное поведение системы не меняется, никакого сообщения об ошибке нет.

Это окончательно хоронит мои мечты о линуксе с человеческим лицом.

damix9 ★★★
()