Escala o volume e / ou o brilho da tela com uma escala logarítmica

3

Tenho um notebook Acer Aspire E5-773G com Ubuntu 16.04 com Unity Desktop.

Quando altero o volume ou o nível de brilho da tela (independentemente de usar Fn + Setas ou, por exemplo, o indicador de volume), a escala não parece natural. / p>

Quase não há diferença notável entre as etapas no terço superior da escala de brilho e na quarta parte superior da escala de volume.

Por outro lado, os passos entre as posições dos sliders no terço inferior da escala de brilho e no quarto inferior da escala de volume parecem enormes. Especialmente a configuração de brilho mais baixa é extremamente mais escura que a segunda configuração mais baixa (mas não desligada).

Para mim, essas escalas parecem tecnicamente lineares, mas como os sentidos humanos operam logaritmicamente, elas parecem estranhas. Existe algum método como eu posso alterar a escala de brilho principalmente e idealmente também o volume para um mais logarítmico para que os passos pareçam mais iguais?

Atualização:

A ferramenta xbacklight não funciona na minha máquina por qualquer motivo. No entanto, encontrei duas alternativas:

  • Dbus: Você pode usar os dois comandos abaixo para obter / definir o valor de brilho como porcentagem, ou seja, o número inteiro no intervalo de 0 a 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
    

    A vantagem disso é que todo usuário pode executá-lo sem privilégios especiais. É menos refinado embora.

  • Acesso direto a /sys/... : você pode usar esses comandos para obter / definir o nível de brilho como um número inteiro bruto no intervalo de 0-x. O valor máximo real x pode ser encontrado usando o terceiro comando:

    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
    

    A vantagem disso é que ele fornece acesso direto aos recursos de hardware, então este é o controle mais refinado que podemos obter. Infelizmente, a alteração do valor de brilho requer direitos de root (observe o sudo no set-command).

por Byte Commander 12.07.2016 / 09:18

1 resposta

2

Isso me incomodou também, pelo menos para o ajuste de brilho, então eu escrevi o seguinte script ( edit: comandos alternativos de controle de luz de fundo adicionados nos comentários):

#!/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

Depende de ter o xbacklight instalado.

Nomeie-o com brightness.sh , e a execução de brightness.sh up ou brightness.sh down aumentará ou diminuirá a escala especificada na parte superior do script. A chamada para notify-send aciona a notificação de brilho na tela (pelo menos em Unity). (Tenho certeza que o script poderia ser melhorado alguns, mas parece funcionar bem o suficiente.)

Eu, então, configuro atalhos de teclado (para os botões de volume do meu tablet, no meu caso) para acionar /path/to/brightness.sh up e /path/to/brightness.sh down .

Para fazer algo semelhante para o volume, você precisa substituir as chamadas para xbacklight por um comando que permita ler / definir o volume e alterar a notificação como notificação de volume.

    
por Mark L 09.01.2017 / 04:15