public inbox for gentoo-user@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-user] Bash and ACPI issue - laptop lid
@ 2009-03-11 22:41 Saphirus Sage
  2009-03-12  0:42 ` Mike Kazantsev
  2009-03-12 12:13 ` Sebastian Günther
  0 siblings, 2 replies; 4+ messages in thread
From: Saphirus Sage @ 2009-03-11 22:41 UTC (permalink / raw
  To: gentoo-user

I've been trying to setup my laptop to enter ACPI S3 (suspend to ram)
when I close the lid. I currently have the scripts setup as such:
/etc/acpi/events/lid
    event=button[ /]lid.*
    action=/etc/acpi/actions/lid.sh
/etc/acpi/actions/lid.sh
    #!/bin/bash
    for i in $(cat /proc/acpi/button/lid/LID/state | grep -o closed); do
        if [ $i = "closed" ]; then
        /usr/sbin/pm-suspend
        fi
        if [ $i != "closed" ]; then
        sleep 5
        fi
    done
The issue I've run into is that this will cause my laptop to suspend to
the RAM upon any change in the lid state, irregardless of if it is open
or closed. I tried to be more specific by utilizing the suffix of the
event, but it's incremental, which is a bit beyond my abilities. Any
suggestions to make this suspend only when the lid is closed?



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [gentoo-user] Bash and ACPI issue - laptop lid
  2009-03-11 22:41 [gentoo-user] Bash and ACPI issue - laptop lid Saphirus Sage
@ 2009-03-12  0:42 ` Mike Kazantsev
  2009-03-12  1:35   ` Saphirus Sage
  2009-03-12 12:13 ` Sebastian Günther
  1 sibling, 1 reply; 4+ messages in thread
From: Mike Kazantsev @ 2009-03-12  0:42 UTC (permalink / raw
  To: gentoo-user

[-- Attachment #1: Type: text/plain, Size: 1118 bytes --]

On Wed, 11 Mar 2009 18:41:56 -0400
Saphirus Sage <saphirus497@gmail.com> wrote:

> The issue I've run into is that this will cause my laptop to suspend to
> the RAM upon any change in the lid state, irregardless of if it is open
> or closed. I tried to be more specific by utilizing the suffix of the
> event, but it's incremental, which is a bit beyond my abilities. Any
> suggestions to make this suspend only when the lid is closed?

This one seem to be working for me:

  #!/bin/sh
  if grep closed /proc/acpi/button/lid/LID0/state &>/dev/null
  then echo "Lid closed, suspending..."
  else echo "Lid is open, doing nothing"
  fi


Then, you can just put it to, say, crontab, with a line like this:

  */5 * * * * /path/to/script.sh

...which'll make it run every five minutes, so the laptop will be
suspended within five mins of closing the lid, which should also
prevent accidental closing events.


Of course, you should put your actions to the aforementioned script, if
you want it to do something useful, instead of just experimental echo.


-- 
Mike Kazantsev // fraggod.net

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [gentoo-user] Bash and ACPI issue - laptop lid
  2009-03-12  0:42 ` Mike Kazantsev
@ 2009-03-12  1:35   ` Saphirus Sage
  0 siblings, 0 replies; 4+ messages in thread
From: Saphirus Sage @ 2009-03-12  1:35 UTC (permalink / raw
  To: gentoo-user

Mike Kazantsev wrote:
> On Wed, 11 Mar 2009 18:41:56 -0400
> Saphirus Sage <saphirus497@gmail.com> wrote:
>
>   
>> The issue I've run into is that this will cause my laptop to suspend to
>> the RAM upon any change in the lid state, irregardless of if it is open
>> or closed. I tried to be more specific by utilizing the suffix of the
>> event, but it's incremental, which is a bit beyond my abilities. Any
>> suggestions to make this suspend only when the lid is closed?
>>     
>
> This one seem to be working for me:
>
>   #!/bin/sh
>   if grep closed /proc/acpi/button/lid/LID0/state &>/dev/null
>   then echo "Lid closed, suspending..."
>   else echo "Lid is open, doing nothing"
>   fi
>
>
> Then, you can just put it to, say, crontab, with a line like this:
>
>   */5 * * * * /path/to/script.sh
>
> ...which'll make it run every five minutes, so the laptop will be
> suspended within five mins of closing the lid, which should also
> prevent accidental closing events.
>
>
> Of course, you should put your actions to the aforementioned script, if
> you want it to do something useful, instead of just experimental echo
I'd considered using a crontab entry, it just seemed so inefficient in
comparison. However, I used the little chunk you provided as you've
suggested and it works well enough now, thanks. Apparently, after
researching it a bit, there are numerous bugs with acpi, which may
explain why the state in /proc/acpi/buttons/lid/LID/state would seem to
hang for a couple minutes, or until a restart. Still, thanks again.



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [gentoo-user] Bash and ACPI issue - laptop lid
  2009-03-11 22:41 [gentoo-user] Bash and ACPI issue - laptop lid Saphirus Sage
  2009-03-12  0:42 ` Mike Kazantsev
@ 2009-03-12 12:13 ` Sebastian Günther
  1 sibling, 0 replies; 4+ messages in thread
From: Sebastian Günther @ 2009-03-12 12:13 UTC (permalink / raw
  To: gentoo-user

[-- Attachment #1: Type: text/plain, Size: 1801 bytes --]

* Saphirus Sage (saphirus497@gmail.com) [12.03.09 00:53]:
> I've been trying to setup my laptop to enter ACPI S3 (suspend to ram)
> when I close the lid. I currently have the scripts setup as such:
> /etc/acpi/events/lid
>     event=button[ /]lid.*
>     action=/etc/acpi/actions/lid.sh

Looks normal.

> /etc/acpi/actions/lid.sh
>     #!/bin/bash
Maybe a 
      sleep 1 
will help with your issue (or more secs...)
>     for i in $(cat /proc/acpi/button/lid/LID/state | grep -o closed); do
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
               This only has elements when the lid is closed, so the do 
               block will only be exexuted, if the lid is closed.
>         if [ $i = "closed" ]; then
          ^^^^^^^^^^^^^^^^^^^^^^^^^^
          Therefor this is totally pointless, because we only come to 
          this point if the lid is closed and thus $i is always == "closed"
>         /usr/sbin/pm-suspend
>         fi
>         if [ $i != "closed" ]; then
>         sleep 5
>         fi
This whole block will never ever be reached, so you can easily erase it.

>     done

> The issue I've run into is that this will cause my laptop to suspend to
> the RAM upon any change in the lid state, irregardless of if it is open
> or closed. I tried to be more specific by utilizing the suffix of the
> event, but it's incremental, which is a bit beyond my abilities. Any
> suggestions to make this suspend only when the lid is closed?
> 

You should test if your Desktop Environment does the suspending for you. 
Then you have to tweak there, to get the behaviour you want.

HTH 
Sebastian

-- 
 " Religion ist das Opium des Volkes. "      Karl Marx

 SEB@STI@N GÜNTHER         mailto:samson@guenther-roetgen.de

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-03-12 12:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-11 22:41 [gentoo-user] Bash and ACPI issue - laptop lid Saphirus Sage
2009-03-12  0:42 ` Mike Kazantsev
2009-03-12  1:35   ` Saphirus Sage
2009-03-12 12:13 ` Sebastian Günther

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox