Recentemente atualizei para o Ubuntu 22.04 e não estou conseguindo ligar o led do meu teclado, a tecla para ligar é o SCROLL LOCK, mas não está funcionando. Quando estava na versão do Ubuntu 20.04 funcionava normalmente, depois que atualizei, parou de funcionar.
Alguém tem alguma solução?
Ainda não encontrei uma solução. Quando eu ligo meu computador o NUM LOCK é ativado automaticamente, queria fazer isso com SCROLL LOCK também, para ligar o teclado, mas aparentemente o SCROLL LOCK não está funcionando.
Veja se a wiki do Arch Linux pode te ajudar. Peguei o link da wiki em português para facilitar.
https://wiki.archlinux.org/title/Keyboard_backlight_(Português)#No_GNOME
Na wiki do Arch Linux em inglês há a sugestão do uso do xset se você estiver usando Xorg. Como o Ubuntu 22.04 usa Wayland por padrão, talvez essa dica não seja muito útil. De toda forma fica aí o link caso você decida usar Xorg.
https://wiki.archlinux.org/title/Keyboard_backlight#xset
Eu executei esses 2 comandos e não funcionou. Estou pressionando a tecla SCROLL LOCK e ainda não funciona.
Executei primeiro esse comando:
$ gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Keyboard.StepUp
Depois executei esse:
$ gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Keyboard.StepDown
Eu não utilIzo o Xorg, pretendo continuar no Wayland mesmo, pois estou sentindo o mesmo mais fluido que o Xorg, estou achando muito melhor. Sinto que meu computador fica mais leve utilizando ele.
Achei uma solução!
Encontrei nesse tópico: command line - Wayland equivalent to "xset led" - Ask Ubuntu
Estou ligando da seguinte forma:
sudo sh -c ‘echo 1 > /sys/class/leds/input4::scrolllock/brightness’
Para desligar, execute esse comando:
sudo sh -c ‘echo 0 > /sys/class/leds/input4::scrolllock/brightness’
OBS: Antes de executar, verifique se os caminhos são iguais, pois pode variar, no tópico mesmo mencionado acima o caminho era: /sys/class/leds/input0::scrolllock/brightness
, enquanto no meu é: /sys/class/leds/input4::scrolllock/brightness
.
Agora quero saber como faz para executar esses comandos ao iniciar o Ubuntu, pois ter que executar sempre esse comando acho meio chato, considerando que preciso executar como um super usuário, como faço isso?
O melhor que dá para fazer é criar atalhos de teclado no Gnome passando esses comandos que você encontrou junto ao pkexec para poder executá-lo como root (vai exigir a senha de root sempre que você apertar no atalho). Não gosto dessa solução.
Você testou o utilitário brightnessctl que a wiki do Arch Linux sugere logo no início do artigo? Dá para instalá-lo no Ubuntu.
Mas eu quero que seja ligado quando ligar o computador. Se eu colocar esse atalho para executar na inicialização, vai pedir a senha?
Sim, acabei de testar agora, essa maneira também funcionou, obrigado! Porém, ainda precisa executar como super usuário, tentei executar sem o “sudo” inicialmente e deu erro de “Permission Denied”.
Deu esse erro ao executar sem sudo:
Can't modify brightness: Permission denied
You should run this program with root privileges.
Alternatively, get write permissions for device files.
Executei dessa maneira e funcionou:
# Para ligar
sudo brightnessctl --device='input4::scrolllock' set 1
# Para desligar
sudo brightnessctl --device='input4::scrolllock' set 0
Acredito que executando como sudo
deve atrapalhar na inicialização, pois vai pedir a senha, posso estar errado. Corrija-me se tiver errado.
Crie um script para ser executado como um serviço do systemd. Aqui ensina direitinho como fazer isso:
Eu tentei dessa mesma forma, funcionou quando liguei o computador, mas depois quando chegou na parte de fazer login no usuário, os LEDs do teclado foram desligados automaticamente.
O script está dessa forma (/opt/leds.sh):
#!/bin/bash
sh -c "echo 1 > /sys/class/leds/input4::scrolllock/brightness"
O arquivo “leds.service” está dessa forma:
[Unit]
Description=Ligar leds do teclado
Wants=network-online.target
After=network.target
[Service]
ExecStart=/bin/bash /opt/leds.sh
[Install]
WantedBy=multi-user.target
Usando o comando do brightnessctl dá na mesma coisa?
Sim, testei com brightnessctl, dá no mesmo. Quando ta chegando na parte de logar, aonde fica todos os usuários, o led do teclado é desligado. Liga normalmente, porém, por algum motivo, está desligando depois de um tempo.
Veja se colocando WantedBy=graphical.target
no lugar disso aí dá certo.
Testei dessa forma e ainda não deu certo. Está ligando antes que o Num Lock, o Num Lock liga automaticamente, quando chega na parte dos usuários, acredito que deve ter algum motivo para o Num Lock ligar bem depois.
Teste retirando essa parte.
Talvez este link possa ajudar:
https://www.freedesktop.org/software/systemd/man/systemd.special.html
Acabei de testar tirando essa parte, ainda não funcionou.
Eu não entendi muito bem. Qual eu utilizo para ser chamado o script após logar no usuário? Acredito que depois de logar, vai funcionar, só não sei como fazer isso.
EDIT: Eu percebei que, quando o Num Lock é acionado automaticamente, na parte dos usuários, os leds do teclado são desligados e, quando efetua o login, o Num Lock é desligado e após alguns segundos é ligado novamente. Talvez eu tenha que fazer dessa mesma forma, para os leds funcionar, ligar depois de efetuar o login, testei com “default.target”, mas não funcionou.
Estou tentando descobrir isso junto a você KKKKKKK.
Veja se especificando o usuário no [Service] do arquivo leds.service resolve.
Assim:
[Service]
User=seu-usuario
ExecStart=/bin/bash /opt/leds.sh
Outra coisa que você pode tentar é ativar o serviço com systemctl --global enable servico
. Acredito que isso deixará o serviço disponível para todos os usuários. Desative o serviço que está rodando antes de ativá-lo de novo usando o –global.
Um serviço de usuário deve resolver essa questão do login, mas creio que isso não permitiria que o comando do script fosse rodado com privilégios de superusuário.
Já tentei fazer dessa forma, eu tinha visto em um tópico, testei também systemctl --user enable
, para ativar apenas no usuário, mas ainda não funcionou, agora não está nem ligando automaticamente. Acho melhor deixar isso quieto, para não dar tanto trabalho, isso não é algo que preciso muito, muito obrigado de qualquer forma! Estarei marcando sua mensagem lá em cima como solução.
Como eu desconfiava, um serviço de usuário não permite rodar um comando que necessita de privilégios de superusuário :l