Другим способом может быть создание правил для udev и вызов простого скрипта для изменения значения яркости: во-первых, создайте файл с именем auto-backlight.sh в своем домашнем каталоге (или любой другой из ваших предпочтений) с вашим любимым редактором, например gedit, и скопируйте и вставьте следующий код:
#!/bin/sh
# Adjust brightness of backlights based on power source
case $1 in
# On battery
true)
# Dim screen backlight
expr `cat /sys/class/backlight/intel_backlight/max_brightness` / 10 > \
/sys/class/backlight/intel_backlight/brightness
;;
# On AC
false)
# Dim screen backlight
cat /sys/class/backlight/intel_backlight/max_brightness > \
/sys/class/backlight/intel_backlight/brightness
;;
esac
return 0
Обратите внимание, что /sys/class/backlight/intel_backlight/ может быть чем-то другим в вашей системе, например /sys/class/backlight/acpi_video0/. Также обратите внимание, что, возможно, вам нужно изменить значение / 10 в зависимости от значения max_brightness, это может быть 100, 50, 5 и т. Д., Так как это фактор деления.
Дать исполнение разрешений для нового созданного скрипта: chmod 771 auto-backlight.sh
Затем создайте файл с именем 99auto-backlight.rules с вашим любимым редактором и поместите его в папку /etc/udev/rules.d/: sudo gedit /etc/udev/rules.d/99auto-backlight.rules (или свяжите его с помощью " ln "), содержащую следующие две строки:
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/path/to/your/script/auto-backlight.sh true"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/path/to/your/script/auto-backlight.sh false"
Заменить /path/to/your/script/ на фактический путь, где был установлен скрипт auto-backlight.sh.
Credit to Alex Лейтон за его идею здесь: https://unix.stackexchange.com/a/110469 и Pilot6 за его идею здесь: https://askubuntu.com/a/613816
Чтобы понять проблему, предположим, что мы написали этот код:
static void Main(string[] args)
{
string[] test = new string[3];
test[0]= "hello1";
test[1]= "hello2";
test[2]= "hello3";
for (int i = 0; i <= 3; i++)
{
Console.WriteLine(test[i].ToString());
}
}
Результат будет:
hello1
hello2
hello3
Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.
Размер массива равен 3 (индексы 0, 1 и 2), но при попытке доступа за пределы с помощью (3) он выдает исключение.
Простое объяснение того, что такое индекс из связанного исключения:
Просто подумайте, что в одном из поездов есть его отсеки: D1, D2, D3. Один пассажир пришел, чтобы войти в поезд, и у него есть билет на D4. теперь, что будет. пассажир хочет войти в отсек, который не существует, поэтому явно возникнет проблема.
Тот же сценарий: всякий раз, когда мы пытаемся получить доступ к списку массивов и т. д., мы можем получить доступ только к существующим индексам в массиве. array[0] и array[1]. Если мы попытаемся получить доступ к array[3], его там не будет, поэтому появится индекс из связанного исключения.