Jul 20, 2023

Haptic/visual/audio feedback for GNOME

feedbackd provides a DBus daemon feedbackd to act on events to provide haptic, visual and audio feedback. It offers a library libfeedback and GObject introspection bindings to ease using it from applications.

We’re today going to delve into an incredibly useful software in the FreeBSD ports collection known as feedbackd. This is an essential piece of software that falls in the category of accessibility, featuring the capability to provide haptic or auditory feedback based on the user interface interaction.

tips If you’re not already familiar with the FreeBSD ports collection, it’s basically a large compilation of third-party software for FreeBSD systems, making it super easy to install and manage many open-source applications, utilities and libraries.

Introducing Feedbackd

feedbackd is a daemon that provides a high-level API for feedback manipulation applications and other infrastructure components present in the system. It’s designed to enable the production of various forms of feedback like vibrations, LEDs, sound, and more, which interacts with the user interface. To be more technical, feedbackd besides its main functionalities, offers a D-Bus interface for feedback theme configuration and is written in C using gio and glib.

Setting Up Feedbackd

To use feedbackd, the first thing to do is to get the required software installed.

cd /usr/ports/accessibility/feedbackd/
make install clean

This will fetch the required files and install feedbackd on your FreeBSD system.

Configuring Feedbackd

To use feedbackd effectively, you need to set it up, primarily pointing to a theme. The theme will describe the specific mappings of events to feedback effects. This path usually is a JSON file that describes the feedback theme.

feedbackd --theme-dir=/usr/local/share/feedbackd/themes/default.json

Remember, the theme file default.json must exist in the specified directory for this configuration to take effect.

Using Feedbackd

After setting up feedbackd, you can use the fdb_client_new function to create a new Feedbackd client, and subsequently connect to the feedbackd daemon. The function will return an instance of FdbClient, which will allow interaction with feedbackd.

To trigger feedback based on a particular event, use the fdb_client_feedback_begin function. This function requires mainly the event and the application id.

Feedbackd Use Cases

Considering the enormous potential of the Internet of Things IoT, it isn’t difficult to see why auditory or haptic feedback can be massively valuable.

For instance, developers can integrate feedbackd into their applications to provide real-time haptic feedback based on user actions, such as click-feedback in mobile or touchscreen applications. This enhances the overall user experience, making the user interface more intuitive and responsive.

In the context of accessibility, feedbackd can be utilized to make applications more user-friendly to those with specific disabilities. For instance, users with visual impairments can receive auditory feedback or those with hearing impairments can receive haptic feedback.

Furthermore, its integration with D-Bus allows feedbackd to be used in a myriad of scenarios inclusive of system notifications, feedback on system events, real-time game feedback, and more.


If you’ve followed along, you now should have a good idea of what feedbackd is, why it’s incredibly beneficial, and how you might integrate it within your own FreeBSD projects.

feedbackd is a valuable tool to have in your FreeBSD toolkit, especially if you’re creating applications that require haptic or auditory feedback. However, always remember that while feedbackd provides us with an exciting array of capabilities, a good developer must always have a well-rounded set of tools.

If you are running a FreeBSD system that involves Internet security related tasks, we recommend looking at ports like nmap [link]https// This port offers network exploration and security auditing. Like feedbackd, it has the power to transform your FreeBSD experience.

With more practice and exposure to the broad range of FreeBSD ports, you’ll find yourself more comfortable navigating the FreeBSD ecosystem. As they say in FreeBSD - “The power to serve”!

Checkout these related ports:
  • Yasr - General-purpose console screen reader
  • Wlsunset - Day/night gamma adjustments for Wayland
  • Wl-gammarelay-rs - Adjust color temperature/brightness under Wayland via DBus
  • Speech-dispatcher -
  • Sctd - Set color temperature (sct) daemon
  • Sct - Utility to change screen temperature
  • Rubygem-atk - Ruby binding of ATK
  • Redshift - Adjusts the color temperature of your screen
  • Qt6-speech - Accessibilty features for Qt6
  • Qt5-speech - Accessibilty features for Qt5
  • Py-speech-dispatcher - Python bindings for Speech Dispatcher
  • Py-papi - ATK accessibility wrapper for python
  • Py-atspi - Python API for the D-BUS based SPI framework
  • Orca - Scriptable screen reader
  • Linux-c7-atk - Accessibility Toolkit (Linux CentOS ${LINUX_DIST_VER})