Difference between revisions of "Shutdown Pressing Power Button"

From ArchWiki
Jump to: navigation, search
(where I found my solution at least)
(36 intermediate revisions by 15 users not shown)
Line 1: Line 1:
[[Category:Power management (English)]]
+
[[Category:Power management]]
[[Category:HOWTOs (English)]]
+
[[es:Shutdown Pressing Power Button]]
{{i18n|Shutdown Pressing Power Button}}
+
[[it:Shutdown Pressing Power Button]]
== First solution ==
+
[[ru:Shutdown Pressing Power Button]]
 +
[[uk:Shutdown Pressing Power Button]]
 +
[[zh-CN:Shutdown Pressing Power Button]]
 +
{{stub|reason=should likely just be a redirect now}}
 +
First of all, make sure that {{ic|button}} [[Kernel modules|module]] is loaded (check the output of {{ic|lsmod}}). If it is not, load it manually and set it to load at boot.
  
If you want to shutdown your system by simply pressing the power button, do the following:
+
{{ic|logind}} handles the event from pressing the power key, and the behaviour can be configured in {{ic|/etc/systemd/logind.conf}}. See https://wiki.archlinux.org/index.php/Systemd#ACPI_power_management for more information.
 
+
#Install the [[acpid]] package.
+
#If there is no ''hal'' in the DAEMONS array in [[rc.conf]], add ''acpid'' to the DAEMONS array.
+
#Create a file in ''/etc/acpi/events/'' named ''power'' with following content:
+
# /etc/acpi/events/power
+
# This is called when the user presses the power button
+
+
event=button/power (PWR.||PBTN)
+
action=/sbin/poweroff
+
To be able to test it, make sure the acpid daemon is started
+
 
+
If you do not have hal, start the acpid daemon yourself:
+
# /etc/rc.d/acpid start
+
 
+
Otherwise restart hal, it will take care of acpid:
+
# /etc/rc.d/hal restart
+
 
+
From now on, pressing the power button (lightly, not for a few seconds) should properly shutdown the system.
+
Note that if you have '''hibernate''' configured and working you may want to change the last line with:
+
action=/usr/sbin/hibernate
+
 
+
{{warning|Do not add the acpid daemon to the DAEMON array in "/etc/rc.conf" if hal is already there. You'll get an error message at boot when the computer tries to reload the already running acpi daemon.}}
+
 
+
If you're using a more sophisticated WM, you should use its own shutdown call, so it'd save its session etc.
+
 
+
=== KDE 3 ===
+
 
+
Change the action (in <tt>/etc/acpi/events/power</tt>) to:  
+
action=/opt/kde/bin/dcop --all-users --all-sessions ksmserver ksmserver logout 0 2 0
+
 
+
=== KDE 4 ===
+
 
+
As of KDE 4.4, you can still use dcop as shown above.
+
 
+
Alternatively, you can use <tt>PowerDevil</tt>:
+
# Delete (or comment out) <tt>/etc/acpi/events/power</tt>.
+
# Open System Settings.
+
# Go to Advanced>>Power Management.
+
# Select "Edit Profiles" and choose the current profile. (In KDE 4.4, the default profile is "Powersave.")
+
# Select "Shutdown" as the action for "When power button is pressed."
+
# Press Apply.
+
 
+
{{Note|1) With dcop and PowerDevil, the power button works ''only'' when KDE is running. Also, KDE needs to start from KDM (it probably also works when started from GDM). It does ''not'' work if you start KDE with a "startx" command.}}
+
 
+
{{Note|2) The PowerDevil configuration is ''per user''. To configure the power button for other users, repeat these steps for each user's account.}}
+
 
+
'''Todo:''' Add simple multi-user configuration steps.
+
 
+
== XFCE ==
+
 
+
For '''XFCE4.4''' change the action line to:
+
''action=echo POWEROFF | /usr/lib/xfce4/xfsm-shutdown-helper''
+
 
+
'''''Note:''' For a more robust solution (If you are facing frequent WM crashes or working on a sacrificial PC for developing or testing your software...), you should take a look at "/usr/src/linux/Documentation/sysrq.txt", which is a kernel facility for yielding you (the user...) the CPU so that it could be used for any '''rescue''' work.''
+
 
+
== Second solution ==
+
(First solution not working for me)
+
 
+
1.Install acpid
+
2.Add acion for event - change file /etc/acpi/handler.sh:
+
 
+
...
+
case "$1" in
+
    button/power)
+
        #echo "PowerButton pressed!">/dev/tty5
+
        case "$2" in
+
            PWRF)  logger "PowerButton pressed: $2"
+
    /sbin/poweroff;;
+
            *)      logger "ACPI action undefined: $2" ;;
+
        esac
+
        ;;
+
...
+
 
+
3.Restart hal or acpid if you don't use hal:
+
# /etc/rc.d/hal restart
+
or
+
# /etc/rc.d/acpid restart
+
 
+
=== TODO ===
+
 
+
Add a technique that works regardless of VM (Gnome/KDE/xcfe/openbox/etc). Copy the <tt>/etc/acpi/events/power</tt> script from Ubuntu
+

Revision as of 20:14, 4 November 2012

Tango-document-new.pngThis article is a stub.Tango-document-new.png

Notes: should likely just be a redirect now (Discuss in Talk:Shutdown Pressing Power Button#)

First of all, make sure that button module is loaded (check the output of lsmod). If it is not, load it manually and set it to load at boot.

logind handles the event from pressing the power key, and the behaviour can be configured in /etc/systemd/logind.conf. See https://wiki.archlinux.org/index.php/Systemd#ACPI_power_management for more information.