.Xresources 和 .Xdefaults 之间有什么区别?

.Xresources 和 .Xdefaults 之间有什么区别?

这两个文件似乎具有相同的功能。如果有的话,它们之间有什么区别?

答案1

~/.Xdefaults是存储 X 资源的较旧方法。每次启动 Xlib 程序时都会重新读取此文件。如果通过网络使用 X11,则该文件必须与程序位于同一文件系统上。

~/.Xresources较新。它被加载xrdb到 X11 根窗口的属性中RESOURCE_MANAGER。每当任何程序查找资源时,它都会从 RESOURCE_MANAGER 中读取,而不会触及任何文件。

如果 RESOURCE_MANAGER 属性不存在,Xlib 会回到每次程序启动时读取 ~/.Xdefaults 的旧方法。但请注意,如果 ~/.Xresources 存在,大多数发行版都会自动加载它,这意味着该属性将始终存在,因此即使您自己从未运行过 xrdb,~/.Xdefaults 也始终会被忽略。

(您可以使用xprop -root来查看 X 根窗口的属性。)

新方法的优点是,只需调用一次 xrdb 即可,资源将可供在此显示器上运行的任何程序使用,无论是本地还是远程。(名称~/.Xresources只是一种惯例——您可以使用 xrdb 加载任何文件,甚至 ~/.Xdefaults。)

Xlib 编程手册 P.441:

在 X11R2 之前,X 资源设置是从用户主目录中的 .Xdefaults 文件读取的,并且可以选择在运行 X 客户端的任何机器上读取,因此很难维护多个文件。

后来,xrdb 程序被设计成将 .Xresources 中的用户资源设置存储到当前 X 服务器上根窗口的 XA_RESOURCE_MANAGER 属性中,这样连接到同一服务器的所有客户端都可以访问它们。如果用户没有调用 xrdb 来设置该属性,则读取 .Xdefaults。

(注意:XA_RESOURCE_MANAGER 是一个引用内置原子的 Xlib C 宏,但该原子的实际名称(对于 XInternAtom)只是 RESOURCE_MANAGER。)

维基百科

[...] X 资源存储在两个标准位置,取决于它们是适用于所有屏幕还是适用于特定屏幕:

  • 屏幕 0 的根窗口的 RESOURCE_MANAGER 属性
  • 任意屏幕的根窗口的 SCREEN_RESOURCES 属性

其他文件

事情还没有完全结束。

  • 还有$XENVIRONMENT变量,默认为~/.Xdefaults-hostname如果没有设置。这将由程序直接读取,类似于 .Xdefaults 本身,但总是无论 RESOURCE_MANAGER 是否存在,都可以读取。您可以使用文件来保留某些特定于机器的设置,同时将其用于全局设置。.Xdefaults-hostnamexrdb

下面列出的第 4 项和第 5 项似乎都仅由纯 Xlib 程序使用 - 而不是 GTK 3 或其他工具包。

  • 第四个位置是环境变量指向的目录$XAPPLRESDIR。(奇怪的是,如果未设置变量,$HOME则使用默认值。)当启动程序时,它会查找以下任何文件是否存在(文件名与程序的类名相同):

    • $XAPPLRESDIR/$LC_CTYPE/XTerm
    • $XAPPLRESDIR/language/XTerm
    • $XAPPLRESDIR/XTerm

    (通过剥离除第一个部分以外的所有部分language得出$LC_CTYPE;例如,en_US.utf-8en。)

  • 第五位置是系统范围的“app-defaults”目录。同样,如果 app-defaults 目录中有以程序命名的文件,则会在程序启动时检查这些目录。例如,XTerm(在 Arch Linux 上)使用:

    • /etc/X11/$LC_CTYPE/app-defaults/XTerm
    • /etc/X11/language/app-defaults/XTerm
    • /etc/X11/app-defaults/XTerm
    • /usr/share/X11/$LC_CTYPE/app-defaults/XTerm
    • /usr/share/X11/language/app-defaults/XTerm
    • /usr/share/X11/app-defaults/XTerm

    app-defaults 文件通常/usr/share与程序本身一起安装到;管理员覆盖将转到/etc


上面提到的所有内容在 X.org 工具包文档中都有详细记录 – 文章X 工具包内部函数 - C 语言接口, 部分加载资源数据库

不幸的是,我找不到任何描述 X 资源的最新用户指南,主要是因为它们在 2012 年已经不相关了。但对于历史(阅读:非常过时)信息,你可以阅读X Window 系统 X11 R3 和 R4 用户指南第 9 节:设置资源(从第 181 页开始)。

相关内容