# pkg install kontrast
Chapter 6. Development
Table of Contents
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:
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