Как изменить яркость ЖК-дисплея из командной строки (или с помощью скрипта)?
Чтобы обойти ошибку # 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
Заметки
- Никаких корневых привилегий не требуется! в отличие от
/sys/class/backlight
путь xbacklight
не всегда работает.xrandr
просто сделайте гамма-коррекцию- Для KDE проверьте этот ответ
Для ноутбуков,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
Вот короткая строчка, которая поможет вам расслабить глаза. Просто создайте 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%