Como posso obter um script para sempre executar no currículo no Lubuntu?

4

Eu encontrei um aborrecimento no Lubuntu 11.10, descrito aqui:

link

Eu criei uma solução alternativa, descrita aqui:

link

Minha solução envolve colocar um script em /etc/pm/sleep.d para ser executado no currículo.

No entanto, a solução parece funcionar apenas quando eu suspendo usando pm-suspend. Quando eu suspendo, fechando a tampa do meu laptop, minha solução falha. Como faço para que um script seja executado quando retome do sono e que o sono foi acionado ao fechar a tampa?

Detalhes:

Eu suspeito que esta falha pode ser porque os scripts em /etc/pm/sleep.d não estão sendo executados quando eu suspendo fechando a tampa. Suspender com pm-suspender, em seguida, retomar fechando / abrindo a tampa funciona bem. Acredito Lubuntu usa xfce4-power-manager para lidar com a suspensão devido ao fechamento da tampa, talvez isso seja importante? Eu prefiro suspender fechando a tampa do laptop, em vez de digitar um comando de terminal.

EDITAR:

Ao inspecionar /var/log/pm-suspend.log, como sugerido por andrewsomething, podemos ver que o script reset_panel é executado em todos os currículos, apenas falha nos currículos que seguem suspensões acionadas pela tampa. Eu segui sua sugestão adicional de adicionar uma declaração de exportação ao meu script e as coisas estão funcionando agora. O script é acionado cedo demais no processo de ativação, mas isso não é difícil de corrigir. A versão atual do script:

#!/bin/bash
case "" in
   suspend|hibernate)
      #do nothing
   ;;
   resume|thaw)
      export DISPLAY=:0 #What does this do? Are there side effects?
      sleep 5 && lxpanelctl restart & #Delayed so the battery icon can finish wrecking shop.
   ;;
   *)
      exit 1
   ;;
esac
exit 0

andrewsomething, se você quiser postar uma resposta, eu vou aceitar. Obrigado pela ajuda!

    
por Andrew 24.02.2012 / 14:05

1 resposta

2

O fato de o log conter /etc/pm/sleep.d/reset_panel resume suspend: Cant connect to display: indica que nenhuma exibição está configurada e você está tentando executar um programa gráfico. Quando você está executando pm-suspend da sua sessão, a exibição correta foi configurada provavelmente pelo LightDM ou qualquer que seja o seu gerenciador de exibição. Quando ele é executado automaticamente no currículo, presumo que ele esteja sendo executado como o usuário raiz e não anexado a um monitor. Então você precisa definir a variável de exibição, assim:

#!/bin/bash
case "" in
   suspend|hibernate)
      #do nothing
   ;;
   resume|thaw)
      export DISPLAY=:0
      sleep 5 && lxpanelctl restart & #Delayed so the battery icon can finish wrecking shop.
   ;;
   *)
      exit 1
   ;;
esac
exit 0

O único inconveniente é que isso não funcionará se a exibição não for realmente :0 Esse é o padrão, mas pode mudar particularmente em uma configuração de vários usuários.

    
por andrewsomething 25.02.2012 / 06:20