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.

  • Brightness is in most cases hardware-controlled with the lamps in the screen. In a Desktop, i am unsure if that is possible with older screens. Could i have the details about your screen?
    – denNorske
    Nov 27, 2012 at 10:13
  • The fading effect is just a darker image send to your monitor. The actual backlight of your monitor does not change. But there is still software, that can send a command to your monitor to lower its backlight (ddccontrol).
    – remi
    Nov 27, 2012 at 21:04

5 Answers 5


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.

  • Thanks, worked for me on ubuntu 14.04. Had to start this app from terminal like: $ brightness-controller Nov 21, 2016 at 4:18
  • 1
    @AquariusTheGirl You can start the app from dash in Unity Nov 22, 2016 at 3:03
  • That's a beautiful solution!
    – user568021
    Feb 13, 2018 at 22:17
  • Worth noting this tool uses xrandr to control color levels via software. A proper tool would use DDC protocol to interact directly with the display, allowing the same kind of control as the built-in menu in the display itself. Mar 26, 2020 at 14:06
  • This program has a bug, brightness increases automatically after a while.
    – hafiz031
    Jun 26, 2021 at 7:51

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



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.


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.

  • and is there any widget for it so that I can do it from my desktop?
    – DjBmNukez
    Nov 27, 2012 at 10:29
  • 1
    @DjBmNukez Yes there is, see my answer. Dec 29, 2013 at 5:54

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.