Vou postar isso aqui para qualquer pessoa que esteja procurando uma solução simples. Minha maior preocupação é muitas vezes adormecermos assistindo filmes e acordarmos com a TV ainda ligada. Eu sou novo no Linux, e nosso sistema anterior era o Windows XP (sem o Kodi), então ter a tela desativada após 10 minutos não era problema (embora ocasionalmente fosse travado e desligado no meio de um filme da Netflix). Eu tive dois sistemas Dell diferentes com o Windows morrer no passado, indo dormir e nunca mais acordar, então eu nunca usei as funções de suspensão / suspensão incorporadas ao Windows. Eu acho que o Kodi é uma interface incrível, muito melhor do que tentar controlar a área de trabalho do Windows com um mini teclado / trackpad sem fio.
Eu finalmente percebi isso, e é claro que eu estava tornando isso muito mais complicado do que realmente é. O que acabei fazendo foi reescrever os dois scripts diferentes em um único:
while true; do
sleep 1 # wait for 1 second to continue loop
# check for sound output, if yes clear variable, if no then count +1
if pactl list | grep RUNNING > /dev/null; then
unset sound; echo $sound; else
echo sound=$((sound++))
fi
# check idle time and no-sound time, if yes then suspend and exit loop
if [[ 'xprintidle' > 600000000 && "$sound" -ge 600 ]]; then
(sudo pm-suspend); exit 0
fi
done
Depois de salvar o script, tive que executar alguns outros comandos para que ele funcionasse corretamente:
chmod x+ /path/to/filename.sh #to make it executable
chmod 555 /path/to/filename.sh #had a problem with permissions and ownership
seguido pela modificação do arquivo /etc/sudoers
para poder chamar pm-suspend
sem ser root ou pedir uma senha adicionando isso ao final do arquivo:
username ALL = NOPASSWD: /usr/sbin/pm-hibernate
username ALL = NOPASSWD: /usr/sbin/pm-suspend
substituindo username
pelo nome de usuário real que eu usei para fazer login no meu sistema.
Até agora, independentemente do que está produzindo som (testei com o Netflix por meio do Chrome Launcher através do Kodi, YouTube no Chrome diretamente da área de trabalho e reproduzi um filme diretamente do Kodi) ele suspende aproximadamente 10 minutos após o fim do som. desde que eu não esteja fazendo mais nada. Eu digo "aproximadamente" porque eu acredito que xprintidle
joga alguns números aleatórios aqui e ali, mas até agora ele sempre dorme. Eu tive que adicionar o comando exit
, caso contrário, ele gerou um loop sleep / wake que era difícil de sair. Em seguida, adicionei o script a ser executado na inicialização, adicionando uma tarefa cron com @reboot /path/to/filename.sh
. Isso funciona muito bem, mas ainda não tenho certeza se cron
é reiniciado no currículo (não acredito, não foi possível testar isso ainda) ou se preciso chamar o script de outro lugar quando o o sistema acorda.
Eu suponho que preciso perguntar em outro tópico, mas minha próxima parte deste projeto é garantir que este script reinicie ao ser retomado, e fazer com que o sistema reconheça meu teclado sem fio Rii Mini i28 (com dongle USB) como um dispositivo de despertar.