19

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.

DjBmNukez
  • 266
  • 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 '12 at 21:04
  • 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 '12 at 10:13

6 Answers6

21

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.

Archisman Panigrahi
  • 28,338
  • 18
  • 105
  • 212
12

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

command.

nvd
  • 1,160
  • 9
  • 7
1

Copy bash script below to a file called bright

Then mark it executable with chmod a+x bright

Bash Script

#!/bin/bash

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

MathBright="0" [[ "$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 CurrBright="${MathBright:0:1}.${MathBright:1:2}" else MathBright="$MathBright"000 # Pad with lots of zeros CurrBright=".${MathBright:0:2}" fi

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.

1

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.

remi
  • 607
0

Simpler bash...

#!/usr/bin/bash

brightness [+-*/]f.f

set -f

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

Brightness() { # current brightness value xrandr --verbose
| sed -nE "/^$MONITOR/ba;d :a;s|[[:space:]]Brightness:[[:space:]]||p;tb;n;ba :b;q" }

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

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

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

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

Keybind according to your wishes.

Paul
  • 340
0

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.