#include "localization.h" #include #include #include #include #ifdef LAUNCHER_HAS_WEBENGINE #include #endif int main(int argc, char *argv[]) { #ifdef LAUNCHER_HAS_WEBENGINE // Вход в аккаунт Microsoft показывается встроенным окном браузера. // Инициализация обязана идти до QGuiApplication: она выставляет общий // контекст OpenGL, а после создания приложения это уже не действует. QtWebEngineQuick::initialize(); #endif QGuiApplication app(argc, argv); // Иконка окна и панели задач. Отдаём все размеры сразу: оконный менеджер // сам выберет подходящий, а готовый растр всегда чётче, чем полученный // масштабированием одной большой картинки. // // На macOS этого делать нельзя: setWindowIcon подменяет иконку в доке // растром во весь холст, и лаунчер выглядит заметно крупнее соседей. Там // иконку берут из icon.icns внутри бандла — он нарисован по сетке Apple, // с полями вокруг арта. #ifndef Q_OS_MACOS QIcon appIcon; for (int size : {16, 24, 32, 48, 64, 128, 256, 512}) appIcon.addFile(QStringLiteral(":/icons/icon_%1x%1.png").arg(size)); for (int size : {16, 32, 128, 256, 512}) appIcon.addFile(QStringLiteral(":/icons/icon_%1x%1@2x.png").arg(size)); QGuiApplication::setWindowIcon(appIcon); #endif // На Wayland окно связывается с установленным .desktop-файлом только по // этому имени; без него композитор покажет иконку по умолчанию. QGuiApplication::setDesktopFileName(QStringLiteral("bilauncher")); // Язык интерфейса нужно знать до того, как QML вычислит первую привязку, // поэтому каталог читается здесь, а не в LauncherBackend: тот появляется // только вместе с движком. Каталог лежит в ресурсах — не прочитался, значит // сломана сборка, и запускаться дальше незачем. if (!Localization::instance().load()) return -1; // Нативный стиль Windows игнорирует пользовательские contentItem/background // и сыплет предупреждениями, а всё окно стилизовано вручную — берём Basic. QQuickStyle::setStyle("Basic"); QQmlApplicationEngine engine; QObject::connect( &engine, &QQmlApplicationEngine::objectCreationFailed, &app, []() { QCoreApplication::exit(-1); }, Qt::QueuedConnection); engine.loadFromModule("BiLauncher", "Main"); return app.exec(); }