Monitor – How to Adjust Desktop Monitor Brightness

brightnessmonitorxrandr

Is it possible to adjust desktop monitor brightness like on laptops?
Yes all desktop monitors have separate menu for it.
But is it possible to change this to something like Winkey+(F1..F12)?

Monitor is connected via VGA or DVI cable.

  • OS: Ubuntu 14.04
  • Desktop monitors

Best Answer

With the script below, you can set the screen's brightness from 0.1 to 1.0, in 9 steps, on any system that "obeys" xrandr.

Just run it with either the argument "up" or "down" to increase/decrease the current brightness one step.

The script

#!/usr/bin/env python3
import subprocess
import sys

arg = sys.argv[1]

# get the data on screens and current brightness, parsed from xrandr --verbose
current = [l.split() for l in subprocess.check_output(["xrandr", "--verbose"]).decode("utf-8").splitlines()]
# find the name(s) of the screen(s)
screens = [l[l.index("connected")-1] for l in current if "connected" in l]
# find the current brightness
currset = (round(float([l for l in current if "Brightness:" in l][0][1])*10))/10
# create a range of brightness settings (0.1 to 1.0)
sets = [n/10 for n in list(range(11))][1:]
# get the current brightness -step 
step = len([n for n in sets if currset >= n])

if arg == "up":
    if currset < 1.0:
        # calculte the first value higher than the current brightness (rounded on 0.1)
        nextbright = (step+1)/10
if arg == "down":
    if currset > 0.1:
        # calculte the first value lower than the current brightness (rounded on 0.1)
        nextbright = (step-1)/10
try:
    for scr in screens:
        # set the new brightness
        subprocess.Popen(["xrandr", "--output", scr, "--brightness", str(nextbright)])
except NameError:
    pass

How to use

  1. Copy the script into an empty file, save it as set_brightness.py
  2. Test- run it by the commands:

    python3 /path/to/set_brightness.py up
    

    and

    python3 /path/to/set_brightness.py down
    
  3. If all works fine, add both commands to shortcut keys: choose: System Settings > "Keyboard" > "Shortcuts" > "Custom Shortcuts". Click the "+" and add both commands above to two different shortcut keys.

Explanation

The explanation on the code is pretty much in the script :)

Notes

As it is, the scripts sets the brightness equally for both the "main" and possible additional screen(s).