Как сделать if (((prgname == "firefox") || (prgname == "uzbl-core")) && (family != "bar") && (family != "baz"))? Попробовал так - не работает:
<match>
<test name="prgname" compare="eq" qual="any">
<string>firefox</string>
</test>
<test name="prgname" compare="eq" qual="any">
<string>uzbl-core</string>
</test>
<test name="family" compare="not_eq" qual="all">
<string>hackpad</string>
</test>
<test name="family" compare="not_eq" qual="all">
<string>FontAwesome</string>
</test>
<edit name="family" mode="prepend_first" binding="strong">
<string>Terminus</string>
<string>Fixed</string>
</edit>
</match>
Сто лет не пробовал, но, кажется, OR делается через
<match>
<clause1/>
<action/>
</match>
<match>
<clause2/>
<action/>
</match>
а AND — обычным перечислением условий.
@l29ah И кажется, что qual почти все в интернете используют неправильно, потому что он относится не к нескольким условиям <test>, а к многоэлементным значениям в них (которые редко встречаются).
Тебе всего лишь надо попробовать
<match>
<test name="prgname" compare="eq">
<string>firefox</string>
</test>
<test name="family" compare="not_eq">
<string>hackpad</string>
</test>
<test name="family" compare="not_eq">
<string>FontAwesome</string>
</test>
<edit name="family" mode="prepend_first" binding="strong">
<string>Terminus</string>
<string>Fixed</string>
</edit>
</match>
<match>
<test name="prgname" compare="eq">
<string>uzbl-core</string>
</test>
<test name="family" compare="not_eq">
<string>hackpad</string>
</test>
<test name="family" compare="not_eq">
<string>FontAwesome</string>
</test>
<edit name="family" mode="prepend_first" binding="strong">
<string>Terminus</string>
<string>Fixed</string>
</edit>
</match>