Domanda Ridimensiona il volume e / o la luminosità dello schermo con una scala logaritmica


Possiedo un notebook Acer Aspire E5-773G con Ubuntu 16.04 con Unity Desktop.

Quando cambio il volume o il livello di luminosità dello schermo (indipendentemente dall'uso Fn+frecce o attraverso ad es. l'indicatore del volume), il ridimensionamento non sembra naturale.

Non c'è quasi nessuna differenza notevole tra i passaggi nel terzo superiore della scala della luminosità e nel quarto superiore della scala del volume.

D'altra parte, i passaggi tra le posizioni del cursore nel terzo inferiore della scala della luminosità e nel quarto inferiore della scala del volume sembrano enormi. Soprattutto l'impostazione di luminosità più bassa è estremamente più scura rispetto alla seconda impostazione più bassa (ma non disattivata).

Per me queste scale sembrano tecnicamente lineari, ma poiché i sensi umani operano tutti in modo logaritmico, sembrano strani. Esiste un metodo su come posso modificare il ridimensionamento della luminosità principalmente e idealmente anche il volume su uno più logaritmico in modo che i passaggi sembrino più uguali?


Aggiornare:

Il xbacklight lo strumento non funziona sulla mia macchina per qualsiasi motivo. Tuttavia, ho trovato due alternative:

  • Dbus: puoi usare i due comandi seguenti per ottenere / impostare il valore di luminosità come percentuale, cioè il numero intero nell'intervallo 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
    

    Il vantaggio di questo è che ogni utente può eseguirlo senza privilegi speciali. Tuttavia è meno fine.

  • Accesso diretto a /sys/...: È possibile utilizzare questi comandi per ottenere / impostare il livello di luminosità come numero intero grezzo nell'intervallo 0-x. Il valore massimo attuale x può essere trovato usando il terzo 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
    

    Il vantaggio di questo è che fornisce un accesso diretto alle funzionalità hardware, quindi questo è il controllo più fine che possiamo ottenere. Sfortunatamente, la modifica del valore di luminosità richiede i diritti di root (notare il sudo nel set-comando).


3
2017-07-12 07:18


origine


Potresti controllare se le scorciatoie della luminosità attivano qualsiasi cambio di impostazione di lob usando dconf watch /? - user.dz


risposte:


Questo mi ha infastidito, almeno per la regolazione della luminosità, quindi ho scritto il seguente script (modificare: comandi di controllo retroilluminazione alternativi aggiunti nei commenti):

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

Dipende dall'avere xbacklight installato.

Nominalo brightness.she in esecuzione brightness.sh up o brightness.sh down salirà o scenderà attraverso la scala specificata nella parte superiore dello script. La chiamata a notify-send attiva la notifica della luminosità sullo schermo (almeno in Unity). (Sono sicuro che lo script potrebbe essere migliorato, ma sembra funzionare abbastanza bene).

Ho quindi configurato le scorciatoie da tastiera (per i pulsanti del volume del mio tablet, nel mio caso) da attivare /path/to/brightness.sh up e /path/to/brightness.sh down.

Per fare qualcosa di simile per il volume, è necessario sostituire le chiamate a xbacklight con un comando che consente di leggere / impostare il volume e modificare la notifica in modo che sia una notifica del volume.


2
2018-01-09 03:15



Scusa per il ritardo, sono stato un po 'occupato ultimamente e ho dimenticato la tua risposta. Purtroppo, xbacklight non ha assolutamente alcun effetto sul mio sistema, non è in grado di ottenere o impostare il valore di luminosità della retroilluminazione. Posso accedervi anche ottenendo / impostando la percentuale usando a dbuschiamare, o leggendo / scrivendo la proprietà direttamente in /sys/class/... come valori non elaborati come root. Modificato la mia domanda con dettagli a riguardo. Puoi per favore modificare il tuo script e sostituirlo xbacklight con una delle alternative che ho presentato? Grazie. - Byte Commander
Ho aggiunto i comandi alternativi come commenti. Poiché xbacklight utilizza anche valori percentuali, sono semplici sostituzioni di tipo drop-in. Non sono in una macchina con Linux e un controluce, quindi non li ho testati. - Mark L