Por que meu laptop suspende duas vezes / três vezes?

2

O awesome WM não suspende automaticamente ao fechar a tampa, então eu segui algumas instruções para obtê-lo trabalhando. Eu simplesmente adicionei um arquivo /etc/acpi/local/lid.sh.post com o seguinte conteúdo:

#!/bin/sh
pm-suspend

A suspensão funciona agora, mas depois que abro a tampa e pressiono o botão liga / desliga, ele mostra a área de trabalho por uma fração de segundo antes de suspendê-la novamente! Na segunda vez que pressiono o botão liga / desliga, ele é retomado corretamente. Depois disso, sempre que suspenso, preciso pressionar o botão liga / desliga e esperar três vezes para que ele volte a funcionar corretamente. Eu tentei suspender quatro vezes seguidas, e não parece piorar.

Editar : estou usando um simples serviço de bloqueio de tela em vez do script original:

[Unit]
Description=Lock X session
Before=sleep.target

[Service]
Environment=DISPLAY=:0
ExecStart=/usr/bin/xautolock -locknow

[Install]
WantedBy=sleep.target

É não é uma solução perfeita.

Resolvido! Se alguém mais quiser, eu fiz um script para fazer isso em um comando:

#!/usr/bin/env bash
#
# NAME
#        suspend-on-close.sh - Enable suspend when closing laptop lid
#
# SYNOPSIS
#        suspend-on-close.sh [options]
#
# DESCRIPTION
#        Adds a new "post" event to the ACPI lid close handler
#
# BUGS
#        https://github.com/l0b0/tilde/issues
#
# COPYRIGHT
#        Copyright © 2013-2014 Victor Engmark. License GPLv3+: GNU GPL
#        version 3 or later <http://gnu.org/licenses/gpl.html>.
#        This is free software: you are free to change and redistribute it.
#        There is NO WARRANTY, to the extent permitted by law.
#
################################################################################

set -o errexit -o noclobber -o nounset -o pipefail

directory="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PATH='/usr/bin:/bin'

target_dir="/etc/acpi/local"
target_file="${target_dir}/lid.sh.post"

if [[ ! -d "$target_dir" ]]
then
    mkdir "$target_dir"
fi

> "$target_file" cat <<EOF
#!/bin/sh
grep -q closed /proc/acpi/button/lid/*/state && pm-suspend
EOF

chmod u+x "$target_file"
    
por l0b0 06.02.2013 / 22:02

2 respostas

4

Tenho certeza de que seu retorno de chamada será chamado toda vez que a tampa for fechada e aberta.

O arquivo sleep.sh aqui afirma:

# if launched through a lid event and lid is open, do nothing
echo "$1" | grep "button/lid" && grep -q open /proc/acpi/button/lid/LID/state && exit 0

o cenário "tampa aberta" é um dos que o seu script não está verificando ...

Você pode testar isso rapidamente fazendo eco a alguns parâmetros em um arquivo de log

    
por 07.02.2013 / 00:13
1

Estou executando o Awesome WM com o Ubuntu 14.04 em um Dell Inspiron 11z e estava tendo um problema semelhante de suspensão / suspensão.

Uma vez que eu confirmei s2ram -f e s2disk funcionou, atualizei /usr/lib/pm-utils/sleep.d/00powersave para ler /usr/sbin/s2ram -f , e ela foi suspensa no fechamento, mas foi suspensa novamente após a abertura.

Após o seu lead, adicionei o seguinte a 00powersave

echo "$1" >> /home/user/lid.log
cat /proc/acpi/button/lid/LID0/state >> /home/user/lid.log

Após fechar e abrir o laptop, a saída foi:

suspend
state:      closed
resume
state:      open

Com base nesses estados, eu fiz o seguinte no meu arquivo 00powersave :

echo "$1" | grep "resume" && grep -q open /proc/acpi/button/lid/LID0/state && exit 0
/usr/sbin/s2ram -f

Que verificou se o script estava sendo chamado por "resume" e se a tampa estava aberta e não fez nada se essas duas condições foram atendidas.

Obrigado pessoal! Desculpe se isso é uma má etiqueta, mas isso foi uma dor para resolver, e eu queria postar isso para que a próxima pessoa tivesse mais facilidade.

    
por 19.07.2015 / 02:16