Esses dois arquivos parecem ter a mesma função. Qual é a diferença entre os dois, se houver?
~/.Xdefaults
é o método mais antigo de armazenar recursos do X. Este arquivo é relido sempre que um programa Xlib é iniciado. Se o X11 for usado na rede, o arquivo deverá estar presente no mesmo sistema de arquivos que os programas.
~/.Xresources
é mais novo. Ele é carregado xrdb
na RESOURCE_MANAGER
propriedade da janela raiz do X11. Sempre que um programa procura um recurso, ele é lido diretamente RESOURCE_MANAGER
.
Se essa propriedade não existir, o Xlib retornará ao método antigo de leitura .Xdefaults
em cada inicialização do programa. Observe que a maioria das distribuições carregará ~/.Xresources
automaticamente se estiver presente, fazendo .Xdefaults
com que seja ignorado, mesmo que você nunca tenha executado xrdb
manualmente.
A vantagem do novo método é que basta ligar xrdb
uma vez e os recursos estarão disponíveis para qualquer programa em execução nessa tela, local ou remoto. (O nome ~/.Xresources
é apenas uma convenção - você pode usar xrdb
para carregar qualquer arquivo, até .Xdefaults
.)
Manual de programação Xlib P.441:
Antes do X11R2, as configurações de recursos do X eram lidas no arquivo .Xdefaults no diretório inicial do usuário e, opcionalmente, em qualquer máquina em que o cliente X estivesse executando, portanto, era difícil manter vários arquivos.
Posteriormente, o programa xrdb foi criado para armazenar as configurações de recursos dos usuários em .Xresources na propriedade XA_RESOURCE_MANAGER da janela raiz no servidor X atual, para que todos os clientes conectados ao mesmo servidor tenham acesso a eles. Se o usuário não tiver chamado o xrdb para definir a propriedade, o .Xdefaults será lido.
[...] os recursos X são armazenados em dois locais padrão, dependendo se eles se aplicam a todas as telas ou a uma determinada:
- a propriedade RESOURCE_MANAGER da janela raiz da tela 0
- a propriedade SCREEN_RESOURCES da janela raiz de uma tela arbitrária
Não termina bem nisso.
$XENVIRONMENT
variável, cujo padrão é se não estiver definido. Isso é usado da mesma maneira que , mas é sempre lido, independentemente de estar presente. Você pode usar arquivos para manter algumas configurações específicas da máquina enquanto usa para as globais.~/.Xdefaults-hostname
.Xdefaults
RESOURCE_MANAGER
.Xdefaults-hostname
xrdb
Os itens 4 e 5 listados abaixo parecem ser usados apenas por programas Xlib puros - não pelo GTK 3 ou outros kits de ferramentas.
O quarto local é o diretório apontado pela $XAPPLRESDIR
variável de ambiente. (Estranhamente, se a variável não estiver definida, $HOME
será usada como padrão.) Quando um programa é iniciado, verifica se existe algum dos seguintes arquivos (o nome do arquivo é o mesmo que o nome da classe do programa):
$XAPPLRESDIR/$LC_CTYPE/XTerm
$XAPPLRESDIR/language/XTerm
$XAPPLRESDIR/XTerm
( language
é derivado da $LC_CTYPE
remoção de todos, exceto o primeiro componente; por exemplo, en_US.utf-8
→ en
.)
O quinto local são os diretórios "app-defaults" em todo o sistema. Novamente, os diretórios de padrões do aplicativo são verificados na inicialização do programa se eles 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 do aplicativo geralmente são instalados /usr/share
junto com o próprio programa; as substituições de administrador iriam para /etc
.
Tudo o que foi mencionado acima está documentado em grande detalhe na documentação do kit de ferramentas do X.org - artigo Intrinsics X Toolkit - Interface de linguagem C , seção Carregando o banco de dados de recursos .
Infelizmente, não consegui encontrar nenhum guia do usuário recente que descreva os recursos do X, principalmente porque são irrelevantes no ano de 2012. Mas, para obter informações históricas (leia-se: terrivelmente desatualizadas), você pode ler o guia do usuário do X Window System para X11 R3 e R4 da seção 9 do sistema X Window : Configurando recursos (iniciando na página 181).
xrdb
tem sempre sido gerido por esta exibição X desde o login - isto é, se a propriedade existe X raiz - então xlib não vai usar .Xdefaults em tudo mais.