brightness 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #!/bin/sh
  2. # Uncomment the following line to get debug info
  3. #set -x
  4. SELF="$(basename ${0})"
  5. SYSTEM_BRIGHTNESS="/sys/class/backlight/backlight/brightness"
  6. DEFAULT_BRIGHTNESS_VALUE=100
  7. BRIGHTNESS_STEP=10
  8. NOTIF_DURATION=2
  9. usage() {
  10. >&2 echo "Usage: ${SELF} get"
  11. >&2 echo " ${SELF} set new_brightness_percentage"
  12. exit 1
  13. }
  14. increase_brightness() {
  15. # Get current value
  16. local current_brightness=$(get_brightness)
  17. # Compute new brightness value
  18. local new_brightness=0
  19. let new_brightness=${current_brightness}+${BRIGHTNESS_STEP}
  20. if [ ${new_brightness} -gt 100 ]; then
  21. new_brightness=100
  22. fi
  23. # Change brightness
  24. if [ ${new_brightness} -ne ${current_brightness} ]; then
  25. set_brightness ${new_brightness}
  26. fi
  27. # Notif
  28. notif_set ${NOTIF_DURATION} " BRIGHTNESS: ${new_brightness}%%"
  29. }
  30. decrease_brightness() {
  31. # Get current value
  32. local current_brightness=$(get_brightness)
  33. # Compute new brightness value
  34. local new_brightness=0
  35. if [ ${current_brightness} -gt ${BRIGHTNESS_STEP} ]; then
  36. let new_brightness=${current_brightness}-${BRIGHTNESS_STEP}
  37. fi
  38. # Change brightness
  39. if [ ${new_brightness} -ne ${current_brightness} ]; then
  40. set_brightness ${new_brightness}
  41. fi
  42. # Notif
  43. notif_set ${NOTIF_DURATION} " BRIGHTNESS: ${new_brightness}%%"
  44. }
  45. get_brightness() {
  46. local brightness=$(fw_printenv -n brightness 2>/dev/null)
  47. if ! [ ! "${brightness}" -ne "${brightness}" ] 2> /dev/null; then
  48. brightness=${DEFAULT_BRIGHTNESS_VALUE}
  49. fw_setenv brightness ${brightness}
  50. fi
  51. echo ${brightness}
  52. }
  53. set_brightness() {
  54. # Set the new brightness percentage in the kernel driver
  55. local brightness=${1}
  56. local kernel_brightness
  57. let kernel_brightness=${brightness}+10
  58. let kernel_brightness/=10
  59. echo ${kernel_brightness} > "${SYSTEM_BRIGHTNESS}"
  60. # Set the new brightness value in a bootloader variable
  61. if [ ${?} -eq 0 -a $(get_brightness) -ne ${brightness} ]; then
  62. fw_setenv brightness ${brightness}
  63. fi
  64. }
  65. # Check number of arguments
  66. if [ ${#} -lt 1 -o ${#} -gt 2 ]; then
  67. usage
  68. fi
  69. case "${1}" in
  70. up)
  71. if [ ${#} -ne 1 ]; then
  72. usage
  73. fi
  74. increase_brightness
  75. ;;
  76. down)
  77. if [ ${#} -ne 1 ]; then
  78. usage
  79. fi
  80. decrease_brightness
  81. ;;
  82. get)
  83. if [ ${#} -ne 1 ]; then
  84. usage
  85. fi
  86. get_brightness
  87. ;;
  88. set)
  89. if [ ${#} -ne 2 ]; then
  90. usage
  91. fi
  92. # Make sure the argument is a positive number <= 100
  93. if [ -n "${2}" ] && [ "${2}" -eq "${2}" ] 2>/dev/null && \
  94. [ "${2}" -ge 0 ] && [ "${2}" -le 100 ]; then
  95. set_brightness "${2}"
  96. else
  97. usage
  98. fi
  99. ;;
  100. *)
  101. usage
  102. ;;
  103. esac
  104. exit 0