配置文件中的“Xterm”或“xterm”

Ser*_*ele 8 xterm x-resources

开始使用 Arch 后,我切换到 xterm 和 urxvt 终端并享受它们的灵活性(尤其是scaleHeight资源)。但是,我不明白为什么有时配置Xtermxtermor XTerm(小写与大写xt)一起工作,有时使用。

例如,我有一个在 Ubuntu 上运行的奇怪配置:

XTerm*faceName: terminus
XTerm*faceSize: 11
XTerm*saveLines: 16384
XTerm*loginShell: true
XTerm*charClass: 33:48,35:48,37:48,43:48,45-47:48,64:48,95:48,126:48
XTerm*termName: xterm-color
XTerm*eightBitInput: false
xterm*VT100.geometry: 100x80    ! <------ this line would not work with "Xterm" or "XTerm"
XTerm*scaleHeight: 1.3          ! <----- but all others work with "XTerm"
Run Code Online (Sandbox Code Playgroud)

但是,我的 Arch 盒子在“xterm”上运行良好。URxvt 终端也是如此:我不能简单地将我的 Arch .Xresources 移植到 Ubuntu14 工作箱,因为它的一部分停止工作,并且在运行后我得到了不同的设置:

xrdb -merge .Xresources
Run Code Online (Sandbox Code Playgroud)

xterm 上的 X.org 没有任何示例(在该页面上搜索“xterm*”没有返回任何内容)。我看到带有Xterm,xtermXTerm在线的示例......上面的配置让我感到困惑,因为它在语法上是关闭的。为什么会这样?它可能与 X 中的新资源或旧资源有关吗?谢谢!

ubuntu 上的 xterm 是 Xterm(297)。我目前无法访问我的 Arch 盒子,但它会是最新的。我不知道如何从 Arch 的存储库中分辨 Xterm 版本,但也许是这样的:https : //www.archlinux.org/packages/extra/i686/xterm/ 所以,如果该链接是正确的,那么是的,我正在运行不同的 Xterm 版本。

我尝试升级 xterm,但它仍然是 297。

apt-get update && apt-get install --only-upgrade xterm
Run Code Online (Sandbox Code Playgroud)

我现在不能这样做,但我可能会尝试重新编译最新版本以查看问题是否存在。

按照下面 ILMostro_7 的建议,我尝试了XTerm.vt100.geometry,但仍然无效。这是 Ubuntu14 上的 Xterm (297)。所以基本上,.或者*它似乎只适用于很少的xt.


appres XTerm xterm | grep geometry感谢 Gilles 的结果。我没想到查查究竟xrdb -merge是什么导致了这个烂摊子。所以我的猜测是其中之一优先于其他所有内容?

xterm.VT100.geometry:   100x100
xterm*VT100.geometry:   100x80
xterm*VT100*geometry:   50x50
xterm.vt100.geometry:   160x40
xterm*vt100.geometry:   100x20
xterm.geometry: 5x5
xterm*geometry: 100x20
XTerm.VT100.geometry:   100x100
XTerm*VT100.geometry:   50x50
XTerm*VT100*geometry:   20x10
XTerm.vt100.geometry:   100x5
XTerm*vt100.geometry:   40x40
XTerm*geometry: 50x50
Run Code Online (Sandbox Code Playgroud)

事实上,它看起来xterm.vt100.geometry: 160x40优先于其他实例,因为我一直在获取实例。此外,我以某种方式设法完全搞砸了 Xterm 菜单(Ctrl+鼠标单击)-它们显示为一条小黄线。呵呵

Gil*_*il' 11

X11 资源的名称由一系列由点分隔的组件组成,例如xterm.vt100.geometry. 第一个组件是应用程序的名称,第二个组件是该应用程序中的小部件,最后一个组件是小部件的属性。小部件可以嵌套,因此应用程序的一个属性可以有三个以上的组件,或者只有两个组件。

X 资源的规范可以应用于单个资源或匹配模式的一组资源。有两种方法可以使规范适用于多个资源。

  • 您可以为任何组件使用类名而不是实例名。通常,实例名称以小写字母开头,而类名称以大写字母开头。

    • 在应用层,类名对于给定的应用程序通常是固定的,通常是大写的应用程序名称,有时其他字母也大写,例如XTerm, XCalc, GV, NetHack, ... 使用X 工具包的应用程序支持一个选项-class来设置类名,以及-name设置实例名(默认为可执行文件的基名)。例如XTerm.vt100.geometry设置的值geometry属性为vt100所述的任何实例的插件XTerm类; 它适用于xterm -name foo但不适用于xterm -class Foo.
    • 在小部件级别,可以有多个具有相同类的小部件,例如同一窗口中的多个按钮。Xterm 有一个VT100名为的类小部件vt100,它是覆盖整个窗口的终端模拟器部分。其他小工具包括菜单mainMenufontMenu以及vtMenu类的SimpleMenu
  • 有通配符:?表示“任何小部件”,*表示“任何小部件序列”。例如,xterm*background为 Xterm 窗口内的所有内容定义背景。

您可以使用 探索支持 editres 协议的应用程序的资源树editres。很少有应用程序支持此协议,但 Xterm 就是其中之一。

给定资源可能与多个模式匹配。在这种情况下,优先规则适用。有关完整规则,请参阅手册

在您的情况下,很可能在某处有另一个条目与xterm.vt100.geometrythan更接近匹配xterm*VT100.geometry,并且该匹配会覆盖您的设置。其他人没有其他设置,所以无论你做什么都会赢。