- Modularize Hyprland config into hyprland.d/ - Implement infinitely scalable monitor/workspace logic using templates and loop-based data structures - Consolidate host-specific configs (hyprlock, hyprpaper, waybar) into single templates - Resolve waybar symlink conflict and fix template execution errors - Integrate chezmoi data variables for scale, resolution, and peripherals
26 lines
1.5 KiB
Markdown
26 lines
1.5 KiB
Markdown
# Writing Modules
|
|
|
|
A Waybar module is usually a class derived from the `waybar::ALabel` class,
|
|
which is itself derived from `waybar::AModule`. Modules can also be derived
|
|
directly from `waybar::AModule`.
|
|
|
|
Module source files should go in `src/modules/`, while their headers should be
|
|
in `include/modules/`. The source file should be added to `src_files` in
|
|
`meson.build` according the appropriate feature flag, which should be listed in
|
|
`meson_options.txt`. The module instantiation should be added in
|
|
`src/factory.cpp`, while the module's header should be included in
|
|
`include/factory.hpp`.
|
|
|
|
A basic module will write text into its `label_` member (inherited from
|
|
`ALabel`) using its `set_markup()` method. You will usually want to have some
|
|
way of changing the text in said label to respond to external events, which can
|
|
be achieved by defining `ALabel`'s virtual `auto update() -> void` method for
|
|
your class. This function will be called whenever the `emit()` method for the
|
|
`dp` member (inherited from `AModule`) is called. The `update()` method should
|
|
also call the `update()` method from its parent class: `ALabel::update();`.
|
|
|
|
The simplest way of reacting to external events is by creating a polling module.
|
|
This can be done by initializing `ALabel` with some value for the `interval`
|
|
parameter and adding an `util::Sleeper_Thread` variable to your class, which
|
|
requires including the `util/sleeper_thread.hpp` header. The sleeper thread
|
|
should then be configured similarly to how it's done in `src/modules/clock.cpp`. |