.Xresources 和 .Xdefaults 有什么区别?

fre*_*ull 63 xorg

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

use*_*686 77

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

~/.Xresources较新。它被加载xrdbRESOURCE_MANAGERX11 根窗口的属性中。每当任何程序查找资源时,它都会从 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 本身,但无论 RESOURCE_MANAGER 是否存在,它都会被读取。您可以使用文件来保留某些特定于机器的设置,同时用于全局设置。~/.Xdefaults-hostname.Xdefaults-hostnamexrdb

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

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

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

    language$LC_CTYPE通过剥离除第一个组件之外的所有组件而导出的;例如,en_US.utf-8? en。)

  • 第五的位置是全系统的“默认应用程序”目录。同样,如果 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 Toolkit Intrinsics - C 语言接口加载资源数据库部分中进行了详细记录。

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