Possible to change screen brightness with C?

前端 未结 4 1310
忘掉有多难
忘掉有多难 2020-12-20 01:18

Using C in Linux, would it be possible to change the brightness of the viewing screen? This isn\'t expected to be portable other than running on my installs of Ubuntu and Fe

相关标签:
4条回答
  • 2020-12-20 01:44

    Check out the xbacklight source. For example, the following code sets the screen brightness to 50%.

    // brightness.c
    // gcc -o brightness brightness.c -lXrandr -lX11
    
    #include <X11/Xatom.h>
    #include <X11/Xlib.h>
    #include <X11/extensions/Xrandr.h>
    
    #define BRIGHTNESS 0.5 // Target brightness between 0.0 and 1.0
    
    int main(int argc, char *argv[])
    {
            Display *dpy;
            static Atom backlight;
            int screen = 0, o = 0;
            Window root;
            XRRScreenResources *resources;
            RROutput output;
            XRRPropertyInfo *info;
            double min, max;
            long value;
    
            dpy = XOpenDisplay(NULL);
            backlight = XInternAtom (dpy, "Backlight", True);
            root = RootWindow(dpy, screen);
            resources = XRRGetScreenResources(dpy, root);
            output = resources->outputs[o];
            info = XRRQueryOutputProperty(dpy, output, backlight);
            min = info->values[0];
            max = info->values[1];
            XFree(info); // Don't need this anymore
            XRRFreeScreenResources(resources); // or this
    
            value = BRIGHTNESS * (max - min) + min;
    
            XRRChangeOutputProperty(dpy, output, backlight, XA_INTEGER,
                            32, PropModeReplace, (unsigned char *) &value, 1);
            XFlush(dpy);
            XSync(dpy, False);
            return 0;
    }
    
    0 讨论(0)
  • 2020-12-20 01:48

    Poke /sys/class/backlight/*/brightness. Yes, even in C.

    0 讨论(0)
  • 2020-12-20 01:50

    Yes, but not portably -- you need a platform-specific function, there is nothing in the C standard library.

    0 讨论(0)
  • 2020-12-20 02:04

    I'd start with selecting from the following list of ubuntu pacakges, the tool that allows you to manage your screen's brightness (hint: it depends on the brand)

    nvidia-settings - Tool of configuring the NVIDIA graphics driver
    smartdimmer - Change LCD brightness on Geforce cards
    armada-backlight - adjust backlight of Compaq Armada laptops (E300, M500, M700)
    ddccontrol - a program to control monitor parameters
    eeepc-acpi-scripts - Scripts to support suspend and hotkeys on the Asus Eee PC laptop
    fnfxd - ACPI and hotkey daemon for Toshiba laptops
    gddccontrol - a program to control monitor parameters
    spicctrl - Sony Vaio controller program to set LCD backlight brightness
    tpb - program to use the IBM ThinkPad(tm) special keys
    xfce4-power-manager - power manager for Xfce desktop
    xfce4-power-manager-plugins - power manager plugins for Xfce panel
    xvattr - Utility to change Xv attributes
    

    Once you have selected it,

    sudo apt-get build-dep <pkgname>
    apt-get source --compile <pkgname> 
    

    should get you on the right track

    0 讨论(0)
提交回复
热议问题