mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-10-30 00:37:23 +01:00
47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
extern "C" {
|
|
#include "brightness.h"
|
|
#include "common/strutil.h"
|
|
}
|
|
|
|
#include <Application.h>
|
|
#include <Screen.h>
|
|
|
|
const char* ffDetectBrightness([[maybe_unused]] FFBrightnessOptions* options, FFlist* result) {
|
|
// We need a valid be_app to query the app_server here.
|
|
BApplication app("application/x-vnd.fastfetch-cli-fastfetch");
|
|
BScreen screen{}; // default screen is the main one
|
|
|
|
do {
|
|
if (!screen.IsValid()) {
|
|
continue;
|
|
}
|
|
|
|
float value = 1.0f;
|
|
status_t status = screen.GetBrightness(&value);
|
|
if (status != B_OK) {
|
|
continue;
|
|
}
|
|
|
|
monitor_info monitor;
|
|
// WARNING: This is experimental new Haiku API
|
|
status_t err = screen.GetMonitorInfo(&monitor);
|
|
|
|
FFBrightnessResult* brightness = FF_LIST_ADD(FFBrightnessResult, *result);
|
|
|
|
if (err == B_OK) {
|
|
ffStrbufInitF(&brightness->name, "%s %s (%d)", monitor.vendor, monitor.name, screen.ID().id);
|
|
ffStrbufTrimRightSpace(&brightness->name);
|
|
} else {
|
|
ffStrbufInitF(&brightness->name, "Screen %d", screen.ID().id);
|
|
}
|
|
|
|
brightness->max = 1.0f;
|
|
brightness->min = 0.0f;
|
|
brightness->current = value;
|
|
brightness->builtin = true;
|
|
|
|
} while (screen.SetToNext() == B_OK);
|
|
|
|
return nullptr;
|
|
}
|