Как изменить яркость ЖК-дисплея из командной строки (или с помощью скрипта)?

Чтобы обойти ошибку # 1005495 ​​ (изменение яркости ЖК-дисплея с помощью горячих клавиш невозможно), я хотел бы иметь один запрос командной строки для увеличения и один для уменьшения яркости моего ЖК-дисплея. Затем я могу сопоставить горячую клавишу каждому из этих запросов.

Проблема в том, что я не знаю, как увеличить и уменьшить яркость ЖК-дисплея в командной строке. А ты?

192
задан 10 June 2012 в 21:30

16 ответов

Примечание ]: xbacklight работает только с Intel, некорректно работает на Radeon и совсем не работает с драйвером настройки режима ( источник ). Он также работает только на X11, а не на Wayland.


Еще один способ сделать это - использовать другую новую программу с именем xbacklight, открыть свой терминал и набрать

sudo apt-get install xbacklight

, затем ввести xbacklight -set 50

там 50 обозначает диапазон яркости, мы можем увеличить его до 100 от 0.

вы также можете увеличивать и уменьшать яркость от текущего значения до указанного уровня. Как вы упомянули, если вы хотите увеличить до 10% от текущего значения яркость, тогда вы можете задать это

xbacklight -inc 10

, а для уменьшения на 10% вы можете указать это

xbacklight -dec 10 
160
ответ дан 10 June 2012 в 21:30

У меня работает следующее:

echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness

Я думаю, максимально возможное значение находится в файле / sys / class / backlight / intel_backlight / max_brightness .

Замените intel_backlight звездочкой, чтобы применить ко всем подсветкам.

136
ответ дан 10 June 2012 в 21:30

Как сказал @palacsint, echo 244> / sys / class / backlight / intel_backlight / яркость путь работает для меня.

Но максимальные и минимальные значения повторно представлены в Файлы / sys / class / backlight / intel_backlight / max_brightness и / sys / class / backlight / intel_backlight / bl_power соответственно.

Кроме того, фактическая яркость вашего компьютера сейчас присутствует в / sys / class / backlight / intel_backlight / actual_brightness

3
ответ дан 10 June 2012 в 21:30

Создайте этот сценарий:

set-яркость. sh

#!/bin/bash
TARGET="acpi_video0"
cd /sys/class/backlight
MAX="$(cat "${TARGET}/max_brightness")"
# The `/1` at the end forced bc to cast the result 
# to an integer, even if $1 is a float (which it 
# should be)
LOGIC="$(echo "($1 * ${MAX})/1" | bc)"
for i in */; do
    if [[ "${TARGET}/" != "$i" && -e "${i}brightness" ]]; then
        cat "${i}max_brightness" > "${i}brightness"
    fi
done
echo "$LOGIC" > "${TARGET}/brightness"

Запустите его как root с любым значением от 0 до 1.

sudo ./set-brightness.sh 0.5
  • Если в вашей системе нет / sys / class / backlight / acpi_video0 , там должен быть хотя бы один каталог там, что может зависеть от устройства (например, у меня также есть radeon_bl0 ).
  • Если у вас есть другие, помните об их стеке значений (отсюда и цикл; установка всех других значений на 1,0, а затем установка целевого значения на желаемое значение).
  • Пока ] acpi_video0 должен работать всегда, не всегда доступен полный диапазон физической яркости. Попробуйте каждый из них и используйте тот, у которого самая большая гамма, в качестве "ЦЕЛИ"
4
ответ дан 10 June 2012 в 21:30

Откройте свой терминал и введите это

xrandr -q | grep " connected"

, это даст вам результат как

 LVDS1 подключен 1680x1050 + 0 + 0 (нормальная левая перевернутая правая ось x ось y) 331 мм x 207 мм
 

Там LVDS1 означает ваш дисплей. Итак, теперь вам нужно сделать как

xrandr --output LVDS1 --brightness 0.5

, где 0,5 означает уровень яркости, и он находится в диапазоне от 0,0 до 1,0. 0.0 -> Полный черный. Поэтому вам нужно выбрать необходимое значение яркости.

Этот не изменяет яркость на аппаратном уровне . Из randr руководство :

