En el Sistema X Window , los recursos X son parámetros de programas informáticos como el nombre de la fuente utilizada en los botones , el color de fondo de los menús , etc. Se utilizan junto con, o como alternativa a, los parámetros de la línea de comandos y los archivos de configuración . [ 1 ] [ 2 ]
Formato
A nivel del protocolo X, los recursos son cadenas de caracteres que se almacenan en el servidor y no tienen un significado especial. La sintaxis y el significado de estas cadenas los definen las bibliotecas y aplicaciones cliente.
Cada recurso X especifica un parámetro para un programa o uno de sus componentes. Un recurso completamente especificado tiene el siguiente formato:
application.component.subcomponent.subcomponent.attribute: value
Este recurso especifica el valor del attributecomponente component.subcomponent.subcomponentdel programa application. Los recursos se utilizan a menudo para especificar los parámetros de los widgets creados por la aplicación. Dado que estos widgets están organizados en una estructura de árbol , la secuencia de nombres de componentes/subcomponentes se utiliza para identificar un widget indicando su ruta dentro de la estructura. El valor del recurso corresponde al valor de un atributo de este widget, como su color de fondo, etc.
Los recursos X también se utilizan para especificar parámetros del programa que no están directamente relacionados con sus widgets, utilizando la misma sintaxis.
Los recursos X están diseñados para permitir que se especifique el mismo parámetro para más de un programa o componente. Esto se logra mediante el uso de caracteres comodín en la especificación del recurso. En particular, el carácter ? se utiliza para coincidir con el nombre de la aplicación o un componente individual. El carácter * se utiliza para coincidir con cualquier número de componentes. Estos dos caracteres pueden usarse en cualquier lugar, excepto al final del nombre del recurso. En otras palabras, un atributo no puede ser reemplazado por un carácter comodín.
Si bien los recursos pueden especificarse de forma aproximada mediante caracteres comodín, las consultas para obtener el valor de un recurso deben especificarlo con exactitud. Por ejemplo, un recurso puede especificar que el fondo de cada componente del xmailprograma debe ser rojo:
xmail*background: red
Sin embargo, cuando un programa (por ejemplo, el propio programa xmail , cuando quiere averiguar qué color de fondo usar) accede a la base de datos de recursos mediante funciones de Xlib , solo puede solicitar el valor de un recurso específico. A diferencia de la mayoría de las bases de datos , los datos almacenados se pueden especificar de forma flexible (mediante caracteres comodín), pero la consulta no. Por ejemplo, un programa puede consultar el valor de xmail.main.backgroundo de xmail.toc.buttons.background, pero no puede usar ?o *para comprobar el color de fondo de varios componentes a la vez.
También se pueden especificar recursos para clases de elementos: por ejemplo, application.widget.widget.attribute: valuese puede generalizar reemplazando el nombre de la aplicación con su clase (por ejemplo, Mailen lugar de xmh), cada widget con su tipo ( Pane, Button, etc.) y el atributo con su tipo.
Ubicación y uso
Durante la ejecución del servidor de visualización X , 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
RESOURCE_MANAGERpropiedad de la ventana raíz de la pantalla 0 - la
SCREEN_RESOURCESpropiedad de la ventana raíz de una pantalla arbitraria

Los recursos X se almacenan en el servidor en lugar de en un archivo de configuración para permitir que los programas iniciados desde otros equipos los utilicen. De hecho, un programa que se conecta a un servidor de visualización X desde otro equipo puede acceder a los recursos mediante el protocolo X. El antiguo sistema de almacenamiento de parámetros del programa en un .Xdefaultsarchivo obligaba a copiar dicho archivo a todos los demás equipos donde se pudiera ejecutar el programa.
Los recursos son manipulados por el programa xrdb . En particular, muchas configuraciones de servidor de visualización X ejecutan xrdb al inicio, indicándole que lea los recursos del .Xresourcesarchivo en el directorio personal del usuario . A partir de este momento, todos los demás programas encuentran los recursos en las dos ubicaciones estándar. Puede ver los recursos actuales desde una consola con xrdb -query.
Bibliotecas de clientes
Xlib contiene varias funciones prácticas para acceder a los recursos del servidor y manipularlos localmente. Estas funciones son utilizadas tanto por xrdb como por cualquier otro programa que necesite dichos recursos. La mayoría de estas funciones manipulan una base de datos de recursos , que es una estructura de datos local que representa un conjunto de especificaciones de recursos. Las funciones de Xlib para la gestión de recursos son:
- funciones para leer los recursos del servidor en una cadena local (
XResourceManagerStringyXScreenResourceString) - funciones para crear, manipular y destruir una base de datos de recursos locales (
XrmInitialize,XrmDestroyDatabase,XrmGetFileDatabase,XrmPutFileDatabase,XrmGetStringDatabase,XrmLocaleOfDatabase,XrmSetDatabase,XrmGetDatabase,XrmCombineFileDatabase,XrmCombineDatabase,XrmMergeDatabases,XrmParseCommand) - funciones para buscar recursos y almacenar otros nuevos (
XrmGetResource,XrmQGetResource,XrmQGetSearchList,XrmQGetSearchResource,XrmPutResource,XrmQPutResource,XrmPutStringResource,XrmQPutStringResource,XrmPutLineResource,XrmEnumerateDatabase)
En concreto, la función XrmParseCommandpermite analizar los argumentos de la línea de comandos y leer los recursos, que luego se añaden a una base de datos de recursos local. De esta forma, los recursos se pueden leer desde el servidor y utilizarse como valores predeterminados que se modifican mediante los argumentos de la línea de comandos.
Para mayor eficiencia, se definen enteros llamados quarks para representar cadenas locales. Los quarks son similares a los átomos , pero representan cadenas almacenadas localmente en lugar de en el servidor. Varias funciones de Xlib establecen una asociación entre cadenas y quarks. Al usar cualquiera de las funciones mencionadas, se pueden usar quarks en lugar de nombres de componentes; por lo tanto, los nombres de los recursos corresponden a listas de quarks.
Véase también
Referencias
Enlaces externos
- Recursos esenciales de X para nerds de la tecnología
- Funciones del administrador de recursos de la biblioteca cliente Xlib
- Sistema X Window