A resource file contains text representing the default resource values for an application or set of applications.
The format of resource files is defined by Xlib — C Language X Interface. and is reproduced here for convenience only.
The format of a resource specification is
ResourceLine | = Comment | IncludeFile | ResourceSpec | <empty line> |
Comment | ="!" {<any character except null or newline>} |
IncludeFile | = "#" WhiteSpace "include" WhiteSpace FileName WhiteSpace |
FileName | = <valid filename for operating system> |
ResourceSpec | = WhiteSpace ResourceName WhiteSpace ":" WhiteSpace Value |
ResourceName | = [Binding] {Component Binding} ComponentName |
Binding | ="." | "*" |
WhiteSpace | = {<space> | <horizontal tab>} |
Component | = "?" | ComponentName |
ComponentName | = NameChar {NameChar} |
NameChar | = "a"-"z" | "A"-"Z" | "0"-"9" | "_" | "-" |
Value | ={<any character except null or unescaped newline>} |
Elements separated by vertical bar (|) are alternatives. Curly braces ({...}) indicate zero or more repetitions of the enclosed elements. Square brackets ([...]) indicate that the enclosed element is optional. Quotes ("...") are used around literal characters.
If the last character on a line is a backslash (\), that line is assumed to continue on the next line.
To allow a Value to begin with whitespace, the two-character sequence "\space" (backslash followed by space) is recognized and replaced by a space character, and the two-character sequence "\tab" (backslash followed by horizontal tab) is recognized and replaced by a horizontal tab character.
To allow a Value to contain embedded newline characters, the two-character sequence "\n" is recognized and replaced by a newline character. To allow a Value to be broken across multiple lines in a text file, the two-character sequence "\newline" (backslash followed by newline) is recognized and removed from the value.
To allow a Value to contain arbitrary character codes, the four-character sequence "\nnn", where each n is a digit character in the range of "0"-"7", is recognized and replaced with a single byte that contains the octal value specified by the sequence. Finally, the two-character sequence "\\" is recognized and replaced with a single backslash.