| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| Using Systemd Service Management | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| .. include:: prologue.rst | |
| .. |configuration directory| replace:: /usr/lib | |
| .. |unit directory| replace:: |configuration directory|/systemd/system | |
| .. |users directory| replace:: |configuration directory|/sysusers.d | |
| .. |files directory| replace:: |configuration directory|/tmpfiles.d | |
| .. |commands directory| replace:: /usr/libexec/brltty | |
| .. |build subdirectory| replace:: Autostart/Systemd | |
| .. |default configuration file| replace:: ``/etc/brltty.conf`` | |
| Initial Setup | |
| ============= | |
| The following steps need to be performed: | |
| * Systemd service and path units need to be installed | |
| into the |unit directory| directory: | |
| + brltty@.service | |
| + brltty-device@.service | |
| + brltty.path | |
| + brltty@.path | |
| * A wrapper script needs to be installed | |
| into the |commands directory| directory: | |
| + systemd-wrapper | |
| * A file defining the non-root user that BRLTTY is to run as, | |
| including the supplementary groups that it needs access to, | |
| needs to be installed into the |users directory| directory: | |
| + sysusers -> brltty.conf | |
| * A file defining the files and directories that should exist | |
| needs to be installed into the |files directory| directory: | |
| + tmpfiles -> brltty.conf | |
| A make file has been provided in order to make this easy to do. | |
| It can be found within the |build subdirectory| subdirectory | |
| of BRLTTY's build tree. | |
| To install all of these files, change to this directory and run the command:: | |
| make install | |
| You then need to tell Systemd that the files have been installed. | |
| To do this, run the command:: | |
| systemctl daemon-reload | |
| That's all you need to do. | |
| Your system is now able to manage BRLTTY instances via Systemd. | |
| Managing BRLTTY Instances | |
| ========================= | |
| Systemd manages BRLTTY instances on your system in a number of ways. | |
| USB Braille Devices | |
| ------------------- | |
| If BRLTTY's Udev rules have also been installed | |
| then a BRLTTY instance will be automatically started | |
| when a USB braille device is connected, | |
| and automatically stopped when it's disconnected. | |
| Several braille devices can be managed in this way at the same time. | |
| They can be connected and disconnected at any time and in any order. | |
| The default configuration file - |default configuration file| - is used | |
| except that any ``braille-device`` and ``braille-driver`` directives | |
| that it specifies are ignored because they're overridden by the Udev rules. | |
| It's safe, therefore, to specify a default non-USB braille device | |
| within |default configuration file|. | |
| The Default Instance | |
| -------------------- | |
| The default BRLTTY instance is the one that's configured | |
| via the file |default configuration file|. | |
| It's managed by applying standard Systemd commands to BRLTTY's path unit. | |
| For example:: | |
| systemctl enable brltty.path | |
| systemctl start brltty.path | |
| systemctl stop brltty.path | |
| systemctl disable brltty.path | |
| Additional Instances | |
| -------------------- | |
| Additional BRLTTY instances can be managed via path instance references. | |
| Each of them has its own configuration file. | |
| If, for example, the name of an instance is ``iname``, then | |
| its Systemd path name would be ``brltty@iname``, | |
| its configuration file would be ``/etc/brltty_iname.conf``, | |
| and it'd be managed via Systemd commands like these:: | |
| systemctl enable brltty@iname.path | |
| systemctl start brltty@iname.path | |
| systemctl stop brltty@iname.path | |
| systemctl disable brltty@iname.path | |
| Any number of instances may be managed in this way. | |
| These instances don't implicitly also read the default configuration file | |
| (|default configuration file|). | |
| You can, however, explicitly include it | |
| from within any instance-specific configuration file: | |
| .. parsed-literal:: include |default configuration file| | |