Estos dos archivos parecen tener la misma función. ¿Cuál es la diferencia entre los dos si los hay?
~/.Xdefaults
es el método más antiguo para almacenar recursos X. Este archivo se vuelve a leer cada vez que se inicia un programa Xlib. Si se usa X11 en la red, el archivo debe estar presente en el mismo sistema de archivos que los programas.
~/.Xresources
Es más nuevo. Se carga con xrdb
la RESOURCE_MANAGER
propiedad de la ventana raíz X11. Cada vez que un programa busca un recurso, se lee directamente RESOURCE_MANAGER
.
Si esta propiedad no existe, Xlib recurre al antiguo método de lectura .Xdefaults
en cada inicio de programa. Tenga en cuenta que la mayoría de las distribuciones se cargarán ~/.Xresources
automáticamente si está presente, lo .Xdefaults
que hará que se ignore incluso si nunca ha ejecutado xrdb
manualmente.
La ventaja del nuevo método es que es suficiente para llamar xrdb
una vez, y los recursos estarán disponibles para cualquier programa que se ejecute en esta pantalla, ya sea local o remoto. (El nombre ~/.Xresources
es solo una convención xrdb
; incluso puede usarlo para cargar cualquier archivo .Xdefaults
).
Manual de programación de Xlib P.441:
Antes de X11R2, la configuración de recursos X se leía desde el archivo .Xdefaults en el directorio de inicio de los usuarios y, opcionalmente, en cualquier máquina en la que se ejecutaba el cliente X, por lo que era difícil mantener varios archivos.
Más tarde, el programa xrdb se creó para almacenar la configuración de recursos de los usuarios en .Xresources en la propiedad XA_RESOURCE_MANAGER de la ventana raíz en el servidor X actual, por lo que todos los clientes conectados al mismo servidor tienen acceso a ellos. Si el usuario no ha llamado a xrdb para establecer la propiedad, se lee .Xdefaults.
[...] los recursos X se almacenan en dos ubicaciones estándar, dependiendo de si se aplican a todas las pantallas o a una en particular:
- la propiedad RESOURCE_MANAGER de la ventana raíz de la pantalla 0
- la propiedad SCREEN_RESOURCES de la ventana raíz de una pantalla arbitraria
No termina en eso.
$XENVIRONMENT
variable, que se establece de manera predeterminada si no se establece. Esto se usa de la misma manera que , pero siempre se lee independientemente de si está presente. Puede usar archivos para mantener algunas configuraciones específicas de la máquina mientras las usa para las globales.~/.Xdefaults-hostname
.Xdefaults
RESOURCE_MANAGER
.Xdefaults-hostname
xrdb
Los elementos # 4 y # 5 enumerados a continuación parecen ser utilizados solo por programas Xlib puros, no por GTK 3 u otros juegos de herramientas.
La cuarta ubicación es el directorio señalado por la $XAPPLRESDIR
variable de entorno. (Curiosamente, si la variable no está configurada, $HOME
se usa como predeterminada). Cuando se inicia un programa, se ve si existe alguno de los siguientes archivos (el nombre del archivo es el mismo que el nombre de la clase del programa):
$XAPPLRESDIR/$LC_CTYPE/XTerm
$XAPPLRESDIR/language/XTerm
$XAPPLRESDIR/XTerm
( language
se deriva de $LC_CTYPE
eliminar todos los componentes excepto el primero; por ejemplo, en_US.utf-8
→ en
.)
La quinta ubicación son los directorios "predeterminados de la aplicación" en todo el sistema. Nuevamente, los directorios predeterminados de la aplicación se verifican al inicio del programa si tienen un archivo con el nombre del programa. Por ejemplo, XTerm (en Arch Linux) usa:
/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
Los archivos predeterminados de la aplicación generalmente se instalan /usr/share
junto con el programa mismo; las anulaciones del administrador irían a /etc
.
Todo lo mencionado anteriormente está documentado con gran detalle en la documentación del kit de herramientas X.org - artículo X Toolkit Intrinsics - C Language Interface , sección Carga de la base de datos de recursos .
Desafortunadamente, no pude encontrar ninguna guía de usuario reciente que describa los recursos X, principalmente porque son irrelevantes en el año 2012. Pero para obtener información histórica (léase: horriblemente desactualizada), puede leer la guía del usuario del sistema X Window para X11 R3 y R4 del sistema X Window sección 9: Configuración de recursos (a partir de la página 181).
xrdb
ha siempre sido gestionado por esta pantalla X desde su ingreso - es decir, si existe la propiedad raíz X - a continuación, xlib no utilizará los Xdefaults en todos los más.