返回用户这里。我需要将当前在 RHEL5、Gnome Desktop 2.x 下运行的 OpenMotif 2.3 应用程序系统迁移到 RHEL7 下的 Gnome 3。问题是这些应用程序需要修改窗口菜单,在每个窗口的基础上添加项目和加速器。目前,我们的客户要求我们不要迁移到 GTK 或任何其他小部件集。客户安全要求需要使用 gnome-shell、gdm等,因此 xfce 或任何使用外部进程进行屏幕锁定的东西都无法使用。
我查看了 gnome-shell 的混乱,虽然我找到了组合窗口菜单的 JavaScript,但它需要访问保存自定义菜单的窗口属性。我认为没有办法让 JavaScript 回调到 C 代码中来执行此操作。(如果一切都失败了,我可以使用 xprop 转储属性并从那里开始。)
我在想客户端装饰,以及必须自己管理窗口的所有恐惧,可能是这里的解决方案。不过,如果不使用 GTK,我似乎无法让 CSD 发挥作用。我尝试应用 _GTK_FRAME_EXTENTS 属性,但 gnome-shell 忽略它。我已经尝试过 _NET_FRAME_EXTENTS,但同样没有成功。Extended Window Manager Hints 文档对此只字未提。当然,Google 对使用 GtkHeaderBar 的评论和避免 CSD 的讨论已经成熟,这两者都不适用于这里。基于 Wayland 的物品同样不可行。
我非常熟悉修改和扩展 Motif 小部件集,在我职业生涯的大部分时间里都是这样做的。我需要知道如何告诉窗口管理器在不使窗口覆盖重定向的情况下关闭。