Объем масштаба и/или яркость экрана с логарифмическим масштабом

Я владею ноутбуком Acer Aspire E5-773G под управлением Ubuntu 16.04 с Рабочим столом Единицы.

Когда я изменяю объем или уровень яркости экрана (неважно, ли с помощью Fn+Arrows или через например, Индикатор Объема), масштабирование не кажется естественным.

Нет почти никаких заметных различий между шагами в верхней трети шкалы яркостей и в верхней четверти масштаба объема.

С другой стороны, шаги между положениями ползунка в более низкой трети шкалы яркостей и в более низкой четверти масштаба объема кажутся огромными. Особенно самый низкий подбор яркости является чрезвычайно более темным, чем вторая самая низкая установка (но не прочь).

Мне эти масштабы кажутся технически линейными, но как чувства человека все действуют логарифмически, они кажутся странными. Есть ли какой-либо метод, как я могу изменить масштабирование главным образом яркости и идеально также объема к более логарифмическому так, чтобы шаги казались более равными?


Обновление:

xbacklight инструмент не работает над моей машиной по любой причине. Однако я нашел две альтернативы:

  • Dbus: можно использовать две команды ниже для получения/устанавливания значения яркости как процента, т.е. целого числа в диапазоне 0-100:

    qdbus org.gnome.SettingsDaemon.Power /org/gnome/SettingsDaemon/Power org.gnome.SettingsDaemon.Power.Screen.GetPercentage
    qdbus org.gnome.SettingsDaemon.Power /org/gnome/SettingsDaemon/Power org.gnome.SettingsDaemon.Power.Screen.SetPercentage 42
    

    Преимущество этого состоит в том, что каждый пользователь может выполнить его без специальных полномочий. Это является менее мелкомодульным все же.

  • Прямой доступ к /sys/...: Можно использовать эти команды для получения/устанавливания уровня яркости как необработанного целого числа в диапазоне 0-x. Фактическое максимальное значение x может быть найдено с помощью третьей команды:

    cat /sys/class/backlight/intel_backlight/brightness
    echo 42 | sudo tee /sys/class/backlight/intel_backlight/brightness
    cat /sys/class/backlight/intel_backlight/max_brightness
    

    Преимущество этого состоит в том, что это обеспечивает прямой доступ к возможностям оборудования, таким образом, это - самое мелкомодульное управление, мы можем добраться. К сожалению, изменение значения яркости требует корневых прав (отметьте sudo в команде набора).

3
задан 27 January 2017 в 01:13

1 ответ

Это беспокоило меня также, по крайней мере, для настройки яркости, таким образом, я записал следующий сценарий (редактирование: альтернативные команды управления подсветкой, добавленные в комментариях):

#!/bin/bash

current=`xbacklight -get`
# alternatively, if xbacklight does not work:
# current=`qdbus org.gnome.SettingsDaemon.Power /org/gnome/SettingsDaemon/Power org.gnome.SettingsDaemon.Power.Screen.GetPercentage`

scale="1 2 5 10 20 50 100"

case $1 in
    "down")
        # translate space to newline so tac will reverse order of lines (values)
        for val in $(tr ' ' '\n' <<< $scale | tac) ; do
            # scale = 3 to preserve some decimal values
            if (( $(bc <<< "scale=3 ; $val < $current/1.1") )) ; then
                newval=$val
                break
            fi
        done
        ;;
    "up")
        for val in $scale ; do
            # scale = 3 to preserve some decimal values
            if (( $(bc <<< "scale=3 ; $val > $current*1.1") )) ; then
                newval=$val
                break
            fi
        done
        ;;
    *)
        echo "Usage: $0 [up, down]"
        exit 1
esac

if [ "x$newval" == "x" ] ; then
    echo "Already at min/max."
else
    echo "Setting backlight to $newval."

    # thanks: https://bbs.archlinux.org/viewtopic.php?pid=981217#p981217
    notify-send " " -i notification-display-brightness-low -h int:value:$newval -h string:x-canonical-private-synchronous:brightness &

    xbacklight -set $newval -steps 1 -time 0
    # alternatively, if xbacklight does not work:
    # qdbus org.gnome.SettingsDaemon.Power /org/gnome/SettingsDaemon/Power org.gnome.SettingsDaemon.Power.Screen.SetPercentage $newval
fi

exit 0

Это зависит от наличия xbacklight установленный.

Назовите его brightness.sh, и выполнение brightness.sh up или brightness.sh down повысится или вниз через масштаб, указанный наверху сценария. Вызов к notify-send инициировал экранное уведомление о яркости (по крайней мере, в Единице). (Я уверен, что сценарий мог быть улучшен некоторые, но это, кажется, работает достаточно хорошо.)

Я затем устанавливаю сочетания клавиш (для кнопок рокера объема моего планшета в моем случае) для инициирования /path/to/brightness.sh up и /path/to/brightness.sh down.

Чтобы сделать что-то подобное для объема, необходимо было бы заменить вызовы к xbacklight с командой, которая позволяет Вам читать/устанавливать объем и изменить уведомление, чтобы быть уведомлением об объеме.

1
ответ дан 1 December 2019 в 17:33

Другие вопросы по тегам:

Похожие вопросы: