Як змінити яскравість РК з командного рядка (або за допомогою скрипту)?


162

Щоб обійти помилку № 1005495 (зміни яскравості РК за допомогою гарячих клавіш неможливо), я хотів би мати один запит командного рядка для збільшення та один для зменшення яскравості мого РК. Тоді я міг зіставити гарячу клавішу на кожен із цих запитів.

Проблема полягає в тому, що я не знаю, як збільшити та зменшити яскравість РК у командному рядку. Чи ти?



2
Дякую, Лекенштейн, але це не дублікат з lsmod | grep ^ i915 не дає мені результатів (див. прийняте рішення). Ще шукаю рішення.
user69748

Відповіді:


157

Ще один спосіб зробити це - за допомогою іншої нової програми, названої як xbacklight, відкрийте свій термінал і введіть це

sudo apt-get install xbacklight

потім введіть це xbacklight -set 50

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

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

xbacklight -inc 10

і щоб зменшити 10%, ви можете це дати

xbacklight -dec 10 

Попередження : xbacklightпрацює лише з Intel, не належним чином на Radeon і зовсім не з драйвером для моделювання ( джерело ).


Схоже на дуже просту команду, але мені знадобиться щось на зразок xbacklight -збільшити 10, щоб збільшити яскравість на 10 відсотків. Це теж можливо?
user69748

1
Так, ти можеш. Я це вже згадував. тож ви можете отримати це за допомогою xbacklight -inc 10
rɑːdʒɑ

1
Гаразд, тепер це у вашій відповіді. Велике спасибі, я спробую це.
user69748

34
Це дійсно виглядає просто, але, на жаль, це не працює для мене. Яскравість просто не змінюється, не з -dec і не з -set. Я думаю, що мені доведеться сподіватися, що помилка виправиться незабаром. Спасибі все-таки.
user69748

1
Крім того, існує стенограма, яку ви можете використовувати: xbacklight +10; xbacklight -10; xbacklight =50;
Форді

149

Відкрийте свій термінал і введіть це

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.


2
Дякую за вашу відповідь, але мені знадобиться щось на зразок xrandr - збільшити 10, щоб збільшити яскравість на 10 відсотків. Це теж можливо?
user69748

48
це, здається, не змінює яскравість на апаратному рівні
erjoalgo

12
Шкода, що ця відповідь отримала стільки голосів. Екран мого ноутбука «імітує» темряву, так би мовити, роблячи речі темнішими (так само, як і під час відтворення відео з нічною сценою, що не має нічого спільного з легкістю екрана, а з пікселями, що маскують фонове світло). Легкість точно така ж, витрачаючи навіть більше акумулятора, ніж раніше, тому що пікселі темніші.
Мефісто

2
Спасибі це врятувало мені і день, і очі .. :)
Shylendra Madda

7
Це підробляє яскравість. Яскравість не змінюється, вона передається програмним забезпеченням.
користувач1970939

109

Наступні роботи для мене:

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

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

Замініть intel_backlightзірочкою, щоб застосувати до всіх підсвічування.


16
@Ray Спробуйте це: echo 400 | sudo tee /sys/class/backlight/intel_backlight/brightness.
Mygod

10
@Ray, коли ви sudo echo 400 > /sys/class . .. ./brightnessпереспрямовуєтесь, робиться оболонкою, а не відлунням. І оболонка все ще працює як ваш звичайний користувач, а не як sudo. Ось чому це дає дозвіл відмовлено. Потрібно мати утиліту, яка буде писати у файл із дозволами root, і саме тому teeпрацює.
Сергій Колодяжний

4
echo 400 | sudo tee /sys/class/backlight/radeon_bl0/brightnessдля Radeon APU та карт
Suici Doga

13
Це смішно низького рівня, але насправді здається єдиним, що надійно працює. Це стає трохи менш некрасиво якщо ви файл, так що не потрібно для установки яскравості більше. sudo chmod 0646brightnesssudo
близько

7
Причина того, що це встановлено з дозволами на сушіння, полягає в тому, що вірус міг би зробити ваш екран тьмяним і яскравішим з неймовірною швидкістю, в кінцевому рахунку пошкоджуючи дисплей обладнання. У 90-х я зіткнувся з вірусом, який налаштував би оновлювати екран Герца так швидко, що ваш монітор обсмажиться. Тому будьте обережні, переглядаючи дозволи на це.
RyanNerd

12

Для ноутбуків

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

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

Щоб комп’ютери могли робити корекцію гамми (не перевіряється мною),

xgamma -gamma .75

Дякую за вашу відповідь, але те, що мені потрібно, - це щось на зразок setpci - збільшити 10, щоб збільшити яскравість на 10 відсотків. Це теж можливо?
user69748

дякую за цю відповідь, добре знати, як це робиться на нижчих рівнях
erjoalgo

1
Це була єдина відповідь, яка працювала для мене на Samsung NB30 Plus.
OSE

Я не можу зробити так, щоб це спрацювало. Чи, можливо, я можу змінити деякі параметри, і якщо так, то як знайти відповідні значення?
Расмус

Дякую, що я на ноутбуці, setpciне працював, але xgammaробив.
Філіп Кіркбрід

4

Спробуйте це в терміналі:

xrandr --output LVDS1 --brightness 0.9

Ви можете змінювати останнє значення, як вам подобається, наприклад. 0,2


1
1) Вихід не завжди є LVDS1, але користувач може дізнатися за допомогою xrandr --verbose 2) Не змінюється інтенсивність підсвітки
erjoalgo

4

Зробіть цей сценарій:

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"

Запустити його як корінь з будь-яким значенням від 0 до 1.

sudo ./set-brightness.sh 0.5
  • Якщо у вашої системи немає /sys/class/backlight/acpi_video0, має бути принаймні одна директорія, яка може бути специфічною для пристрою (у мене також є radeon_bl0, наприклад).
  • Якщо у вас є інші, майте на увазі стек їх значень (отже, цикл; просуваючи всі інші значення до 1,0, а потім встановіть цільове значення на потрібну суму).
  • Хоча завжди acpi_video0 має працювати, але не завжди доступний весь спектр фізичних яскравостей. Спробуйте кожен, і використовуйте той, який має найбільшу гаму, як "ЦІЛЬ"

2
Подумайте про використання /sys/class/backlight/*/brightnessзамість спроб жорсткого коду acpi_video0в сценарій. Це дозволить узагальнити шлях до файлу, який може бути різним - я, наприклад, маю intel_backlight, ні acpi_video0. Ось що я тут використав у своєму сценарії
Сергій Колодяжний

4

Використання 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

Примітки


+1 підтверджує, що це чудово працює на внутрішньому РК-дисплеї. Це не впливає на зовнішні монітори, вже керовані xrandrсценаріями гамми та яскравості.
WinEunuuchs2Unix

3

Як сказав @palacsint, echo 244 > /sys/class/backlight/intel_backlight/brightnessшлях працює для мене.

Але значення max і min повторно вводяться у файлах /sys/class/backlight/intel_backlight/max_brightnessі /sys/class/backlight/intel_backlight/bl_powerвідповідно.

Також наявна фактична яскравість, яку працює на вашому комп’ютері /sys/class/backlight/intel_backlight/actual_brightness


3

KDE 4.12:

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

Версія плазми KDE: 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 , твердий , яскравість


Ви можете пояснити, що це буде робити?
rɑːdʒɑ

2

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

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

2

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

Ви могли б зробити краще, ніж просто вкладати багато, якщо умови, як, elifчи навіть краще case. Також я пропоную прочитати посібник зі стилів, наприклад google.github.io/styleguide/shell.xml, і спробувати вкладиш на зразок оболонки, оскільки це допоможе вам створити кращий код. Я б хотів, щоб хтось сказав мені це, коли я почав писати сценарії років тому. :)
LiveWireBT

1

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

ddccontrol -p -r 0x10 -w 50

Я подивився в можливих рішеннях цієї проблеми , щоб поліпшити спосіб Redshift обробляє зміни яскравості . Через це я виявив, що для ядра Linux існує патчсет для покращення сумісності між пристроями, щоб ноутбуки та зовнішні екрани могли працювати аналогічно sysfs.

Тим часом ddccontrol - це єдине, що тут працює для мене. Як завжди, у Вікі Arch є хороша загальна документація і з цієї теми.


0

Інтерактивний користувальницький інтерфейс, подібний до ncurses xbacklight

Бідолаха нудить. Хіт, 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
)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.