Bach

A tool to help you find defined compose sequences.

Usage

Provide a query as a positional argument, which will then be matched against + the name of the unicode character produced by a sequence when -n is specified (case insensitive)[^1] + the result string of a compose sequence when -r is specified (case sensitive) + the comment following a sequence's definition when -c is specified (case insensitive)

or all three when neither -n, -r, nor -c are specified.

Personal compose file

bach will look for your personal compose file at XCOMPOSEFILE, or ~/.XCompose if this is not set.

Global compose files

bach will need to locate X11's global compose sequence files if they are referred to in your personal compose file (e.g. via include "%L"), or if you have no such file. By default, it will use /usr/share/X11/locale, but this can be changed via + setting BACH_X11_SYSTEM_DIR_DEFAULT at compile time[^2] + setting BACH_X11_SYSTEM_DIR at runtime + the --x11-system-dir argument

in order of increasing priority.

Limitations

Sequence compatibility

bach understands the full xcompose file format as described in Compose(5), however I have found mixed compatibility for this full specification across different programs and platforms, in particular: + Modifiers are often ignored and can render a sequence invalid + Octal and hex character escapes are not always supported + Specifying only a keysym as the result of a sequence is not recognised in some cases

License

Bach is distributed under the BSD-2-Clause Plus Patent License.