Brightness Adjustment on Desktop Computer

I have Ubuntu 12.10

I need an application/software that can increase and decrease my brightness.

I know I can do it through my pc monitor but I don’t want that. I want to control it through a software.

I personally cannot find an application about this issue.

I know that it is possible because the OS has the Fading effects before Screen Savers.

I want to control brightness through a software for desktop pc.

Asked By: DjBmNukez


Apart from the controls on your monitor, you can do it via your driver applet in case you are using proprietary drivers from nvidia or ati or you can use xbacklight from the software center.

Answered By: Arup Roy Chowdhury

the brightness can be adjusted via the DDC/IC protocol. The software is called ddccontrol and can be found here. For an example see my question.

I can control my monitor (brightness, contrast, standby, …) with the software. But I can just send absolute brightness values to the monitor. I would like to in-/decrease the brightness with my dedicated keyboard keys. Any idea? I have already an open question here.

Answered By: remi

Install Brightness Controller from its PPA

sudo add-apt-repository ppa:apandada1/brightness-controller
sudo apt update
sudo apt install brightness-controller

Screenshot 1

Picture: Brightness Controller

Now you can adjust the brightness using the slider.

Note: You will have to disable redshift/night light for the program to work properly.

Answered By: Archisman Panigrahi

Use DDC protocol:

sudo apt-get install ddccontrol
sudo modprobe i2c-dev

sudo ddccontrol -p

Note the device e.g “/dev/i2c-2”

Set the permissions (if needed):

sudo chmod a=+rw /dev/i2c-2

Under “Brightness and Contrast”, the control address is “0x10” in my case.

ddccontrol dev:/dev/i2c-2 -r 0x10 -w 70

70 is the brightness value to set.

If you only want to query:

ddccontrol dev:/dev/i2c-2 -r 0x10

You can play with contrast and other parameters as well; note their addresses in the

ddccontrol -p


Answered By: nvd

Copy bash script below to a file called bright

Then mark it executable with chmod a+x bright

Bash Script


MON="DP-1-1"    # Discover monitor name with: xrandr | grep " connected"
STEP=5          # Step Up/Down brightnes by: 5 = ".05", 10 = ".10", etc.

CurrBright=$( xrandr --verbose --current | grep ^"$MON" -A5 | tail -n1 )
CurrBright="${CurrBright##* }"  # Get brightness level with decimal place

Left=${CurrBright%%"."*}        # Extract left of decimal point
Right=${CurrBright#*"."}        # Extract right of decimal point

[[ "$Left" != 0 && "$STEP" -lt 10 ]] && STEP=10     # > 1.0, only .1 works
[[ "$Left" != 0 ]] && MathBright="$Left"00          # 1.0 becomes "100"
[[ "${#Right}" -eq 1 ]] && Right="$Right"0          # 0.5 becomes "50"
MathBright=$(( MathBright + Right ))

[[ "$1" == "Up" || "$1" == "+" ]] && MathBright=$(( MathBright + STEP ))
[[ "$1" == "Down" || "$1" == "-" ]] && MathBright=$(( MathBright - STEP ))
[[ "${MathBright:0:1}" == "-" ]] && MathBright=0    # Negative not allowed
[[ "$MathBright" -gt 999  ]] && MathBright=999      # Can't go over 9.99

if [[ "${#MathBright}" -eq 3 ]] ; then
    MathBright="$MathBright"000         # Pad with lots of zeros
    MathBright="$MathBright"000         # Pad with lots of zeros

xrandr --output "$MON" --brightness "$CurrBright"   # Set new brightness

# Display current brightness
printf "Monitor $MON "
echo $( xrandr --verbose --current | grep ^"$MON" -A5 | tail -n1 )
  • Change MON="DP-1-1" to your monitor name, ie MON="eDP-1-1"
  • Change STEP=5 to your step value, eg STEP=2 is less noticeable

Call the script with:

  • bright Up or bright + to increase brightness by step value
  • bright Down or bright - to decrease brightness by step value
  • bright (with no parameters) to get the current brightness level

Hopefully the bash / shell commands can easily be googled for education but if any questions don’t hesitate to ask 🙂

8 minutes after posting answer it occurred to me I could have used bc for floating point math and saved ~10 lines of code and the a lot of time from the 1.5 hours to write it shrugs.

Answered By: WinEunuuchs2Unix

Simpler bash…


# brightness [+-*/]f.f

set -f

MONITOR="$(xrandr --listactivemonitors | sed -n '/*/p')"

Brightness() { # current brightness value
   xrandr --verbose 
      | sed -nE "/^$MONITOR/ba;d

Brightness_set() { # VALUE
   xrandr --output "$MONITOR" --brightness "$1"

[[ 0 -eq "$#" ]] 
   && printf '%sn' "$MONITOR Brightness: $(Brightness)" 
   && exit

! [[ "$1" =~ ^([-+*/]?)([0-9]+.?[0-9]*|.[0-9]+)$ ]] 
   && >&2 printf '%sn' "!!! USAGE: $(basename "${BASH_SOURCE[0]}") ^([-+*/]?)([0-9]+.?[0-9]*|.[0-9]+)$" 
   && exit

if [[ "${BASH_REMATCH[1]}" ]]; then
   Brightness_set "$(bc <<< "$(Brightness)$1")"
   Brightness_set "$1"

Keybind according to your wishes.

Answered By: Paul
Categories: Answers Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.