Chapter 6. Development

6.1. Introduction

This chapter provides resources for developers seeking to make their programs accessible, test accessibility, and improve the accessibility of their software.

6.2. Colors

Do not assume that users can distinguish all the colors used in your program. While official statistics on the prevalence of color vision deficiency are lacking, it is estimated that approximately 5% of the population is affected by some form of color blindness.

6.2.1. Colors Guidelines

Avoid using color as the sole means of conveying information. If color must be used, provide a straightforward and well-documented method for configuring color settings. Where possible, ensure support for the $NO_COLOR environment variable to accommodate user preferences.

6.2.2. Colors Checker

The graphics/kontrast package provides the Kontrast GUI utility to check if the color combinations are distinct enough to be readable and accessible. To install:

# pkg install kontrast

6.3. Command Line Interface

The CLI is generally considered accessible by a screen reader. However, it is important to understand some concepts, follow best practices, and avoid certain mistakes to ensure an accessible UI.

Dahlke, Karl. Command Line Programs for the Blind. Available at: http://www.eklhad.net/philosophy.html. This article discusses the concept of presenting information in one dimension and addresses the accessibility challenges inherent in programs designed exclusively for sighted users.

Sampath, H., Merrick, A., & Macvean, A. (2021). Accessibility of Command Line Interfaces. In Proceedings of the CHI Conference on Human Factors in Computing Systems (CHI '21). ACM. Available at: https://dl.acm.org/doi/fullHtml/10.1145/3411764.3445544. This paper presents guidelines and common pitfalls to avoid when designing command-line interfaces that are accessible to screen reader users.

6.4. Libraries

6.4.1. Gnome

AT-SPI (Assistive Technology Service Provider Interface), accessibility/at-spi2-core, is a framework that establishes a communication channel between applications and assistive technologies. To install, execute:

# pkg install at-spi2-core

AT-SPI offers a wide range of features. For more information, refer to the following resources: README, Atk wiki, AT SPI Wiki, and GNOME Accessibility Team Wiki.

Some wrappers are available: accessibility/rubygem-atk (Ruby), accessibility/py-atspi (Python), and accessibility/atkmm (C++).

6.4.2. QT

accessibility/libqaccessibilityclient establishes a communication channel between applications and assistive technologies. In particular, it provides a bridge between applications built with Qt and the AT-SPI framework previously described. For full documentation, refer to the API Reference and the official repository. To install:

# pkg install libqaccessibilityclient

Libraries accessibility/qt5-speech and accessibility/qt6-speech provide access to a Text-To-Speech functionality (specifically to accessibility/speech-dispatcher). Documentation is available at https://doc.qt.io/archives/qt-5.15/qtspeech-index.html and https://doc.qt.io/qt-6/qttexttospeech-index.html. To install, run:

# pkg install qt5-speech
# pkg install qt6-speech

6.4.3. Speech Synthesis

accessibility/speech-dispatcher provides a simple, high level, and device independent layer for access to Speech Synthesizers. To install, run:

# pkg install speech-dispatcher

For detailed documentation, refer to the official Speech Dispatcher website: https://freebsoft.org/speechd.

A Python wrapper for the library is provided by the accessibility/py-speech-dispatcher.

6.4.4. Liblouis

devel/liblouis provides an API for translating many languages to and from Braille. To install, execute:

# pkg install liblouis

The library provides many features, they are documented on the project website at Documentation.

Liblouis provides also a Python API, Python bindings.

6.5. Tools

accessibility/accerciser provides an accessibility inspection tool for applications developed for the GNOME desktop environment. To install it, run:

# pkg install accerciser

For detailed usage and features, refer to accerciser(1). Additional documentation is available in the REAMDE.md and the Accerciser User Guide.


Last modified on: June 17, 2025 by Alfonso Siciliano