Qt - поднять окно до текущего рабочего стола / рабочего пространства в Linux DE - PullRequest
0 голосов
/ 14 ноября 2018

Предварительные условия: Моя программа Qt (MainWindow) работает на FIRST рабочем столе Linux, а я работаю на SECOND .

Программа вызывает такиекусок кода:

mainWindow->raise();

Что происходит? Моя среда рабочего стола переключается на рабочий стол FIRST и показывает главное окно моего приложения.

Что я хочу, чтобы произошло? Главное окно моего приложения перенесено на текущий ( SECOND ) рабочий стол и показано здесь.

Возможно ли это с Qt и как?

1 Ответ

0 голосов
/ 22 ноября 2018

Qt не поддерживает полную среду Linux DE / WM. Виртуальный рабочий стол - это не настоящий виртуальный рабочий стол.

Это сложный вопрос. Я постараюсь объяснить (плохой английский).

Рабочие столы и рабочие пространства в Linux X Window System: https://www.circuitousroot.com/artifice/programming/useful/fvwm/viewports/index.html

Qt use xcb: https://xcb.freedesktop.org/ Здесь у нас есть соединение xcb: http://doc.qt.io/qt-5/qx11info.html#connection Это нелегкий путь без других библиотек: только xcb, ICCCM, EWMH ... У меня есть эта проблема для моего приложения, но позже. У меня только грязные тесты на чистом С, и это работает.

Вы можете попробовать использовать (или посмотреть, как реализовать, я наблюдал здесь) KWindowSystem: https://api.kde.org/frameworks/kwindowsystem/html/classKWindowSystem.html (которые не имеют KDE-зависимостей !!!), но этот класс не обладает всеми функциями для всех команд EWMH.

...