Я хотел бы организовать фокусировку двух приложений в настольной системе Wayland-Weston.Два приложения:
- Написано в Qt / QML, полноэкранное
- Написано с Wayland Client API + OpenGL, полноэкранное
Я хотел бы сохранить приложение# 1 всегда вверху, а приложение № 2 всегда внизу, даже если я убью и возродю любую из них.Я также хотел бы сделать это, пока они оба являются полноэкранными приложениями.
Я исследовал и нашел несколько способов добиться этого:
Использование wmctrl
для организацииWindows в настольной системе: я пробовал это.Тем не менее, я получаю Cannot open display.
.Позже я узнал, что wmctrl
не работает с Weston / XWayland, работает только с X11.Поэтому я больше не думаю, что это вариант.
По умолчанию приложение № 1 (Qt / QML) всегда на вершине: то, что я пробовал, чтобыЧтобы решить эту проблему, я добавил в свой main.qml следующее:
ApplicationWindow {
visible: true
visibility: "FullScreen"
width: 1920
height: 720
flags: Qt.WindowStaysOnTopHint|Qt.FramelessWindowHint
MainScreen{
anchors.fill: parent
}
}
По умолчанию приложение №2 (Wayland Client API / OpenGL) всегда внизу.Честно говоря, я не очень хорошо знаком с Wayland Client API, но я мог бы изучить его с некоторыми рекомендациями, если что-то подобное возможно.
Прямо сейчас, мой фокусделая приложение Qt всегда на высоте.Он работает на моем ПК, но не работает на целевой платформе.Мой компьютер - Ubuntu 16.04 с Xorg.Целевая платформа имеет композитор weston с бэкэндом xwaylandЯ не знаю, почему это не работает в цели.Это может быть настольная система.Любое руководство и идеи приветствуются.Спасибо
РЕДАКТИРОВАТЬ: main.cpp
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
РЕДАКТИРОВАТЬ main.qml
import QtQuick 2.0
import QtQuick.Controls 2.0
import QtQuick.Window 2.2
import "app/main"
ApplicationWindow {
visible: true
visibility: "FullScreen"
maximumWidth: 1920
maximumHeight: 720
minimumWidth: 1920
minimumHeight: 720
width: 1920
height: 720
title: qsTr("App")
flags: Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint
MainScreen{
anchors.fill: parent
}
}
РЕДАКТИРОВАТЬ: Qt Версия Qt 5.10.1 на ПК, Qt 5.8.0 на целевой платформе