Pregunta

¿Hay algún comando (o API) para establecer X.org/Linux Color Brightness?

En otras palabras, necesito algo tan útil como el xgamma comando pero para cambiar el brillo de RGB tiempo real.

¿Es esto la posibilidad?

¿Fue útil?

Solución

Utilizar el XF86VIDMode* familia de funciones.

#include <X11/Xlib.h>
#include <X11/extensions/xf86vmode.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
    Display *display;
    int screen;
    int major, minor;
    int i;
    XF86VidModeGamma orig;

    display = XOpenDisplay(NULL);
    if (!display) return -1;
    screen = DefaultScreen(display);
    if (!XF86VidModeQueryVersion(display, &major, &minor)
            || major < 2 || major == 2 && minor < 0
            || !XF86VidModeGetGamma(display, screen, &orig)) {
        XCloseDisplay(display);
        return -1;
    }

    for (i = 0; i <= 32; i++) {
        XF86VidModeGamma gamma;
        gamma.red = exp2f(2 - fabs(i - 16) / 4);
        gamma.green = gamma.red;
        gamma.blue = gamma.red;
        if (!XF86VidModeSetGamma(display, screen, &gamma)) break;
        printf("gamma: %f %f %f", gamma.red, gamma.green, gamma.blue);
        if (!XF86VidModeGetGamma(display, screen, &gamma)) break;
        printf(" -> %f %f %f\n", gamma.red, gamma.green, gamma.blue);
        sleep(1);
    }
    XF86VidModeSetGamma(display, screen, &orig);
    XF86VidModeGetGamma(display, screen, &orig);

    XCloseDisplay(display);
    return 0;
}

Esto trae el gamma de 0.25 a 4.0 y viceversa, y luego restaura el gamma original.

O podrías llamar repetidamente system("xgamma -gamma %f"), con casi los mismos resultados.

Otros consejos

Para controlar el brillo de la pantalla LCD:

echo 4 > /proc/acpi/video/GFX0/LCD/brightness

El rango es de 1 a 8.

xbacklight -set 80

Debe instalar este software desde su repositorio. Funciona bien en la mayoría de las computadoras portátiles, al menos en ThinkPads :-)

¿Puede ser que necesite xrandr?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top