# X resources

No Sistema de Janelas X, os X resources, ou recursos do X, são parâmetros de programas de computador, como o nome da fonte usada nos botões, a cor de fundo dos menus, etc. Eles são usados em conjunto com ou como uma alternativa aos parâmetros de linha de comando e arquivos de configuração.

## Formato

No nível de protocolo do X, os recursos são sequências armazenadas no servidor e não possuem significado especial. A sintaxe e o significado dessas cadeias são fornecidos por bibliotecas e aplicativos clientes.
Todo recurso X especifica um parâmetro para um programa ou um de seus componentes. Um recurso totalmente especificado possui o seguinte formato:
Este recurso especifica o valor do atributo para o componente chamado componente.subcomponente.subcomponente do programa aplicativo. Recursos são frequentemente usados ​​para especificar os parâmetros dos widgets criados pelo aplicativo. Como esses widgets são organizados em uma árvore, a sequência de nomes de componente/subcomponente é usada para identificar um widget, fornecendo seu caminho dentro da árvore. O valor do recurso é o valor de um atributo para esse widget, como sua cor de plano de fundo etc.
Recursos X também são usados ​​para especificar parâmetros para o programa que não estão diretamente relacionados aos seus widgets, usando a mesma sintaxe.
Recursos X são projetados para permitir que o mesmo parâmetro seja especificado para mais de um programa ou componente. Isso é realizado ao permitir caracteres curinga em uma especificação de recurso. Em particular, o caractere ?, é usado para corresponder ao nome do aplicativo ou a um único componente. O caractere * é usado para corresponder a qualquer número de componentes. Esses dois caracteres podem ser usados ​​em qualquer lugar, menos no final do nome do recurso. Em outras palavras, um atributo não pode ser substituído por um caractere curinga.
Embora os recursos possam ser especificados livremente por meio dos caracteres curinga, as consultas para o valor de um recurso devem especificar exatamente esse recurso. Por exemplo, um recurso pode especificar que o plano de fundo de todos os componentes do programa xmail deve ser vermelho:
No entanto, quando um programa (por exemplo, o próprio programa xmail, quando deseja descobrir qual cor de fundo usar) acessa o banco de dados de recursos por meio de funções Xlib, ele só pode solicitar o valor de um recurso específico. Ao contrário da maioria dos bancos de dados, os dados armazenados podem ser especificados livremente (por meio de caracteres curinga), mas a interrogação não pode. Por exemplo, um programa pode consultar o valor de xmail.main.background ou de xmail.toc.buttons.background, mas não pode usar ? ou * para verificar a cor de fundo de vários componentes de uma só vez.
Recursos também podem ser especificados para classes de elementos: por exemplo, apicativo.widget.widget.atributo: valor pode ser generalizado substituindo o nome do aplicativo por sua classe (por exemplo, Mail em vez de xmh), cada widget com seu tipo (Pane, Button, etc.) e o atributo com seu tipo.

## Localização e uso

Durante a execução do servidor de exibição do X, os recursos do X são armazenados em dois locais padrões, dependendo se elas se aplicam a todas as telas ou a uma tela particular:
* a propriedade RESOURCE_MANAGER da janela raiz da tela 0
* a propriedade SCREEN_RESOURCES da janela raiz de uma tela arbitrária
Os recursos do X são armazenados no servidor, e não em um arquivo de configuração, para permitir que programas iniciados em outros computadores os usem. De fato, um programa que se conecta a um servidor de exibição X a partir de outro computador pode acessar os recursos através do protocolo X. Usando o sistema antigo de armazenamento de parâmetros de programa no arquivo .Xdefaults cria a necessidade de copiar este arquivo para todos os outros computadores onde um programa pode ser iniciado.
Os recursos são manipulados pelo programa xrdb. Em particular, muitas configurações do servidor de exibição X executam o xrdb na inicialização, instruindo-o a ler os recursos do arquivo .Xresources no diretório pessoal do usuário. Deste ponto em diante, todos os outros programas encontram os recursos nos dois locais padrão. Você pode ver os recursos atuais de um console com xrdb -query.