Personalize a ação do botão liga / desliga (Ubuntu 10.04)

6

Gostaria de personalizar a ação do botão liga / desliga. O tutorial no link funciona, mas nem sempre (o número de desligamentos processos podem às vezes ser diferentes).

Eu preciso da solução onde

  • 1x pressionar de um botão executa o desligamento normal do SO
  • 3x pressionar de um botão executa a reinicialização do SO

Como você escreveria o código para isso? ARQUIVO: /etc/acpi/powerbtn.sh

#!/bin/sh
# /etc/acpi/powerbtn.sh
# Initiates a shutdown when the power putton has been
# pressed.

# you need to double 'click' the power button to shutdown
( if ! [ $(pidof -x powerbtn.sh | wc -w) -eq 3 ]; then
    sleep .4
    exit
  else
    poweroff
  fi
) &
    
por xpepermint 10.12.2011 / 23:32

1 resposta

2

O número de processos não deve ser diferente. Você precisa se lembrar ao contar os pids para incluir o próprio script e o subprocesso criado.

Eu criei o seguinte que deve funcionar para seus requisitos. Você deve alterar o tempo limite dependendo da rapidez com que deseja pressionar vários botões.

#!/bin/sh
# /etc/acpi/powerbtn.sh
# Initiates a shutdown when the power putton has been
# pressed.

timeout=0.8
pid_count=$(pidof -x powerbtn.sh | wc -w)

( if [ $pid_count -eq 4 ]; then
        sleep $timeout
        /etc/acpi/sleep.sh
    else
        sleep $timeout
        pid_count_now=$(pidof -x powerbtn.sh | wc -w)
        if [ $pid_count_now -eq 2 ] && [ $pid_count -eq 2 ]; then
            poweroff
        fi
        exit
    fi
) &
    
por Cas 30.03.2012 / 03:46