~/.Xdefaults é o método mais antigo de armazenar recursos do X. Este arquivo é lido novamente toda vez que um programa Xlib é iniciado. Se o X11 é usado pela rede, o arquivo deve estar presente no mesmo sistema de arquivos que os programas.
~/.Xresources é mais recente. Ele é carregado com xrdb na propriedade RESOURCE_MANAGER da janela raiz do X11. Sempre que qualquer programa procurar um recurso, ele será lido diretamente em RESOURCE_MANAGER .
Se esta propriedade não existir, o Xlib retorna ao método antigo de ler .Xdefaults em cada inicialização do programa. Observe que a maioria das distribuições carregará ~/.Xresources automaticamente se estiver presente, fazendo com que .Xdefaults seja ignorado, mesmo que você nunca tenha executado xrdb manualmente.
A vantagem do novo método é que basta chamar xrdb uma vez e os recursos estarão disponíveis para qualquer programa em execução neste monitor, seja local ou remoto. (O nome ~/.Xresources é apenas uma convenção - você pode usar xrdb para carregar qualquer arquivo, mesmo .Xdefaults .)
Manual de programação do Xlib P.441:
Prior to X11R2, X resource settings were read from .Xdefaults file in users home directory and optionally on whatever machine the X client was running on, so multiple files was hard to maintain.
Later on, xrdb program was made to store users resource settings from in .Xresources into the XA_RESOURCE_MANAGER property of the root window on the current X server, so all clients connected to the same server has access to them. If the user hasn't called xrdb to set the property, then .Xdefaults is read.
[...] the X resources are stored in two standard locations, depending on whether they apply to all screens or to a particular one:
- the RESOURCE_MANAGER property of the root window of screen 0
- the SCREEN_RESOURCES property of the root window of an arbitrary screen
Não termina exatamente nisso.
- Há também a variável
$XENVIRONMENT, cujo valor padrão é~/.Xdefaults-hostname, se não for definido. Isso é usado da mesma maneira que.Xdefaults, mas é sempre lido, independentemente deRESOURCE_MANAGERestar presente. Você pode usar.Xdefaults-hostnamearquivos para manter algumas configurações específicas da máquina ao usarxrdbpara as globais.
-
A quarta localização é o diretório apontado pela variável de ambiente
$XAPPLRESDIR. (Estranhamente, se a variável não estiver definida,$HOMEé usado como o padrão.) Quando um programa é iniciado, ele verifica se existe algum dos seguintes arquivos (o nome do arquivo é o mesmo que o nome da classe do programa): / p>-
$XAPPLRESDIR/$LC_CTYPE/XTerm -
$XAPPLRESDIR/language/XTerm -
$XAPPLRESDIR/XTerm
(
languageé derivado de$LC_CTYPEremovendo todos, exceto o primeiro componente; por exemplo,en_US.utf-8→en.) -
-
O local quinto é o diretório "padrão de aplicativos" em todo o sistema. Novamente, os diretórios de padrões de aplicativos são verificados na inicialização do programa, se tiverem um arquivo com o nome do programa. Por exemplo, o XTerm (no 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
Os arquivos de padrões de aplicativos geralmente são instalados em
/usr/sharejunto com o próprio programa; as substituições do administrador iriam para/etc. -
Tudo mencionado acima está documentado em grande detalhe na documentação do kit de ferramentas X.org - artigo X Toolkit Intrinsics - Interface de Linguagem C , seção Carregando o banco de dados de recursos .
Infelizmente, não encontrei nenhum guia do usuário recente que descreva os recursos do X, principalmente porque eles são irrelevantes no ano de 2012. Mas, para informações históricas (leia-se: horrivelmente desatualizadas), você pode ler Guia do usuário do X Window System para X11 R3 e R4 do X Window System seção 9: Definindo Recursos (começando com a página 181).