Teclado de escurecimento automático para laptop retroiluminado quando ocioso

4

No Windows 10, a luz de fundo do teclado do meu laptop se apagou automaticamente após um minuto ou mais de inatividade. Assim que qualquer atividade ocorreu, eles voltaram a ligar.

No Ubuntu, se eu executar o seguinte

echo <0-3> | sudo tee /sys/class/leds/asus::kbd_backlight/brightness 

Isso funciona para diminuir / aumentar o brilho (0 sendo desligado, 3 sendo mais claro).

Existe uma maneira de fazer com que o acima seja executado automaticamente sempre que o sistema estiver ocioso por 1 minuto, bem como executá-lo novamente quando ele voltar a ficar inativo?

Obrigado.

    
por Click Upvote 26.04.2016 / 06:53

1 resposta

5

O que você precisa fazer

  1. Instale xprintidle , para acompanhar o tempo ocioso atual (definido pela falta de eventos de teclado e mouse).
  2. Crie um pequeno script de plano de fundo (mais abaixo); Copie o script em um arquivo vazio e salve-o como dim_keyboard.sh . Torne o script executável e copie-o para um local onde usuários não autorizados não possam alterar o script (por exemplo, /usr/local/bin ).
  3. Adicione o script ao arquivo sudoers , já que você executa o comando com sudo : Adicione a linha:

    <username> ALL= NOPASSWD: /path/to/your/script
    

    (onde <username> é o seu nome de usuário) para o arquivo, como explicado aqui .

N.B. No arquivo sudoers , por motivos de segurança, sempre use o caminho completo para o script, também se estiver em $PATH . A razão é que, caso contrário, seria fácil colocar um script com nome semelhante em ~/bin , que poderia ser executado com sudo privileges, possivelmente com código malicioso.

  1. Teste- execute o script com o tempo ocioso (em segundos) como um argumento:

    sudo /path/to/script.sh 60
    

    Para diminuir a luz de fundo após um minuto

  2. Se tudo funcionar bem, adicione-o aos aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar. adicione o comando:

    sudo /path/to/script.sh 60
    

O script:

#!/bin/bash

let "div = 1000"
let "limit = $1"
dimmed=false
cmd=/sys/class/leds/asus::kbd_backlight/brightness

while true
do
  sleep 2
  let "idle = $(xprintidle)"
  if [ $(($idle / $div)) -gt $limit ] && [ $dimmed == false ]; then
    echo 0 | tee $cmd 
    dimmed=true
  elif [ $(($idle / $div)) -le $limit ] && [ $dimmed == true ]; then
    echo 3 | tee $cmd 
    dimmed=false
  fi
done
    
por Jacob Vlijm 26.04.2016 / 10:33