~/.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_MANAGER
estar presente. Você pode usar.Xdefaults-hostname
arquivos para manter algumas configurações específicas da máquina ao usarxrdb
para 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_CTYPE
removendo 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/share
junto 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).