Скрипт увеличения яркости Linux при сигмовидном градиенте

#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 в противном случае. Если это сработает, вы можете расширить его.