如何强制 X 将所有打开的窗口重新主题化为当前 X 资源?

如何强制 X 将所有打开的窗口重新主题化为当前 X 资源?

我有一个 ~/.Xdefaults,它为 Xorg 定义了一个特定的颜色主题,并且它工作正常。我有一个 ~/.XdefaultsNew,它指定了一个备用颜色主题。Xorg 启动并加载了 ~/.Xdefaults,这是正确的。运行一些应用程序后,我运行

xrdb ~/.XdefaultsNew

这会将我的所有 X 资源覆盖为新定义的值(正确)。如果我打开新窗口,主题会正确显示。但是,所有先前打开的窗口都保留原始主题。

有没有办法强制 X 使用当前加载的 X 资源来“重新设置”它所管理的所有窗口的主题?

答案1

对于实现 Editres 协议并支持 SetValues 请求的应用程序来说,这是可能的(请参阅editres(1)用户级描述和/usr/include/X11/Xmu/EditresP.h程序员级描述)。

您可以通过启动程序来观察 Editres 协议的运行情况editres。在菜单中,选择“命令/获取树”并单击 editres 窗口,然后选择“树/在客户端中选择小部件”并再次单击 editres 窗口中的某个位置。选择“命令/显示资源框”,单击常规资源列表中的“背景”,在“输入资源值”处输入颜色名称,然后单击“应用”并观察 editres 窗口的一部分改变颜色。

不幸的是,虽然大多数使用 X 资源的应用程序都了解 Editres 协议,但很少有应用程序实现 SetValues 部分。这是一个好主意,但几乎没有人愿意去实现它。

相关内容