Então, a Web é realmente uma coisa incrível! Depois de muita pesquisa e mergulhando 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. Eu pensei em escrever meus passos, no caso de outras pessoas se depararem com o mesmo problema.
Passo 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
. Então, gostaríamos de ser notificados sobre quaisquer alterações neste arquivo e, idealmente, qual processo invocou a alteração.
Isso pode ser feito usando fanotify . Eu usei o programa de exemplo que é fornecido na página man e adicionei alguns 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 UPower .
Etapa 2. Descubra por que a UPower está ligando a luz de fundo (falha)
Essa foi a parte mais imprecisa da investigação, e ainda não sei dizer por que isso acontece. Eu encontrei uma pessoa com um muito problema similar mas sem solução, então Eu comecei a ver se eu poderia desativar o UPower completamente (e quais seriam as conseqüências) quando eu encontrasse este link . Acontece que o UPower tem um arquivo de configuração! Isso é melhor.
Etapa 3. Pare o 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 alterei <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
(use systemctl restart dbus.service
no Ubuntu 16.04 e posterior) e continuei a bloquear minha tela para testar o resultado e ... Funcionou !! Bem, sorta. A tela de login não apareceria, 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 a maneira correta de 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
events, mas nesse caso foi um evento FAN_MODIFY
.