Isso é explicado no manual X ( man 7 X
):
When an application looks for the value of a resource, it specifies a complete path in the hierarchy, with both class and instance names. However, resource values are usually given with only partially specified names and classes, using pattern matching constructs. An asterisk (
*
) is a loose binding and is used to represent any number of intervening components, including none. A period (.
) is a tight binding and is used to separate immediately adjacent components.
Isso significa que
URxvt*scrollBar:false
acontece de ser o mesmo que
URxvt.scrollBar:false
desde que não haja nenhum componente intermediário entre URxvt
e o componente scrollBar
(se eu ler o manual urxvt
corretamente).
No entanto,
URxvt.keysym.Shift-Up: command:3]720;1URxvt*Shift-Up: command:3]720;1*Shift-Up: command:3]720;1URxvt*scrollBar:false
7
7
7
provavelmente poderia ser escrito
URxvt.scrollBar:false
para ignorar esse componente keysym
interveniente. Isso também definirá qualquer outro recurso Shift-Up
para a classe URxvt
, se houver alguma outra.
URxvt.keysym.Shift-Up: command:3]720;1URxvt*Shift-Up: command:3]720;1*Shift-Up: command:3]720;1%pre%7
7
7
configuraria esse recurso para todas classes X.
O asterisco funciona como um "caractere globbing", como *
faz para nomes no shell, mas para nomes de recursos X. Além disso, acredito que você não pode colocar um ponto no meio de um nome de componente, então a analogia não vai até o fim.