- Вопрос или проблема
- Использование D-Bus с GNOME
- Примечания
- KDE 4.12:
- KDE Plasma Версия: 5.14.3:
- Ответ или решение
- 1. Использование команд xrandr
- Примеры команд
- 2. Прямое изменение файлов в системе
- Команды для изменения яркости
- 3. Использование brightnessctl
- Установка и команда
- 4. Управление яркостью через D-Bus (для GNOME)
- Команды D-Bus
- 5. Скрипт для управления яркостью
- Заключение
Вопрос или проблема
Чтобы обойти ошибку #1005495 (изменение яркости LCD с помощью горячих клавиш невозможно), я хотел бы иметь одну команду для увеличения и одну для уменьшения яркости моего LCD. Затем я мог бы назначить горячую клавишу для каждой из этих команд.
Проблема в том, что: я не знаю, как увеличить и уменьшить яркость LCD из командной строки. Знаете ли вы?
Откройте терминал и введите это
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
работает только с Intel, не работает должным образом на Radeon и совсем не работает с драйвером modesetting (источник). Он также работает только на X11, а не на Wayland.
Еще один способ сделать это – использовать другую новую программу под названием xbacklight, откройте терминал и введите это
sudo apt-get install xbacklight
затем введите xbacklight -set 50
где 50 обозначает диапазон яркости, который мы можем установить от 0 до 100.
вы также можете увеличить и уменьшить яркость от текущего значения до указанного уровня. как вы упомянули, если вы хотите увеличить на 10% от текущего значения яркости, тогда вы можете дать это
xbacklight -inc 10
и чтобы уменьшить на 10% вы можете дать это
xbacklight -dec 10
Использование D-Bus с GNOME
Вы можете увеличить/уменьшить яркость с помощью gdbus
:
# Увеличить
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepUp
# Уменьшить
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepDown
Примечания
- Нет необходимости в привилегиях root! В отличие от
/sys/class/backlight
способа. - Источник: Arch wiki (здесь для клавиатур).
xbacklight
не всегда работает.xrandr
(из x11-xserver-utils) просто выполняет коррекцию гаммы.- Вероятно, работает на MATE и Xfce. Для KDE проверьте этот ответ, используя
qdbus
. ddcutil
может работать на внешних мониторах с поддержкой DDC.
Для ноутбуков,
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")"
# /1 в конце заставляет bc привести результат к целому числу, даже если $1 - это дробь (что должно быть)
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
должен всегда работать, он не всегда имеет полный диапазон физических значений яркости. Попробуйте каждое устройство и используйте то, у которого самый большой диапазон, в качестве вашего “TARGET”.
KDE 4.12:
qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement/Actions/BrightnessControl setBrightness 55
KDE Plasma Версия: 5.14.3:
Указанный код все еще действителен. Он будет работать только если вы являетесь пользователем KDE. Однако в этом случае не потребуется никакого дополнительного программного обеспечения. Он будет вести себя так же, как при использовании виджета “батарея и яркость”. Насколько я знаю, он изменяет физическую подсветку, в отличие от 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
Попробуйте это в терминале:
xrandr --output LVDS1 --brightness 0.9
Вы можете изменить последнее значение по своему усмотрению, например, 0.2
Вот короткая строка, которая может помочь вам расслабить ваши глаза. Просто создайте crontab с этой строкой или создайте скрипт
xrandr --output VGA1 --brightness 0.5; sleep 20; xrandr --output VGA1 --brightness 1
Как сказал @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
ddccontrol – еще один вариант для управления подсветкой внешних мониторов. Здесь я могу установить яркость моего внешнего монитора на 50% его мощности с помощью:
ddccontrol -p -r 0x10 -w 50
Я искал возможные решения этой проблемы, чтобы улучшить способ, которым Redshift обрабатывает изменения яркости. Через это я обнаружил, что существует набор патчей для ядра Linux, чтобы улучшить совместимость между устройствами, чтобы ноутбуки и внешние экраны могли работать аналогично через sysfs
.
Тем временем ddccontrol – единственное, что работает для меня здесь. Как обычно, в Arch wiki есть хорошая общая документация на эту тему.
Чтобы установить абсолютную яркость (для пользователей ноутбуков):
BRIGHTNESS=50 # 0 до 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
Вам понадобятся разрешения для изменения устройства отображения, что могут сделать только члены группы video (и очевидно root). Поэтому убедитесь, что вы добавили текущего пользователя в группу video. Вы можете сделать это следующим образом:
sudo usermod $(whoami) -a -G video
После установки я могу увеличить/уменьшить яркость, используя команды ниже на 10 — это очень постепенно и дает мне больше контроля. :
# Увеличить яркость
/usr/bin/brightnessctl -d intel_backlight set +10
# Уменьшить яркость
/usr/bin/brightnessctl -d intel_backlight set 10-
Я добавил горячие клавиши в свою конфигурацию i3. Вот фрагмент горячей клавиши.
# Увеличить яркость
bindsym XF86MonBrightnessUp exec /usr/bin/brightnessctl -d intel_backlight set +10
# Уменьшить яркость
bindsym XF86MonBrightnessDown exec /usr/bin/brightnessctl -d intel_backlight set 10-
Используя приведенные выше ответы, я создал этот скрипт (сохраненный в моей домашней директории под именем brightness.sh
), чтобы изменить яркость дисплея (так как клавиатура ноутбука пострадала из-за пролитого чая и стала непригодной). Будьте свободны в использовании этого (если у вас есть назначенные файлы… в противном случае потребуется tinkering, чтобы указать на свою вариацию).
#!/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 "----------------------- Яркость -----------------------"
echo " 1. Установить дисплей на минимальный (экономия энергии) уровень яркости."
echo " 2. Установить дисплей на низкий (консервативный) уровень яркости."
echo " 3. Установить дисплей на средний уровень яркости."
echo " 4. Установить дисплей на высокий (производительный) уровень яркости."
echo " 5. Установить дисплей на максимальный уровень яркости."
echo " 6. Выход."
echo "----------------------------------------------------------"
if [ $cursetting -eq $powersave ]; then
cursetting='Минимум'
else
if [ $cursetting -eq $conservative ]; then
cursetting='Консервативный'
else
if [ $cursetting -eq $medium ]; then
cursetting='Средний'
else
if [ $cursetting -eq $performance ]; then
cursetting='Производительность'
else
if [ $cursetting -eq $maxsetting ]; then
cursetting='Максимум'
fi
fi
fi
fi
fi
echo " Текущая настройка дисплея - "$cursetting;
choice=7
echo ""
echo -e "Пожалуйста, введите ваш выбор: \c"
}
function press_enter {
echo ""
echo -n "Нажмите Enter, чтобы продолжить."
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 "Пожалуйста, введите НОМЕР вашего выбора: \c"
choice = 7
fi
fi
fi
fi
fi
fi
done
Чтобы увеличить яркость, используя xdotool, выполните следующую команду:
$ xdotool key XF86MonBrightnessUp
Чтобы уменьшить яркость, используя xdotool, выполните следующую команду:
$ xdotool key XF86MonBrightnessDown
Поскольку xdotool имитирует реальные нажатия клавиш, это изменение яркости на аппаратном уровне.
Источник: https://linuxhint.com/display_brightness_commandline/
Интерактивный интерфейс в стиле ncurses с использованием xbacklight
Бедный человек ncurses. Нажмите h
, и яркость уменьшится на 10%, нажмите l
, и она увеличится на 10%. Затем показывается текущая яркость.
xback() (
done=false;
echo "меньше: h, больше: l, выход: 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
)
На основе ответа placsint
cd /sys/class/backlight/intel_backlight/
cat max_brightness | sudo tee brightness
Вы можете установить яркость x% дисплея следующим образом:
Синтаксис:
sudo brightnessctl -d intel_backlight set [ваше желаемое значение в % от максимума]
Установите brightctl:
sudo apt install brightctl
Установите яркость на одно значение % в диапазоне 0 – 100 %:
sudo brightnessctl -d intel_backlight set 60%
Ответ или решение
Для изменения яркости ЖК-дисплея из командной строки или с помощью скрипта на системах Linux, существует несколько подходов, которые могут помочь вам в этом, особенно если вы столкнулись с проблемой, когда изменения яркости в обход назначения горячих клавиш в GNOME невозможны из-за известного бага. Рассмотрим несколько методов, каждый из которых имеет свои преимущества и особенности.
1. Использование команд xrandr
Команда xrandr
позволяет управлять настройками экрана, включая изменение яркости, однако стоит отметить, что это программное изменение, которое не влияет на аппаратный уровень.
Примеры команд
-
Для проверки доступных выходных устройств:
xrandr -q | grep " connected"
-
Для установки яркости (значение варьируется от 0.0 до 1.0):
xrandr --output LVDS1 --brightness 0.5
В этом примере
LVDS1
– это идентификатор вашего дисплея, а0.5
– уровень яркости.
2. Прямое изменение файлов в системе
Другой, более прямой способ — изменение значения в файле, ответственного за яркость.
Команды для изменения яркости
- Для установки новой яркости:
echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness
- Максимальное значение яркости можно посмотреть:
cat /sys/class/backlight/intel_backlight/max_brightness
3. Использование brightnessctl
Для более гибкого управления яркостью на современных системах рекомендуется использовать утилиту brightnessctl
. Она позволяет устанавливать яркость в процентном соотношении от максимального значения и может быть легко интегрирована в скрипты.
Установка и команда
-
Установите утилиту:
sudo apt install brightnessctl
-
Увеличение яркости на 10%:
brightnessctl set +10%
-
Уменьшение яркости на 10%:
brightnessctl set 10%-
4. Управление яркостью через D-Bus (для GNOME)
Если вы используете окружение GNOME, можно воспользоваться D-Bus для изменения яркости дисплея без необходимости административных прав.
Команды D-Bus
-
Увеличение яркости:
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepUp
-
Уменьшение яркости:
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepDown
5. Скрипт для управления яркостью
Если вы предпочитаете автоматизацию, создать скрипт на bash для переключения яркости можно следующим образом:
#!/bin/bash
TARGET="/sys/class/backlight/intel_backlight/brightness"
MAX="$(cat /sys/class/backlight/intel_backlight/max_brightness)"
CURRENT="$(cat $TARGET)"
if [ "$1" == "up" ]; then
new_brightness=$((CURRENT + (MAX / 10))) # Увеличение на 10%
if [ $new_brightness -gt $MAX ]; then
new_brightness=$MAX
fi
elif [ "$1" == "down" ]; then
new_brightness=$((CURRENT - (MAX / 10))) # Уменьшение на 10%
if [ $new_brightness -lt 0 ]; then
new_brightness=0
fi
else
echo "Usage: $0 {up|down}"
exit 1
fi
echo $new_brightness | sudo tee $TARGET
Запустите этот скрипт передав параметр up
или down
для изменения яркости.
Заключение
В зависимости от вашего окружения и предпочтений, вы можете выбрать один из предложенных методов для изменения яркости вашего дисплея. Для каждого подхода доступны команды, которые позволяют удобно управлять настройками яркости как с помощью терминала, так и в рамках автоматизации через скрипты. Выбор конкретного способа зависит от ваших личных предпочтений и требований конфигурации вашего оборудования.