Skip to content

Instantly share code, notes, and snippets.

@luixal
Last active January 31, 2022 23:03
Show Gist options
  • Save luixal/12f8ea750e4b01acb1aad1b012b8d1b4 to your computer and use it in GitHub Desktop.
Save luixal/12f8ea750e4b01acb1aad1b012b8d1b4 to your computer and use it in GitHub Desktop.
Gnome Brightness Control Hack for fn keys
#!/bin/bash
# brightness: Change all monitors brightness in software.
# by hackerb9, 2019
# Examples: brightness 75; brightness -5; brightness +10
# Usage:
# brightess [n] [+n] [-n]
# n An integer from 0 to 100 specifies a brightness level.
# +n Increase brightness by n.
# -n Decrease brightness by n.
# No argument shows current brightness level.
b=$(xrandr --current --verbose | grep Brightness)
b=${b#*: } # Remove "Brightness: "
b=${b#0.} # 0.30 --> 30
[[ $b == "1.0" ]] && b="100"
case $1 in
+*|-*)
b=$((b $1)) # b=b+10, b=b-10
;;
[0-9]*)
b=$1 # b=75
;;
*)
echo $b; exit
;;
esac
[[ $b -lt 0 ]] && b=0
[[ $b -gt 100 ]] && b=100
if [[ $b -eq 100 ]]; then
b=1.0
else
b=0.$b
fi
outputs=$(xrandr --current | awk '$2 == "connected" {print $1}')
for o in $outputs; do
xrandr --output $o --brightness $b
done
#!/bin/bash
# brightness: Change all monitors brightness in software.
# by luixal (2022) based on script from hackerb9 (2019)
# Examples: brightness 0.75; brightness -0.5; brightness +0.1
# Usage:
# brightess [n] [+n] [-n]
# n An integer from 0 to 100 specifies a brightness level.
# +n Increase brightness by n.
# -n Decrease brightness by n.
# No argument shows current brightness level.
# get current brightness value:
b=$(dconf read /org/gnome/shell/extensions/soft-brightness/current-brightness)
# set new value according to parameter's syntax/value:
case $1 in
+*|-*)
# b=$((b $1)) # b=b+0.1, b=b-0.1
b=`echo $b $1 | bc`
;;
[0-9]*)
b=$1 # b=0.75
;;
*)
echo $b; exit
;;
esac
# set min value:
[[ $(bc -l <<< "$b < 0") -eq 1 ]] && b=0
# set max value:
[[ $(bc -l <<< "$b > 1") -eq 1 ]] && b=1
# set brightness value:
dconf write /org/gnome/shell/extensions/soft-brightness/current-brightness $b
# echo current (just set) value:
echo $b
@luixal
Copy link
Author

luixal commented Jan 31, 2022

I guess this doesn't use any kind of bus so brightness change is not synced with the slider on the config popup.

Indeed, it's like another level of brightness, it taken down using this script, the slider shows it at 100% and when you move the slider it moves taking current brightness as base level. This is: if the slider is at 100% and I use this script to decrease brightness to 50%, the slider keeps showing it at 100% and if I move the slider, it decreases and increases brightness... taking that 50% level as the 100%.

@luixal
Copy link
Author

luixal commented Jan 31, 2022

Added simpler version that uses dconf instead of xrandr (seems to be the gnome way). Also, doesn't make unit conversion but takes brightness values between 0 and 1 (ej: instead of 10 you should pass 0.1).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment