9 releases (breaking)

Uses new Rust 2024

0.8.0 Sep 2, 2025
0.7.0 Jul 23, 2025
0.6.0 Jul 16, 2025
0.5.0 Sep 10, 2022
0.1.0 Jul 28, 2021

#211 in Hardware support

Download history 66/week @ 2025-08-13 76/week @ 2025-08-20 109/week @ 2025-08-27 139/week @ 2025-09-03 95/week @ 2025-09-10 46/week @ 2025-09-17 65/week @ 2025-09-24 108/week @ 2025-10-01 28/week @ 2025-10-08 68/week @ 2025-10-15 93/week @ 2025-10-22 33/week @ 2025-10-29 44/week @ 2025-11-05 33/week @ 2025-11-12 40/week @ 2025-11-19 39/week @ 2025-11-26

161 downloads per month
Used in 4 crates

0BSD license

49KB
969 lines

Overview

This crate provides definitions to get and set display brightness.

Linux and Windows are supported.

Example

use brightness::Brightness;
use futures::TryStreamExt;

async fn show_brightness() -> Result<(), brightness::Error> {
    brightness::brightness_devices().try_for_each(|dev| async move {
        let name = dev.device_name().await?;
        let value = dev.get().await?;
        println!("Brightness of device {} is {}%", name, value);
        Ok(())
    }).await
}

Linux

This crate interacts with devices found at /sys/class/backlight. This means that the ddcci-backlight kernel driver is required to control external displays (via DDC/CI).

Setting brightness is attempted using D-Bus and logind, which requires systemd 243 or newer. If this fails because the method is not available, the desired brightness is written to /sys/class/backlight/$DEVICE/brightness, which requires permission (udev rules can help with that).

Contribute

All contributions shall be licensed under the 0BSD license.

Dependencies

~0.6–35MB
~599K SLoC