Suspend on LID close: Difference between revisions

From Alpine Linux
No edit summary
 
(6 intermediate revisions by 4 users not shown)
Line 4: Line 4:


[https://sourceforge.net/projects/acpid2/ acpid2] (provided by package {{pkg|acpid}}) is a flexible and extensible daemon with Netlink support for delivering ACPI events.
[https://sourceforge.net/projects/acpid2/ acpid2] (provided by package {{pkg|acpid}}) is a flexible and extensible daemon with Netlink support for delivering ACPI events.
The [https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/community/acpid/handler.sh default handler script] (<code>/etc/acpi/handler.sh</code>) installed with the package provides support for suspend on LID close out of the box.
The [https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/community/acpid/handler.sh default handler script] ({{path|/etc/acpi/handler.sh}}) installed with the package provides support for suspend on LID close out of the box.
We recommend installing {{pkg|zzz}} along with {{pkg|acpid}} to get support for pre/post suspend hooks etc.
We recommend installing {{pkg|zzz}} along with {{pkg|acpid}} to get support for pre/post suspend hooks etc.


# Install {{pkg|acpid}} and {{pkg|zzz}}: {{cmd|apk add acpid zzz}}
# Install {{pkg|acpid}} and {{pkg|zzz}}: {{cmd|# apk add acpid zzz}}
# Enable and start the acpid daemon: {{cmd|rc-update add acpid && rc-service acpid start}}
# Enable and start the acpid daemon: {{cmd|# rc-update add acpid && rc-service acpid start}}


== Busybox acpid ==
== Busybox acpid ==


This can be done via <code>acpid</code> provided by Busybox with a hook in {{path|/etc/acpi/LID/00000080}}:
This can be done via [[Busybox acpid]] with a hook in {{path|/etc/acpi/LID/00000080}}:


# '''with zzz:'''{{cmd|apk add zzz}} {{cat|/etc/acpi/LID/00000080|#!/bin/sh
# '''with zzz:'''{{cmd|# apk add zzz}} {{cat|/etc/acpi/LID/00000080|#!/bin/sh
exec zzz
exec zzz
}}
}}
# '''or with pm-utils:''' {{cmd|apk add pm-utils}} {{cat|/etc/acpi/LID/00000080|#!/bin/sh
# '''or with pm-utils:''' {{cmd|# apk add pm-utils}} {{cat|/etc/acpi/LID/00000080|#!/bin/sh
exec pm-suspend
exec pm-suspend
}}
}}
Line 25: Line 25:


Make the hook executable:
Make the hook executable:
{{cmd|chmod +x /etc/acpi/LID/00000080}}
{{cmd|# chmod +x /etc/acpi/LID/00000080}}


That should be it. To make sure that the acpid daemon is running, execute:
That should be it. To make sure that the acpid daemon is running, execute:
{{cmd|/etc/init.d/acpid start}}
{{cmd|# rc-service acpid start}}


= =
== elogind ==
 
Use elogind to trigger suspend and use doas to grant normal user such permissions.
 
Install elogind:
 
apk add elogind
rc-update add elogind
rc-service elogind start
 
Now suspend on lid close should be working as expected.
 
For normal user to trigger suspend, install doas:
 
apk add doas
 
Configure doas in <code>/etc/doas.conf</code>:
 
permit nopass $USER as root cmd /bin/loginctl
 
You should now be able to suspend the computer as a normal user, using the full path to executable.
 
= See Also =
* [https://github.com/jirutka/zzz zzz]
* [https://github.com/jirutka/zzz zzz]
* [https://unix.stackexchange.com/questions/484550/pm-suspend-vs-systemctl-suspend pm-suspend vs systemd...]
* [https://unix.stackexchange.com/questions/484550/pm-suspend-vs-systemctl-suspend pm-suspend vs systemd...]
* [http://archive.md/Bcqlz pm-utils (arch wiki)]
* [https://wiki.archlinux.org/index.php?title=Pm-utils&oldid=498864 Archwiki pm-utils (archived page)]


[[Category:Power Management]]
[[Category:Power Management]]
[[category: Desktop]]
[[category: Desktop]]

Latest revision as of 16:44, 26 June 2024

This article explains how to make your laptop go to Suspend when closing the LID.

acpid2

acpid2 (provided by package acpid) is a flexible and extensible daemon with Netlink support for delivering ACPI events. The default handler script (/etc/acpi/handler.sh) installed with the package provides support for suspend on LID close out of the box. We recommend installing zzz along with acpid to get support for pre/post suspend hooks etc.

  1. Install acpid and zzz:

    # apk add acpid zzz

  2. Enable and start the acpid daemon:

    # rc-update add acpid && rc-service acpid start

Busybox acpid

This can be done via Busybox acpid with a hook in /etc/acpi/LID/00000080:

  1. with zzz:

    # apk add zzz

    Contents of /etc/acpi/LID/00000080

    #!/bin/sh exec zzz
  2. or with pm-utils:

    # apk add pm-utils

    Contents of /etc/acpi/LID/00000080

    #!/bin/sh exec pm-suspend
  3. or with raw variant:

    Contents of /etc/acpi/LID/00000080

    #!/bin/sh echo mem > /sys/power/state

Make the hook executable:

# chmod +x /etc/acpi/LID/00000080

That should be it. To make sure that the acpid daemon is running, execute:

# rc-service acpid start

elogind

Use elogind to trigger suspend and use doas to grant normal user such permissions.

Install elogind:

apk add elogind
rc-update add elogind
rc-service elogind start

Now suspend on lid close should be working as expected.

For normal user to trigger suspend, install doas:

apk add doas

Configure doas in /etc/doas.conf:

permit nopass $USER as root cmd /bin/loginctl

You should now be able to suspend the computer as a normal user, using the full path to executable.

See Also