- яркость яркость Умножьте значения гамма на CRTC, в настоящее время прикрепленные к выходу, на указанное плавающее значение. Полезно для слишком ярких или слишком тусклых выходных сигналов. Однако это модификация только программного обеспечения , если ваше оборудование поддерживает фактическое изменение яркости, вы, вероятно, предпочтете использовать xbacklight.

168
ответ дан 10 June 2012 в 21:30

Попробуйте это в терминале:

xrandr --output LVDS1 --brightness 0.9

Вы можете изменить последнее значение, например, 0.2

3
ответ дан 10 June 2012 в 21:30

KDE 4.12:

qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl setBrightness 55

KDE Plasma Version: 5.14 .3:

Приведенный выше код все еще действителен. Это будет работать, только если вы являетесь пользователем KDE. Однако в этом случае не потребуется никакого дополнительного программного обеспечения. Он будет вести себя точно так же, как при использовании виджета «батарея и яркость». AFAIK он меняет физическую подсветку, в отличие от xrandr , который этого не делает.

Помните, что 55 выше не являются долей от 100, а последняя является максимальной яркостью. Вместо этого он связан с max_brightness:

qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl brightnessMax

Существует также "тихая" версия, которую вы можете предпочесть в сценарии:

qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl setBrightnessSilent 2000

Ссылки: qdbus , solid , яркость

3
ответ дан 10 June 2012 в 21:30

Вот короткая строка, которая поможет вам расслабить глаза. Просто создайте crontaab со строкой или сделайте сценарий

xrandr --output VGA1 --brightness 0.5; sleep 20; xrandr --output VGA1 --brightness 1
3
ответ дан 10 June 2012 в 21:30

Используя приведенные выше ответы, я создал этот сценарий (сохраненный в моем домашнем каталоге как яркость.sh) для изменения яркости дисплея (поскольку на клавиатуре ноутбука возникла проблема с пролитым чаем, и она пришла в негодность). Не стесняйтесь использовать его (если у вас есть назначенные файлы ... в противном случае потребуется попытка указать на их вариант).

#!/bin/bash
function main_menu
{
    sudo clear
    cursetting=$(cat /sys/class/backlight/intel_backlight/brightness)
    maxsetting=$(cat /sys/class/backlight/intel_backlight/max_brightness)
    powersave=$((maxsetting/5))
    conservative=$((powersave*2))
    medium=$((powersave*3))
    performance=$((powersave*4))
    echo ""
    echo "----------------------- Brightness -----------------------"
    echo " 1. Set Display to Minimum (Powersave) brightness setting."
    echo " 2. Set Display to Low (Conservative) brightness setting."
    echo " 3. Set Display to Medium brightness setting."
    echo " 4. Set Display to High (Performance) brightness setting."
    echo " 5. Set Display to Maximum brightness setting."
    echo " 6. Exit."
    echo "----------------------------------------------------------"
    if [ $cursetting -eq $powersave ]; then
     cursetting='Minimum'
    else
     if [ $cursetting -eq $conservative ]; then
      cursetting='Conservative'
     else
      if [ $cursetting -eq $medium ]; then
       cursetting='Medium'
      else
       if [ $cursetting -eq $performance ]; then
        cursetting='Performance'
       else
        if [ $cursetting -eq $maxsetting ]; then
         cursetting='Maximum'
        fi
       fi
      fi
     fi
    fi
    echo "        Current Display Setting - "$cursetting;
    choice=7
    echo ""
    echo -e "Please enter your choice: \c"
}

function press_enter
{
    echo ""
    echo -n "Press Enter to continue."
    read
    main_menu
}

main_menu
while [ $choice -eq 7 ]; do
read choice

if [ $choice -eq 1 ]; then
 echo $powersave | sudo tee /sys/class/backlight/intel_backlight/brightness
 main_menu
else
 if [ $choice -eq 2 ]; then
  echo $conservative | sudo tee /sys/class/backlight/intel_backlight/brightness
  main_menu
 else
  if [ $choice -eq 3 ]; then
   echo $medium | sudo tee /sys/class/backlight/intel_backlight/brightness
   main_menu
  else
   if [ $choice -eq 4 ]; then
    echo $performance | sudo tee /sys/class/backlight/intel_backlight/brightness
    main_menu
   else
    if [ $choice -eq 5 ]; then
     echo $maxsetting | sudo tee /sys/class/backlight/intel_backlight/brightness
     main_menu
    else
     if [ $choice -eq 6 ]; then
      exit;
     else
      echo -e "Please enter the NUMBER of your choice: \c"
      choice = 7
     fi
    fi
   fi
  fi
 fi
