Recently I purchased a ThinkPad E14 Gen 5 laptop after spending 5 years with my previous workhorse machine, the HP Pavilion 14 with an Intel i5 (4 cores) CPU. The upgrade is quite significant, coming with an eight core AMD Ryzen 7 CPU... but I digress.
With modern day laptops, often there are backlit keys on certain media keys like mute sound, mute mic, airplane mode and so on. The light being switched on, for obvious reasons indicates that the particular function is in operation. This is easy on Windows for which these machines are always tested against[1]. Similarly, macOS works well on Apple devices. With GNU/Linux[2] however, almost all machines work but the tiny quality of life improvements like those media key lights can be a hit or miss.
As usual, I went ahead and installed Arch Linux on my machine with dwm as my window manager. After the installation and a test drive of my laptop, I see this...
At first I thought perhaps it's a driver issue but all my drivers were up-to-date. Looking through the Arch wiki didn't help with the issue. Knowing the vibrant thinkpad community, I ended up posting about my problem on r/thinkpad.
I'd much rather have the backlight fully off than have it functional. So, a fellow redditor let me know to check for the output in a particular system file:
~: $ cat /sys/class/leds/platform::micmute/brightness
1
'1' here represents the light in the ON state, which is exactly the problem!
Changing the value to '0' in the file instantly fixes the problem!
Changing it to '0' only fixes it temporarily until the next time the machine is booted up. A rather simple "hack" is to make this change every time the user logs into the machine. This is done simply through the .xprofile
or .xinitrc
file (most people would use .xinitrc
) by adding the following line in said file:
echo "0" > /sys/class/leds/platform::micmute/brightness
This line simply replaces whatever the file previously had, with '0'. This works rather well until I find a more permanent solution.
Unfortunately, the above method doesn't work anymore. I'm not exactly sure what changed but apparently it isn't supposed to work in the first place simply because /sys/class/leds/platform::micmute/brightness
isn't a real directory.
In any case, here's an updated method for the same that is slightly more involved. It is adapted for any Linux distribution running systemd. For other init systems (openrc, runit, etc.), I assume it's fairly simply to make the relevant changes.
Create a shell script disable-mute.sh
in your preferred directory (~/.local/bin/
in my case) containing the following:
!#/bin/sh
echo 0 | tee /sys/class/leds/platform::micmute/brightness
With root privileges, create a file disable-mute.service
in /etc/systemd/system/
with the following content: [3]
[Unit]
Description=Disables the annoying mute light on keyboard
After=multi-user.target
[Service]
ExecStart=/bin/sh /home/ashish/.local/bin/disable-mute.sh
Type=simple
[Install]
WantedBy=multi-user.target
Simply run sudo systemctl enable disable-mute.service
and the LED should turn off the next time you boot up your machine.
[1] | The travesty being that laptop manufacturers being the profit oriented businesses that they are, cater to the masses which unfortunately sides with malicious, proprietary garbage like Windows. |
[2] | Technically Linux is the kernel and not the operating system (the rest is supplied by the GNU operating system sans its own kernel). Here is a better explanation. |
[3] | See here for a detailed tutorial on writing systemd service files. |