Skip to main content

wayle_brightness/
lib.rs

1//! Backlight control for internal displays.
2//!
3//! All state is exposed via [`Property`](wayle_core::Property) fields that
4//! update automatically when brightness changes.
5//!
6//! # Quick Start
7//!
8//! ```rust,no_run
9//! use wayle_brightness::{BrightnessService, Percentage};
10//!
11//! # async fn example() -> Result<(), wayle_brightness::Error> {
12//! let Some(brightness) = BrightnessService::new().await? else {
13//!     return Ok(());
14//! };
15//!
16//! if let Some(device) = brightness.primary.get() {
17//!     println!("{}: {}", device.name, device.percentage());
18//!     device.set_percentage(Percentage::new(50.0)).await?;
19//! }
20//! # Ok(())
21//! # }
22//! ```
23//!
24//! # Watching for Changes
25//!
26//! ```rust,no_run
27//! use wayle_brightness::BrightnessService;
28//! use futures::StreamExt;
29//!
30//! # async fn example() -> Result<(), wayle_brightness::Error> {
31//! # let Some(brightness) = BrightnessService::new().await? else { return Ok(()) };
32//! let mut stream = brightness.primary.watch();
33//!
34//! while let Some(maybe_device) = stream.next().await {
35//!     if let Some(device) = maybe_device {
36//!         println!("brightness: {}", device.percentage());
37//!     }
38//! }
39//! # Ok(())
40//! # }
41//! ```
42//!
43//! # Non-systemd Systems
44//!
45//! Direct sysfs writes require `video` group membership.
46
47mod backend;
48/// [`BrightnessServiceBuilder`] for custom configuration.
49pub mod builder;
50/// [`BacklightDevice`] and monitoring.
51pub mod core;
52/// [`Error`] variants for backlight operations.
53pub mod error;
54mod monitoring;
55/// [`BrightnessService`] entry point.
56pub mod service;
57/// [`BacklightType`](types::BacklightType), [`Percentage`], [`DeviceName`].
58pub mod types;
59
60pub use core::BacklightDevice;
61
62pub use builder::BrightnessServiceBuilder;
63pub use error::Error;
64pub use service::BrightnessService;
65pub use types::{DeviceName, Percentage};
66
67#[doc = include_str!("../README.md")]
68#[cfg(doctest)]
69pub struct ReadmeDocTests;