Страница 1 из 3
Автоматическое снижение яркости
Добавлено: 15 мар 2020, 09:33
Sova
Здравствуйте! Незнаю куда писать (плохо знаком со структурой форума), поэтому создал запись здесь.
В Linux Mint <= 18, с любым DE, была архиполезнейшая фича - при переключении питания на батарейку (на ноутбуке, разумеется), яркость дисплея снижалась где-то вдвое и восстанавливалась обратно если запитать машину от сети. Снижение яркости у меня увеличивает время работы от батареи вдвое (!). В Минт 19 (со всеми DE) эту фишку выпилили (зачем-то). Сейчас я снижаю яркость вручную (кнопками Fn + (<- || ->)), но это не удобно (много раз давить надо (пробовал alias делать чтобы xrandr-ом одной командой из консоли гасить, но это тоже не торт), плюс можно просто забыть переключить и быстро посадить батарею).
Вопрос: как сделать автоматическое снижение и повышение яркости в зависимости от типа питания?
ЗЫ: При гуглении у меня создалось впечатление что этот вопрос беспокоит меня одного - не только нет решений, но даже никто не спрашивает. Так что может быть эту настройку куда-то хитро спрятали? Хотя я все перерыл и даже в gconf-editor-е ковырялся и ничего не нашел.
Автоматическое снижение яркости
Добавлено: 15 мар 2020, 09:54
symon2014
Автоматическое снижение яркости
Добавлено: 15 мар 2020, 10:01
Sova
symon2014, в Cinnamon такого нет (да и в остальных на виртуалке я не видел)
Автоматическое снижение яркости
Добавлено: 15 мар 2020, 10:15
demonlibra
http://askubuntu.com/questions/613741/u ... at-instead
http://www.linux.org.ru/forum/desktop/11554844
Сперва определите команду и диапазон для изменения яркости. Например у меня это:
Код: Выделить всё
echo -n 1080 | sudo tee /sys/class/backlight/intel_backlight/brightness
Создать файл /etc/udev/rules.d/powersafe.rules
Код: Выделить всё
sudo nano powersafe.rules /etc/udev/rules.d/powersafe.rules
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/local/bin/powersafe.sh true"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/local/bin/powersafe.sh false"
Для просмотра состояния выполнить в терминале, после чего вытащить и вставить зарядку
В моём случае триггером для сценария служит атрибут status. На другом железе атрибут и его значения могут быть другими.
Создать файл /usr/local/bin/powersafe.sh
Код: Выделить всё
sudo nano powersafe.sh /usr/local/bin/powersafe.sh
#!/bin/bash
case $1 in
true)
echo -n 800 > /sys/class/backlight/intel_backlight/brightness
;;
false)
echo -n 1380 > /sys/class/backlight/intel_backlight/brightness
;;
esac
Вам нужно будет найти для своего железа имя файла и подставить свои значения яркости.
В этот сценарий можно добавить другие действия. Например менять время парковки жесткого диска.
Дать сценарию права для запуска
Добавить в автозагрузку чтобы при включении происходил опрос и яркость менялась. Иначе будет задана установленная при последней работе.
Создать файл
Код: Выделить всё
sudo nano /etc/systemd/system/powersafe.service
[Unit]
Description=brightness
After=network.target
[Service]
Type=oneshot
ExecStart=/sbin/udevadm trigger -s power_supply
[Install]
WantedBy=multi-user.target
Выполнить в терминале
Код: Выделить всё
sudo systemctl daemon-reload
sudo systemctl enable powersafe.service
Автоматическое снижение яркости
Добавлено: 15 мар 2020, 13:30
Sova
demonlibra, Сделал, работает. Вообще отличное решение! Только не понял:
1) "sudo -i" с самого начала зачем? Ведь остальные команды все-равно через sudo написаны
2) "sudo nano powersafe.rules /etc/udev/rules.d/powersafe.rules" зачем "powersafe.rules" после nano? если там дальше путь прописан? Дальше "powersafe.sh" - таже история
3) Почему разрабы сами этого не сделали?
4) Вместо "sudo echo -n 1380 > /sys/class/backlight/intel_backlight/brightness" я получил значение из "cat /sys/class/backlight/intel_backlight/max_brightness" и вставил в /usr/local/bin/powersafe.sh его и его половину соответственно
Автоматическое снижение яркости
Добавлено: 15 мар 2020, 13:54
demonlibra
1) Без sudo -i у меня следующая команда выдает "Отказано в доступе"
2) Вы правы, это я напортачил. Хорошо, что Вы не бездумно копируете команды.
3) Не знаю

