#linux #bash #math #xorg #sigmoid
#linux #bash #математика #xorg #сигмоид
Вопрос:
У меня есть небольшой скрипт для яркости на моей машине Linux. В настоящее время он увеличивает (уменьшает) фиксированную величину при нажатии связанной клавиши. Как бы мне сделать это увеличение все меньше и меньше по мере приближения к максимальной яркости и наоборот? Чем меньше, тем лучше 🙂
#!/bin/sh
dir="/sys/class/backlight/intel_backlight"
# echo $(( 750 375 )) > "$dir/brightness"
bright () {
echo $(($(cat "$dir/brightness") $1 )) > "$dir/brightness"
}
case $1 in
"") echo "Screen: $(cat /sys/class/backlight/intel_backlight/brightness)" ;;
) bright 375 ;;
-) bright -375 ;;
*) bright $1 ;;
-*) bright $1 ;;
=) echo "No value to set passed (0-7500)" ;; # My machine specific
=*) echo $1 | sed s/=// > "$dir/brightness" ;;
esac
Комментарии:
1. Прочитайте текущее значение и измените его в зависимости от него.
2. Я думал о том, чтобы иметь список значений, например:
[0, 1, 2, 4, 9, 14, 16, 17, 18]
; Затем установить яркость на значение на единицу выше / ниже элемента с тем же индексом значения, но это кажется грубым и сложным для реализации в bash. Я ищу помощь в реализации3. Каждый раз, когда вы нажимаете клавишу, вызывается скрипт Bash. Каждая переменная, которую вы задаете в скрипте, теряется в конце скрипта. Чтобы изменить значение на следующее значение в списке, вы должны знать текущее значение. Итак, первый шаг — прочитать текущее значение.
4. Разве я уже не делаю это в функции? Возможно, я неправильно понимаю, но получение текущего значения никогда не было проблемой, я полагаю. Значение яркости моего экрана находится в
/sys/class/backlight/intel_backlight/brightness
файле5. Вы можете начать с двух случаев. Если текущее значение больше порогового значения, добавьте
375
и200
в противном случае. Если это сработает, вы можете расширить его.