Configuración del brillo del color en Linux/Xorg
-
21-09-2019 - |
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?
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