. Оставляют место для
творчества
У меня два диска, SSD с системой и HDD с помойкой. Я добавил в сценарий изменение времени парковки диска.
Код: Выделить всё
#!/bin/bash
case $1 in
true)
echo -n 800 > /sys/class/backlight/intel_backlight/brightness
hdparm -S60 /dev/sda
;;
false)
echo -n 1380 > /sys/class/backlight/intel_backlight/brightness
hdparm -S240 /dev/sda
;;
esac
Автоматическое снижение яркости
Добавлено: 15 мар 2020, 14:25
symon2014
demonlibra писал(а): ↑15 мар 2020, 10:15
sudo -i
sudo echo -n 1380 > /sys/class/backlight/intel_backlight/brightness
Sova писал(а): ↑15 мар 2020, 13:30
"sudo -i" с самого начала зачем? Ведь остальные команды все-равно через sudo написаны
demonlibra писал(а): ↑15 мар 2020, 13:54
Без sudo -i у меня следующая команда выдает "Отказано в доступе"
Это путаница , как в испорченном телефоне (детская игра). Из-за команды "
>" ,
sudo
, бывшее в начале строки , перестаёт действовать. Команда
sudo -i
задаёт повышенные привилегии для всех последующих действий , но тогда
sudo
в следующей строке теряет смысл . По уму (не сильно большому

) правильнее выглядело бы так.
sudo -i
echo -n 1380 > /sys/class/backlight/intel_backlight/brightness
Автоматическое снижение яркости
Добавлено: 08 фев 2021, 07:03
demonlibra
symon2014 писал(а): ↑15 мар 2020, 14:25
sudo -i
echo -n 1380 > /sys/class/backlight/intel_backlight/brightness
Мой ум с этим вариантом согласен на все 100. Проверка в терминале подтверждает признаки наличия интеллекта.
Автоматическое снижение яркости
Добавлено: 08 фев 2021, 07:19
rogoznik
demonlibra писал(а): ↑08 фев 2021, 07:03
Мой ум с этим вариантом согласен на все 100. Проверка в терминале подтверждает признаки наличия интеллекта.
Думаю лучше было бы так
Код: Выделить всё
echo -n 1380 | sudo tee /sys/class/backlight/intel_backlight/brightness
Автоматическое снижение яркости
Добавлено: 08 фев 2021, 07:22
Sova
rogoznik писал(а): ↑08 фев 2021, 07:19
demonlibra писал(а): ↑08 фев 2021, 07:03
Мой ум с этим вариантом согласен на все 100. Проверка в терминале подтверждает признаки наличия интеллекта.
Думаю лучше было бы так
Код: Выделить всё
echo -n 1380 | sudo tee /sys/class/backlight/intel_backlight/brightness
Я тему поднял обратно, потому что в Mint 20.1 оно работать перестало. Сервис в Системд не запускался, потому что udevadm переехал из /sbin в /bin. Это я поправил (в файле /etc/systemd/system/powersafe.service), но все-равно оно автоматически теперь не срабатывает
Автоматическое снижение яркости
Добавлено: 09 фев 2021, 11:41
demonlibra
Sova писал(а): ↑08 фев 2021, 07:22
в Mint 20.1 оно работать перестало
Просто команда изменения яркости в терминале работает?
Автоматическое снижение яркости
Добавлено: 09 фев 2021, 13:40
demonlibra
Проверил у себя на Mint 20.1
Работает.
Только изменил путь к udevadm
в файле /etc/systemd/system/powersafe.service
ExecStart=/usr/bin/udevadm trigger -s power_supply
Автоматическое снижение яркости
Добавлено: 09 фев 2021, 14:45
Sova
demonlibra писал(а): ↑09 фев 2021, 13:40
Работает.
Только изменил путь к
udevadm
]
А у меня результата нет.
Если просто в консоли сделать "sudo udevadm trigger -s power_supply", то подсветка переключается, а автоматически нет.
Что еще проверить можно?
Автоматическое снижение яркости
Добавлено: 09 фев 2021, 17:39
demonlibra
Через терминал яркость меняется?
Код: Выделить всё
echo -n 1080 | sudo tee /sys/class/backlight/intel_backlight/brightness
Это команда для моего железа. Вы подставьте свою.
Автоматическое снижение яркости
Добавлено: 09 фев 2021, 17:56
Sova
demonlibra писал(а): ↑09 фев 2021, 17:39
Через терминал яркость меняется?
Код: Выделить всё
echo -n 1080 | sudo tee /sys/class/backlight/intel_backlight/brightness
Это команда для моего железа. Вы подставьте свою.
Да, меняется. Впечатление что удав не обрабатывает события питания, поэтому вручную меняется, а автоматически нет.
Моя команда "echo -n 60000 | sudo tee /sys/class/backlight/intel_backlight/brightness", я с самого начала в скриптах так сделал
Автоматическое снижение яркости
Добавлено: 09 фев 2021, 18:07
demonlibra
Автоматическое снижение яркости
Добавлено: 09 фев 2021, 18:11
Sova
demonlibra писал(а): ↑09 фев 2021, 18:07
Покажите вывод команды:
● powersafe.service - brightness
Loaded: loaded (/etc/systemd/system/powersafe.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Tue 2021-02-09 18:41:57 +07; 3h 27min ago
Process: 933 ExecStart=/usr/bin/udevadm trigger -s power_supply (code=exited, status=0/SUCCESS)
Main PID: 933 (code=exited, status=0/SUCCESS)
фев 09 18:41:57 TUF-Gaming-FX505GT systemd[1]: Starting brightness...
фев 09 18:41:57 TUF-Gaming-FX505GT systemd[1]: powersafe.service: Succeeded.
фев 09 18:41:57 TUF-Gaming-FX505GT systemd[1]: Finished brightness.
Были проблемы из-за смены пути udevadm, но я путь исправил.
Автоматическое снижение яркости
Добавлено: 09 фев 2021, 18:20
demonlibra
Странно, я этот сервис у себя удалил, а яркость всё равно меняется. Чудеса.
Автоматическое снижение яркости
Добавлено: 09 фев 2021, 18:33
Sova
demonlibra писал(а): ↑09 фев 2021, 18:20
Странно, я этот сервис у себя удалил, а яркость всё равно меняется. Чудеса.
А у меня наоборот

Автоматическое снижение яркости
Добавлено: 09 фев 2021, 20:41
demonlibra
Сервис /etc/systemd/system/powersafe.service
служит только для того чтобы пнуть при загрузке системы.
Всё лежит на /etc/udev/rules.d/powersafe.rules
.
Может его надо как-то активировать.