Какой код требуется для включения клиентского оформления в Gnome 3 с X без использования GTK? - PullRequest
0 голосов
/ 14 января 2020

Возвращение пользователя сюда. У меня есть требование перенести систему приложений OpenMotif 2.3, работающих в настоящее время под RHEL5, Gnome Desktop 2.x, на Gnome 3 под RHEL7. Проблема в том, что приложения требуют изменения меню окна, добавления элементов для каждого окна и ускорителей. В настоящее время наш клиент , а не требует от нас перехода на GTK или любой другой набор виджетов. Требования безопасности клиента требуют использования gnome-shell, gdm, и др. , поэтому xfce или все, что использует внешний процесс для блокировки экрана, непригодно.

Я смотрел на беспорядок, который gnome-shell, и хотя я нашел JavaScript, который собирает меню окна, ему требуется доступ к свойству окна, содержащему настроенное меню. Я не вижу способа заставить JavaScript перезвонить в код C, чтобы сделать это. (Если ничего не помогло, я мог бы использовать xprop, чтобы сбросить свойство, и go оттуда.)

Я думаю о украшении на стороне клиента, со всеми его ужасами необходимости управлять windows самостоятельно может быть решение здесь. Я, кажется, не могу заставить CSD включиться без использования GTK. Я пытался применить свойство _GTK_FRAME_EXTENTS, но gnome-shell его игнорирует. Я пытался _NET_FRAME_EXTENTS с равным отсутствием успеха. В документах с подсказками расширенного оконного менеджера об этом ничего не сказано. Google, конечно же, полон комментариев об использовании GtkHeaderBar и обсуждении того, как избегать CSD, ни то, ни другое здесь не применимо. Предметы, основанные на Вэйленде, одинаково неработоспособны.

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

...