有没有办法检查哪些 .Xresources 设置有效此刻(不同于xrdb -query
)?例如,我在一个似乎不尊重的主机上*reverseVideo: true
,但我不知道这是否是因为我以错误的方式编写了它(甚至*florb: glorb
在运行时不会引发错误xrdb -merge $HOME/.Xresources
),因为设置不是支持,或者其他原因。
答案1
xrdb -query
列出 X 服务器上显式加载的资源。
appres
列出应用程序将接收的资源。这包括系统默认值(通常在/usr/X11R6/lib/X11/app-defaults
或 之类的目录中找到/etc/X11/app-defaults
)以及在服务器上使用 显式设置的资源xrdb
。您可以限制特定的类和实例,例如appres XTerm foo
查看哪些资源适用于使用 调用的 xterm xterm -name foo
。
X 服务器仅存储设置列表。它无法知道小部件是否真正会使用这些设置。无效的资源名称不会被注意到,因为您应该能够在层次结构中的较高级别设置资源,并且它们只会应用于与其相关且不会被覆盖的组件。
X 资源规范遵循相当复杂的优先规则。如果您的其中一项设置似乎不适用,那么罪魁祸首有时是优先考虑的系统默认设置,因为它更具体。查看输出以appres Class
查看是否有系统设置某物.reverseVideo
。如果您的应用程序是少数支持 Editres 协议的应用程序之一,您可以使用该editres
程序检查其资源树。
答案2
资源加载到 X11 服务器中和由客户端加载是有区别的。例如,您可以在启动客户端后更改服务器的资源。
要获取当前服务器资源,可以使用“xrdb -query -all”。
为了获取当前的客户端资源,我不知道解决方案,但是编辑(1) 将允许您在兼容的客户端运行时将资源发送到该客户端。您可能会很幸运地使用使用 Xaw 和 Motif 时代工具包的应用程序,但对于 GTK 和 QT 应用程序则不太幸运(或没有)。一个很好的例子是“xterm”,您可以通过 editres 打开和关闭滚动条,而无需重新启动客户端。
答案3
没有xrdb -query -all
做你想做的事?
我在 X 启动时从 .Xresources 加载了一些相当非正统的设置,它把它们返回给我:
6:14AM 68 % xrdb -all -query
XTerm*VT100*translations: #override \n <Key>F2: insert-selection(PRIMARY,CUT_BUFFER0)
XTerm*VT100.charClass: 33:48,35:48,37:48,42:48,45-47:48,64:48,95:48,126:48
XTerm*VT100.cutNewLine: false
XTerm*VT100.cutToBeginningOfLine: false
XTerm*VT100.saveLines: 1000
XTerm*VT100.scrollBar: true
scrollstyle: plain