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

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

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

18 ответов

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

xrandr -q | grep " connected"

это даст вам вывод как

LVDS1 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 331mm x 207mm

Там LVDS1 стоит для вашего дисплея. Так что теперь вы должны сделать как

xrandr --output LVDS1 --brightness 0.5

там 0.5 обозначает уровень яркости и колеблется от 0.0 до 1.0 . 0.0 -> Полный черный. Так что вам нужно выбрать необходимое значение яркости.

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

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

Следующие работы для меня:

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

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

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

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

sudo apt-get install xbacklight

затем введите это xbacklight -set 50

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

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

xbacklight -inc 10

и уменьшить на 10% вы можете дать это

xbacklight -dec 10 

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

Использование 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

Заметки

Для ноутбуков,
sudo setpci -s 00:02.0 F4.B=80

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

Для настольных компьютеров [не проверено мной],
xgamma -gamma .75

Сделайте этот скрипт:

set-brightness.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 должен всегда работать, он не всегда имеет полный спектр доступных физических яркостей. Попробуйте каждый, и используйте тот, с самой большой гаммой, в качестве "ЦЕЛИ"

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

xrandr --output LVDS1 --brightness 0.9

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

KDE 4.12:

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

KDE Plasma Версия: 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

Refs: qdbus, твердый, яркость

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

xrandr --output VGA1 --brightness 0.5; sleep 20; xrandr --output VGA1 --brightness 1

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

ddccontrol -p -r 0x10 -w 50

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

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

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

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

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

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

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

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

       
sudo apt install brightctl

Вам потребуются разрешения для изменения устройства отображения, что могут делать только участники группы видео (и, очевидно, 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-

Чтобы увеличить яркость с помощью xdotool, выполните следующую команду:

      $ xdotool key XF86MonBrightnessUp

Чтобы уменьшить яркость с помощью xdotool, выполните следующую команду:

      $ xdotool key XF86MonBrightnessDown 

Поскольку xdotool имитирует реальные аппаратные нажатия клавиш, это аппаратное изменение яркости.

Источник: https://linuxhint.com/display_brightness_commandline/

Используя приведенные выше ответы, я создал этот сценарий (сохраненный в моем домашнем каталоге как bright.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

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

cd /sys/class/backlight/intel_backlight/
cat max_brightness | sudo tee brightness

Интерактивный интерфейс, похожий на ncursesxbacklight

Курс бедного человека. Удар 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
)

Вы можете установить x% яркости дисплея следующим образом:

Синтаксис:

      sudo brightnessctl -d intel_backlight set [your wanted value in % of max]

Установите Brightctl:

      sudo apt install brightctl

Установите яркость на одно % значение в диапазоне от 0 до 100 %:

      sudo brightnessctl -d intel_backlight set 60%
Другие вопросы по тегам