Portanto, a Web é realmente uma coisa incrível! Após muita pesquisa e mergulhar em muitos links do fórum, consegui entender melhor o problema, descobrir qual programa era responsável por ele e, finalmente, desativar esse comportamento para sempre. Pensei em anotar meus passos, caso outras pessoas encontrem o mesmo problema.
Etapa 1. Monitore o sistema para saber se / quando a luz de fundo do teclado está sendo ligada
A primeira coisa é saber que o status atual da luz de fundo do teclado pode ser verificado lendo o arquivo /sys/devices/platform/dell-laptop/leds/dell\:\:kbd_backlight/brightness
. Portanto, gostaríamos de ser notificados de quaisquer alterações nesse arquivo e, idealmente, qual processo chamou a alteração.
Isso pode ser feito usando o fanotify . Eu usei o programa de exemplo que é fornecido na página de manual e adicionei algumas modificações * para que eu pudesse monitorar as alterações no arquivo de brilho. Acontece que o processo responsável pela modificação foi /usr/lib/upower/upowerd
, que é um processo daemon para a UPower .
Etapa 2. Descubra por que o UPower está ativando a luz de fundo (falha)
Essa foi a parte mais confusa da investigação, e ainda não sei dizer por que isso acontece. Eu encontrei uma pessoa com um problema muito semelhante, mas sem solução, então comecei a ver se conseguia desativar completamente o UPower (e quais seriam as consequências) quando encontrei este link . Acontece que o UPower tem um arquivo de configuração! Isso é melhor.
Etapa 3. Pare a UPower de ligar a luz de fundo do teclado
Por fim, editei o arquivo de configuração mencionado acima, localizado em /etc/dbus-1/system.d/org.freedesktop.UPower.conf
e mudei <allow>
para <deny>
na seguinte linha:
<allow send_destination="org.freedesktop.UPower"
send_interface="org.freedesktop.UPower.KbdBacklight"/>
Eu reiniciei o dbus com sudo service dbus restart
(uso systemctl restart dbus.service
no Ubuntu 16.04 e posterior) e continuei bloqueando minha tela para testar o resultado e ... Funcionou !! Bem, sorta. A tela de login não apareceu, então não pude entrar novamente e tive que forçar a reinicialização. Mas então tudo funcionou muito bem!
E é isso! Ainda estou curioso para saber qual seria o caminho certo para fazer isso. Se você sabe, deixe um comentário, por favor!
* Por exemplo, o programa de exemplo foi configurado apenas para monitorar FAN_OPEN_PERM
e FAN_CLOSE_WRITE
eventos, mas nisso foi um FAN_MODIFY
evento.