2009-12-26 11 views

Répondre

7

Utilisez la famille de fonctions XF86VidMode*.

#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; 
} 

Ceci ramène le gamma de 0,25 à 4,0 et revient, puis restaure le gamma d'origine.

Ou vous pouvez simplement appeler à plusieurs reprises system("xgamma -gamma %f"), avec à peu près les mêmes résultats.

+0

je vous remercie pour l'exemple et le lien vers ces fonctions –

3

Pour contrôler la luminosité de l'écran LCD:

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

La gamme est de 1 à 8.

+0

Pour la luminosité globale du moniteur, d'accord (et merci). Mais pour régler la luminosité d'une seule couleur? –

+0

Il n'y a pas de '/ proc/acpi/video /' sur mon Thinkpad X61 (Debian instable) ... – mirabilos

1

peut être vous avez besoin XrandR?

+0

Malheureusement, il ne fait pas ce dont j'ai besoin ... –

+0

Dans ce cas, vous pouvez le faire uniquement via soft-fournisseur spécifique :( –

3
xbacklight -set 80 

Vous devez installer ce logiciel à partir de votre référentiel. Fonctionne bien sur la plupart des ordinateurs portables, au moins sur ThinkPads :-)

+0

Merci, mais j'ai besoin d'un moyen simple de changer la couleur (c'est RGB) la luminosité pas la luminosité du rétroéclairage ... –