I have been trying to get my laptop's screen brightness to default to a low setting, and for my keyboard light to be off when I start my computer.

I have these two commands that work when I execute them at the command line:

xbacklight -set 7
echo 0 | sudo tee /sys/class/leds/asus::kbd_backlight/brightness

I put them in my /etc/rc.local file, like so:

#!/bin/sh -e
# ...
# By default this script does nothing.
echo 0 | tee /sys/class/leds/asus::kbd_backlight/brightness
xbacklight -set 7
exit 0

However, neither command executes. (I was told that the sudo was not needed in the second command when placed in /etc/rc.local)

There was another question asking the same thing about rc.local, but I tried to also include my commands using the Startup Applications GUI interface. That also did not work, so I think the problem might go beyond just the rc.local file. Other default startup commands in the list seem to start, so far as I can tell.

Why am I unable to get any custom command line to execute when I startup?

New: After some experimentation, it seems like the commands I put in /etc/rc.local might be getting executed before the login screen. So, my login screen has the screen appropriately dimmed. However, then when I login, my screen goes to maximum brightness. So it seems like perhaps there is some other setting that is being applied when I log in, or that /etc/rc.local only applies for the login screen itself and has no bearing on what happens to a user when logged in.

So, how do I resolve this so that the brightness and keyboard light settings I want apply to the user login session, not just to the login screen?

  • 1
    Does manually executing this script work? – nitishch Feb 5 '14 at 10:12
  • @nitish, thanks for asking. I just tested now, and yes, it works. If I run it from the command line, it asks for my administrative password, and then when I enter that, it executes. – Questioner Feb 6 '14 at 2:50
  • what is the output of ls /sys/class/backlight/ – rɑːdʒɑ Feb 8 '14 at 5:43
  • The fact that xbacklight is not working when put in /etc/rc.local seems easy to explain... The X server has not started yet when the system executes this file. On the other hand, it is really strange that it is not working in your startup session option... – Rmano Feb 8 '14 at 5:57
  • 3
    How about when you put them in your .bashrc file in your home directory? – Parto Feb 8 '14 at 5:58

xbacklight solution

1) Create an executable script file e.g. /home/YOU/.bin/lower-brightness like this:

xbacklight -set 7 &

2) Create a .desktop file e.g. /home/YOU/.config/autostart/lower-brightness.desktop like this:

[Desktop Entry]
Name=Lower Screen Brightness
Comment=Screen brightness is set to 7 at startup
| improve this answer | |

To have the display settings as you want you can add this line in /etc/rc.local

echo 7 > /sys/class/backlight/intel_backlight/brightness

Then it can keep your brightness as 7.

hope that helps a bit.

| improve this answer | |
  • Thank you for responding, but you seem to have missed the point of the question. It's not that I don't have the right commands, it's that the commands are not executing. – Questioner Feb 9 '14 at 4:54
  • Have you tried my solution? – rɑːdʒɑ Feb 9 '14 at 5:58
  • Yes, I tried your suggestion. Unfortunately, it had no different effect than any of the others offered. It may be due to a new dimension to the problem, which is one of competing commands. I have opened a new question to address this. – Questioner Feb 9 '14 at 8:40

I'm sure, my solution should help you if you use ubuntu with lightdm.

I was searching for turning on NumPad on my laptop when it starts and in lightdm documentation I found this:

# display-setup-script = Script to run when starting a greeter session (runs as root)
# greeter-setup-script = Script to run when starting a greeter (runs as root)
# session-setup-script = Script to run when starting a user session (runs as root)
# session-cleanup-script = Script to run when quitting a user session (runs as root)

And that is solution. You need to create file in /usr/bin/, say /usr/bin/backlight and write commands there.

xbacklight -set 7
echo 0 | sudo tee /sys/class/leds/asus::kbd_backlight/brightness
exit 0

(Also xbacklight doesn't work for me. echo 7 > /sys/class/backlight/intel_backlight/brightness does the stuff). Than make sure you add execute permission for this file with chmod a+x /usr/bin/backlight.

Than you need to edit /etc/lightdm/lightdm.conf and write for example this line:


And that's it. Now restart you PC.

| improve this answer | |

Create your own init script to adjust the brightness levels.

echo '#!/bin/sh 
sleep 60
echo 0 | tee /sys/class/leds/asus::kbd_backlight/brightness
xbacklight -set 7
exit 0' > /tmp/myinit
sudo mv /tmp/myinit /etc/init.d/myinit
sudo chmod +x /etc/init.d/myinit
sudo update-rc.d myinit defaults  

Adjust the sleep value to your suit.

| improve this answer | |
  • The line sudo chmod x /etc/init.d/myinit needs to be sudo chmod -x /etc/init.d/myinit. – Questioner Feb 11 '14 at 2:57
  • Please fix it for me, @Dave M G – totti Feb 12 '14 at 11:51
  • Does it work for you ?. Use +x – totti Feb 15 '14 at 6:39
  • Unfortunately, no. I've managed to get my screen brightness to dim using a different system setting. But I still can't get my keyboard to be off when I start the computer. – Questioner Feb 15 '14 at 6:51
  • Add commands to rc.local and do sudo update-rc.d rc.local defaults. Use sleep xx at beginning if necessary. – totti Feb 15 '14 at 8:12

I wonder why no one has suggested using update-rc.d. I would not put the script into /etc/rc.local manually. I would recommend this way to make programs run at startup:

sudo cp lower-brightness.sh /etc/init.d/
sudo chmod +x /etc/init.d/lower-brightness.sh 
sudo update-rc.d lower-brightness.sh defaults 

This will make sure the script is linked to appropriate run levels.

| improve this answer | |
  • Thank you for this suggestion. When I tried your solution, after logging in it seemed like my desired settings had applied. Unfortunately, though, as soon as I moved my pointer by using the laptop's touchpad, the screen brightness changed and the keyboard light came on again. I am extremely perplexed by this. – Questioner Feb 15 '14 at 6:05
  • That means your setting xbacklight -set 7 is not maintained after boot. Try changing to this xbacklight -set 7 & in your statup script to have the command run in background. – biocyberman Feb 17 '14 at 13:05
  • I added the & as you suggested, but that didn't change anything. I also tried removing the xbacklight command entirely so as to just get the keyboard to work, but when I did that, the keyboard light never shuts off at all. – Questioner Feb 18 '14 at 7:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.