我有一个 ~/.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 部分。这是一个好主意,但几乎没有人愿意去实现它。