fi
done
2
ответ дан 10 June 2012 в 21:30

Использование DBus с Gnome

Вы можете увеличить / уменьшить яркость с помощью:

# Step up:
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepUp

# Step down:
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepDown

Примечания

12
ответ дан 10 June 2012 в 21:30

ddccontrol - еще одна опция для управления подсветкой внешних мониторов. Здесь я могу установить подсветку моего внешнего монитора на 50% от его мощности с помощью:

ddccontrol -p -r 0x10 -w 50

Я искал возможные решения этой проблемы, чтобы улучшить способ Redshift обрабатывает изменения яркости . Там я обнаружил, что существует набор исправлений для ядра Linux для улучшения совместимости между устройствами, чтобы ноутбуки и внешние экраны могли работать одинаково с помощью sysfs .

Между тем. , ddccontrol - единственное, что у меня здесь работает. Как обычно, в вики Arch есть хорошая общая документация по этой теме.

2
ответ дан 10 June 2012 в 21:30

Интерактивный пользовательский интерфейс, подобный ncurses, с использованием xbacklight

ncurses для бедняков. Нажмите h , и он упадет на 10%, нажмите l и он повысится на 10%. Затем покажите текущую яркость.

xback() (
  done=false;
  echo "less: h, more: l, quit: q"
  while ! $done; do
    read -rsn1 key
    if [ "$key" = h ]; then
      xbacklight -dec 10
    elif [ "$key" = l ]; then
      xbacklight -inc 10
    elif [ "$key" = q ]; then
      done=true
    fi
    printf "\r$(xbacklight -get) "
  done
)
0
ответ дан 10 June 2012 в 21:30

Для портативных компьютеров,

sudo setpci -s 00:02.0 F4.B=80

Измените 80 на [0-FF] , чтобы получить самую низкую-максимальную яркость. . Значение указано в шестнадцатеричном формате, поэтому 80 даст вам 50% от максимальной яркости.

Для настольных ПК необходимо сделать гамма-коррекцию (не тестировалось мной),

xgamma -gamma .75
13
ответ дан 10 June 2012 в 21:30

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

BRIGHTNESS=50 # 0 to 100

dbus-send \
--session \
--type=method_call \
--dest="org.gnome.SettingsDaemon.Power" \
/org/gnome/SettingsDaemon/Power \
org.freedesktop.DBus.Properties.Set \
string:"org.gnome.SettingsDaemon.Power.Screen" \
string:"Brightness" \
variant:int32:$BRIGHTNESS
1
ответ дан 22 October 2019 в 12:36

Я использую i3 в качестве оконного менеджера, и я удалил gnome, поэтому Решение gnome не сработало для меня. А другие подходы, основанные на программном обеспечении, просто сделали экран более черным. Итак, немного почитав, я наткнулся на brightctl . Установите его с помощью apt install.


sudo apt install brightctl

Вам потребуются разрешения для изменения устройства отображения, что могут делать только члены группы video (и, очевидно, root). Итак, убедитесь, что вы добавили текущего пользователя в группу видео . Вы можете сделать это так:


sudo usermod $(whoami) -a -G video

После установки я могу увеличивать / уменьшать яркость с помощью приведенных ниже команд на 10 - это очень постепенно и дает мне больше контроля. :


#Increase brightness
/usr/bin/brightnessctl -d intel_backlight set +10

#Reduce brightness
/usr/bin/brightnessctl -d intel_backlight set 10-

Я добавил привязки клавиш в конфигурацию i3. Вот фрагмент привязки клавиш.


#Increase brightness
bindsym XF86MonBrightnessUp exec  /usr/bin/brightnessctl -d intel_backlight set +10

#Reduce brightness
bindsym XF86MonBrightnessDown exec /usr/bin/brightnessctl -d intel_backlight set 10-
0
ответ дан 5 January 2021 в 23:40

На основе ответа placsint

cd /sys/class/backlight/intel_backlight/
cat max_brightness | sudo tee brightness
0
ответ дан 5 January 2021 в 23:40

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

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