Skip to content
Adam Harvey edited this page Mar 6, 2025 · 4 revisions

The cffi module gives full control of a GTK widget to a third-party dynamic library, to create more complex modules using different programming languages.

Config

Addressed by cffi/<name>

option typeof default description
module_path string The path to the dynamic library to load to control the widget.

Some additional configuration may be required depending on the cffi dynamic library being used.

Style

The classes and IDs are managed by the cffi dynamic library.

Examples:

C example:

~/.config/waybar/config

"cffi/c_example": {
    "module_path": ".config/waybar/cffi/wb_cffi_example.so"
}

Developing new CFFI modules

CFFI modules require a handful of functions and constants to be defined with C linkage. The method to achieve this depends on the programming language being used (search for FFI / Foreign Function Interface).

An example written in C can be found in resources/custom_modules/cffi_example/

The list of symbols to define can be found in resources/custom_modules/cffi_example/waybar_cffi_module.h

Known CFFI modules

waylyrics - Module to display sync lyrics current line of in spotify.

If you develop your own module, please add it here.

Known CFFI language bindings
Clone this wiki locally