ラップトップなどの画面輝度を変更するには brightness クレートを使用します。
1. 依存関係の追加
src-tauri ディレクトリで以下のコマンドを実行します。
cargo add brightness futures
2. 実装コード (非同期)
brightness クレートは非同期操作が基本です。
use brightness::Brightness;
use futures::TryStreamExt;
#[tauri::command]
async fn set_screen_brightness(level: u32) -> Result<(), String> {
// level: 0 - 100
let value = level.min(100).max(0);
// 全てのディスプレイに対して適用
let mut devices = brightness::brightness_devices();
// 見つかったデバイスそれぞれに設定
let mut found = false;
while let Ok(Some(mut device)) = devices.try_next().await {
found = true;
device.set(value).await.map_err(|e| e.to_string())?;
}
if !found {
return Err("No brightness control devices found".to_string());
}
Ok(())
}
#[tauri::command]
async fn get_screen_brightness() -> Result<u32, String> {
let mut devices = brightness::brightness_devices();
// 最初のデバイスの値を返す
if let Ok(Some(device)) = devices.try_next().await {
let val = device.get().await.map_err(|e| e.to_string())?;
return Ok(val);
}
Err("Device not found".to_string())
}
3. 注意点
- デスクトップ PC の外部モニターの場合、DDC/CI 対応が必要であり、ドライバや接続ケーブル (HDMI/DisplayPort) によっては機能しないことがあります。
- ラップトップの内蔵ディスプレイはほぼ確実に動作します。
- macOS はサポートされていません (
brightnessクレートが macOS に対応していないため)。