A tool to help you find defined compose sequences.
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.
By default, only sequences that start with the compose key are shown, All
sequences (e.g. those starting with dead keys) can be shown with the -a
flag.
bach
can return matching sequences in two formats: as they would appear in an
.XCompose
file (by using the -x
flag), or its own “pretty” format (the
default).
The .XCompose
format is described in Compose(5)
.
The pretty format is, for each sequence,
<result> ↤ <events> ~ <info>
where
+ result is the string or X11 keysym resulting from that compose sequence.
To help differentiate keysyms, they are set in magenta italics.
+ events are the keypresses needed. These are mostly self-explanatory, but
the following symbols are used for special keys:
- the compose key itself is a magenta ♦
- keypad keys are in blue
- dead keys are a yellow dotted circle with the combining mark, e.g. ◌̂
for
XK_dead_circumflex
+ α
is used for XK_dead_greek
+ ι
is used for XK_dead_iota
+ ¤
is used for XK_dead_currency
+ a–e
are used for XK_dead_a–e
- other special symbols are in cyan:
+ ␛
for XK_Escape
+ ␈
for XK_BackSpace
+ ␉
for XK_Tab
+ ␍
for XK_Return
+ ␠
for XK_space
+ ⍽
for XK_nobreakspace
+ ↑
, ↓
, ←
, →
respectively for XK_Up
, XK_Down
, XK_Left
and XK_Right
.
+ info is the sequence's inline comment in the compose file, or the name of
the character produced if there is no such comment[^1].
bach
will look for your personal compose file at XCOMPOSEFILE
, or
~/.XCompose
if this is not set.
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.
bach
will display sequences that are clobbered by identical or longer
sequences that are defined later\124
) and hex (\x4F
) character escapes are always interpreted as
the corresponding character in unicode.UTF-8
locale in generalbach
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
Bach is distributed under the BSD-2-Clause Plus Patent License.