Как создать окно X для выполнения другой программы или Установить одно окно всегда сверху

Я получаю 2 независимые программы (A и B) на Linux Redhat, разработанные набором инструментов Motif на основе X window. Все эти 2 программы имеют собственный человеко-машинный интерфейс. и возникают вопросы: при отображении этих двух программ на одном рабочем столе, как я могу установить интерфейс одной программы всегда на верхнем уровне? текущая ситуация такова, когда я запускаю их на одном рабочем столе и нажимаю на программу A (полноэкранный режим), программа B (одно маленькое окно) опускается ниже программы A и не может быть видна, если только не использовать Alt + Tab для переключения между их, что недопустимо.

Я хочу, чтобы программа B всегда отображалась на верхнем уровне, когда щелкала программу A, она не опускалась вниз. Или я могу установить отображение программы B на одно окно, вставленное в программу A? если возможно, как это реализовать на окне Motif X? использование окна motif x в одной программе для отображения интерфейса другой программы.

С нетерпением жду вашего совета, хотя я знаю, что мало кто до сих пор использует Motif в качестве набора инструментов для создания интерфейса. но слишком сложно перестроить всю программу, которая является продуктом промышленного уровня.


person Victor Huang    schedule 17.09.2019    source источник
comment
Разве штабелирование окон — это не работа оконного менеджера? Какой из них вы используете?   -  person the busybee    schedule 17.09.2019
comment
Реакция пользователя на приложение Always-on-top: AlwaysOnTopApp — такой раздражающий кусок !@!*%$, что я бы взорвал его с орбиты, если бы не был вынужден его использовать!   -  person Andrew Henle    schedule 20.02.2020


Ответы (1)


Вы можете программно убедиться, что ваше окно находится сверху, позвонив

XRaiseWindow(XtDisplay(toplevel), XtWindow(toplevel));

(Предположим, что toplevel — это ваш виджет верхнего уровня).

Остается ли это наверху навсегда, скорее всего, контролируется оконным менеджером. Если это окажется mwm, вы можете попробовать позвонить

XtVaSetValues(toplevel, XmNmwmInputMode, MWM_INPUT_SYSTEM_MODAL, NULL);
person Marc Balmer    schedule 20.02.2020