I like Linux. Especially for being able to create graceful workarounds for the things we get accustomed in a real life.
Being a Linux-powered laptop owner I have always been annoyed by sharp backlight change when Linux boots up. I do not like when a backlight is set to the maximum one and there are no ways to affect these settings on. So I did a very funny trick.
System's backlight (aka "display's brightness") in Linux could be changed through the special /sys/class/backlight/acpi_video0/brightness file. When an integer is written Linux immediately changes laptop's backlight level. E.g. the following command:
The first steps of Linux boot up are made with initramfs scripts which are executed one by one. When system-required-specific modules are loaded laptop's backlight level dramatically raises up. So we can think about this point in time as a moment when the user is able to tell Linux not to do so; or at least set it explicitly to a preferred value. That moment in time in the terms of initrams-tools could be called "premount".
So here we go:
Being a Linux-powered laptop owner I have always been annoyed by sharp backlight change when Linux boots up. I do not like when a backlight is set to the maximum one and there are no ways to affect these settings on. So I did a very funny trick.
System's backlight (aka "display's brightness") in Linux could be changed through the special /sys/class/backlight/acpi_video0/brightness file. When an integer is written Linux immediately changes laptop's backlight level. E.g. the following command:
# echo 10 > /sys/class/backlight/acpi_video0/brightnesswill set display's brightness to 10 points.
The first steps of Linux boot up are made with initramfs scripts which are executed one by one. When system-required-specific modules are loaded laptop's backlight level dramatically raises up. So we can think about this point in time as a moment when the user is able to tell Linux not to do so; or at least set it explicitly to a preferred value. That moment in time in the terms of initrams-tools could be called "premount".
#!/bin/sh ### file: /etc/initramfs-tools/scripts/local-premount/backlight_level ### this file must have an executable bit. ### ### Author: Andrew Sichevoi ### Please feel free to send your bug reports to http://blog.thekondor.net PREREQ="" prereqs() { echo "${PREREQ}" } case "${1}" in prereqs) exit 0; ;; esac . /scripts/functions DEFAULT_BACKLIGHT_LEVEL=10 BACKLIGHT_LEVEL= for arg in $(cat /proc/cmdline); do case ${arg} in backlight_level=*) BACKLIGHT_LEVEL=${arg#backlight_level=} ;; esac done if [ -z ${BACKLIGHT_LEVEL} ]; then log_warning_msg "Using default backlight level: '${DEFAULT_BACKLIGHT_LEVEL}'" BACKLIGHT_LEVEL=${DEFAULT_BACKLIGHT_LEVEL} fi echo ${BACKLIGHT_LEVEL} > /sys/class/backlight/acpi_video0/brightness
So here we go:
- Add the below-mentioned backlight_level script to /etc/initramfs-tools/scripts/local-premount directory, make it executable;
- Update initramfs using update-initramfs command (Linux distribution specific; at least that works for Debian and Ubuntu) to include the script to the initrd image;
- Set passing backlight_level=X (where X is a preferred backlight level) boot option in your's grub.cfg.
and reboot to see the changes in action.
The script just looks up backlight_level kernel boot option and writes (if any, or default one otherwise) this value to the brightness file for immediate laptop's brightness update.
Simple? I think yes. Does it work? Definitely. Perfect? Not at all: I believe that system's boot's up settings should not differ from main DE's ones: they should be configured through the single entry point not several ones. Anyway this scripts makes feel us that we able to control Linux as well as we have a new task to think about :). So stay tuned!
The script just looks up backlight_level kernel boot option and writes (if any, or default one otherwise) this value to the brightness file for immediate laptop's brightness update.
Simple? I think yes. Does it work? Definitely. Perfect? Not at all: I believe that system's boot's up settings should not differ from main DE's ones: they should be configured through the single entry point not several ones. Anyway this scripts makes feel us that we able to control Linux as well as we have a new task to think about :). So stay tuned!
Thanks you so much!
ReplyDeleteHi, I've a Sony Vaio with Nvidia GeForce 7600, the command for backlight setting that works as root on my laptop is
ReplyDelete'echo $MY_VALUE > /sys/class/backlight/nvidia_backlight/brightness'
Have I to put that command as the last line in your script?
Do you think it'll work?
Thanks
Hey, Phaso,
DeleteI do not see any reason why it should not work. Anyway you won't lost/break anything even if you try :).