| ~~~~~~~~~~~~~~~~~~~ | |
| Local Customization | |
| ~~~~~~~~~~~~~~~~~~~ | |
| .. include:: prologue.rst | |
| BRLTTY supports the XDG configuration file paradigm. The most important | |
| capability this offers is an easy way to customize your BRLTTY configuration | |
| that won't be overwritten during an upgrade, reinstall, etc. The XDG paradigm | |
| defines standard locations for your own data files that will override BRLTTY's | |
| provided data files. In other words, you no longer need to modify BRLTTY's | |
| provided data files in order to make your own local customizations. | |
| The following data files are covered by this feature: | |
| * The configuration file (``brltty.conf``). | |
| * Text tables (``*.ttb``) and subtables (``*.tti``). | |
| See |README.TextTables| for details. | |
| * Attributes tables (``*.atb``) and subtables (``*.ati``). | |
| See |README.AttributesTables| for details. | |
| * Contraction tables (``*.ctb``) and subtables (``*.cti``). | |
| See |README.ContractionTables| for details. | |
| * Key tables (``*.ktb``) and subtables (``*.kti``). | |
| See |README.KeyTables| for details. | |
| The standard directory where you should put your customized files is | |
| ``/etc/xdg/brltty/``. | |
| The simplest way to customize a provided data file is to copy it to this | |
| directory, and then to modify your copy as needed. You can, however, just place | |
| your changes in your version of the file, and then ``include`` the provided | |
| file in order to automatically always pick up the latest versions of all the | |
| unchanged lines. | |
| For example: Let's say that you'd like to add your own key bindings to the | |
| ``laptop`` keyboard table. To do so, create ``/etc/xdg/brltty/laptop.ktb``, | |
| and place lines like these into it:: | |
| bind Key1 COMMAND1 | |
| bind Key2 COMMAND2 | |
| ... | |
| include laptop.ktb | |
| The ``XDG_CONFIG_HOME`` environment variable defines the base directory in | |
| which to check before the standard directory is checked. If it's set and not | |
| empty then the primary override directory is ``$XDG_CONFIG_HOME/brltty/``. If | |
| it either isn't set or is empty, but the ``HOME`` environment variable is set | |
| and not empty (the usual case when you're logged in) then the primary override | |
| directory is ``$HOME/.config/brltty/``. If both the ``XDG_CONFIG_HOME`` and | |
| ``HOME`` environment variables are either not set or empty (the usual case | |
| during the system boot sequence) then the primary override directory isn't | |
| defined. | |
| The ``XDG_CONFIG_DIRS`` environment variable defines a colon-separated list of | |
| secondary base directories. The ``brltty/`` subdirectory of each of these | |
| secondary base directories is BRLTTY's corresponding secondary override | |
| directory. So, for example, if ``XDG_CONFIG_DIRS`` is set to ``/a:/b`` then | |
| BRLTTY will check ``/a/brltty/`` and ``/b/brltty/`` (in that order). If | |
| ``XDG_CONFIG_DIRS`` is set and not empty then ``/etc/xdg/brltty/`` is no longer | |
| implicitly checked. | |
| For backward compatibility, the original data file override paradigm is also | |
| supported. If the ``HOME`` environment variable is set and not empty then the | |
| tertiary override directory is ``$HOME/.brltty/``. If it isn't set, or if it's | |
| empty, then the tertiary override directory is ``./.brltty/``. |