Você tem três opções. Escolha o um deles que você mais gosta:
-
Instale o pacote
gksu
se ainda não o tiver feito e usegksudo
para obter um pop-up de diálogo de entrada de senha da GUI em vez de ser solicitado no terminal comosudo
(que não está presente quando você o executa como atalho de teclado e, portanto, não funciona).sudo apt install gksu
O comando que você precisa vincular ao seu atalho seria este:
gksudo -- bash -c 'echo VALUE > /sys/devices/platform/sony-laptop/kbd_backlight'
-
Use
pkexec
em vez desudo
. Ele funciona de forma semelhante agksudo
e deve ser pré-instalado, mas só funciona para comandos de terminal. Se você quiser executar um aplicativo de GUI como root, ele precisará de uma configuração especial. Mas, para o seu comando, seria suficiente.O comando que você precisa vincular ao seu atalho seria este:
pkexec bash -c 'echo VALUE > /sys/devices/platform/sony-laptop/kbd_backlight'
-
Escreva um script curto para alterar o brilho e, em seguida, configure a opção
sudo
doNOPASSWD
para que você possa executá-lo como root sem ser solicitada uma senha.Questão relevante: Como executo comandos sudo específicos sem uma senha?
Veja o que você precisa fazer no seu caso específico:
-
Escreva um arquivo de script que contenha todos os comandos necessários para alcançar o que você deseja que será executado como root:
#!/bin/bash if test "$(id -u)" -ne 0 ; then sudo "$0" "$1" exit $? fi if test "$1" -gt 0 ; then echo "$1" > /sys/devices/platform/sony-laptop/kbd_backlight else echo "Invalid argument $1" exit 1 fi
O script acima recebe um número inteiro maior que zero como argumento da linha de comando e o grava no arquivo de controle da luz de fundo após realizar uma verificação básica de sanidade. Você também pode modificar a verificação para permitir apenas os valores
0
e2
, se desejar, mas deixaremos isso para você.Além disso, ele verifica como o usuário está em execução e tenta elevar seus privilégios para root executando-se com
sudo
, se necessário. Isso significa que você pode até mesmo omitir osudo
ao executá-lo. -
Salve este script como
/usr/local/bin/set-kbd-backlight
(você pode escolher um nome de arquivo diferente, mas o diretório deve permanecer o mesmo; observe que gravar neste local requersudo
) -
Verifique se seu arquivo de script tem as configurações corretas de propriedade e permissão. Você será capaz de rodar este script como root sem senha, então devemos ter certeza que ele pode ser executado por todos, mas não ser editado por usuários não-root!
sudo chown root:root /usr/local/bin/set-kbd-backlight sudo chmod 755 /usr/local/bin/set-kbd-backlight
-
Agora você pode configurar
sudo
para permitir a execução deste script como root sem senha:Edite seu arquivo de configuração
sudo
/etc/sudoers
executando o comando abaixo (não de outra forma!):sudo visudo
Agora acrescente a seguinte linha antes da linha contendo
includedir /etc/sudoers.d
próximo ao final do arquivo, substituindoUSERNAME
pelo nome de usuário correto, que você concederá a execução sem senha como root:USERNAME ALL=(root) NOPASSWD: /usr/local/bin/set-kbd-backlight
Saia do editor
visudo
pressionando Ctrl + X , então Y (ou qualquer tecla que represente "Sim" na sua localidade) e depois Enter . -
Verifique se está funcionando primeiro executando
sudo -k
para revogar sua senha armazenada em cache, caso você a tenha inserido nos últimos 15 minutos na sessão atual do shell. Isso não é necessário para o script funcionar, é apenas para testar se você configurouNOPASSWD
corretamente.Em seguida, execute os comandos abaixo para ativar e desativar a luz de fundo, sem
sudo
. Você não deve ser solicitado para sua senha.set-kbd-backlight 0 set-kbd-backlight 2
-
Vincule os comandos (
set-kbd-backlight 0
para desligar a luz,set-kbd-backlight 2
para ativá-lo) para os atalhos de teclado respectivos.
-