PINE64
How to set the Power Off key binding in i3wm for the Pinebook - Printable Version

+- PINE64 (https://forum.pine64.org)
+-- Forum: Pinebook (https://forum.pine64.org/forumdisplay.php?fid=76)
+--- Forum: Linux on Pinebook (https://forum.pine64.org/forumdisplay.php?fid=79)
+--- Thread: How to set the Power Off key binding in i3wm for the Pinebook (/showthread.php?tid=5142)



How to set the Power Off key binding in i3wm for the Pinebook - MarkHaysHarris777 - 09-16-2017

Greetings,

The purpose of this blog post is to detail the steps necessary to set the Power Off key-binding for the Pinebook in i3 window manager.  We don't want the Pinebook to come crashing down if we accidentally touch the poweroff button -- so we'll set a key-binding that makes sense requiring at least two other keys , for instance the $mod key and the Shift key.  The following key-binding should bring the system down cleanly ( and power off properly ) without prompting for a password:

       $mod+Shift+XF86_PowerOff 

The key-binding will be placed in the i3 config;  but I'm getting ahead of myself.  The first step is to build the poweroff script in /usr/local/sbin/

Pb_poweroff.sh

Code:
#!/bin/sh

poweroff

The simple script above should be placed in  /usr/local/sbin/  and should be made active with the following commands:

       sudo  chown  root:root  Pb_poweroff.sh

       sudo  chmod  0754  Pb_poweroff.sh

The next step is to place a rule file in  /etc/sudoers.d/  so that the command trigger will not prompt for the sudo password when the key-binding is pressed.  Creat the following rule file in /etc/sudoers.d/  :

Pb_power_rule

Code:
# Pb power rule
Cmnd_Alias PBPOWEROFF=/usr/local/sbin/Pb_poweroff.sh
ALL ALL=NOPASSWD: PBPOWEROFF

Place the above rule file in the  /etc/sudoers.d/  directory and activate with the following commands :

       sudo  chown  root:root  Pb_power_rule

       sudo  chmod  0440  Pb_power_rule

The last step is to place the following bindsym entry in the i3 configuration  ~/.config/i3/config  , in your home directory:

       bindsym  $mod+Shift+XF86_PowerOff  exec  sudo  /usr/local/sbin/Pb_poweroff.sh

Place the above bindsym entry somewhere near the end of your i3 config after the "resize"  and before the "bar".  The configuration file is  ~/.config/i3/config

Activate the key-binding by either pressing $mod+Shift+c to re-read the config,  or $mod+Shift+r to restart i3wm.

Theory

Pressing the Pinebook power button returns scancode 124;  key-sym XF86_PowerOff.  This by default does nothing in i3wm;  unlike other OS window manager | desktops  ,  which typically pulls up the shutdown dialogue.

With our keybinding in effect the Pb_poweroff.sh script will be called with sudo,  and because the Pb_power_rule file exists in /etc/sudoers.d/  the command trigger will not prompt for the password,  but the poweroff command will simply take effect:   while holding down the mod key,  and the Shift key together,  press the power button and the i3 window manager will exit and the system will cleanly shutdown and power off.

Shy


RE: How to set the Power Off key binding in i3wm for the Pinebook - MarkHaysHarris777 - 09-17-2017


Greetings,

I'm going to expand a bit on the previous post by allowing for a parameter to be passed to the Pb_poweroff.sh script so that more than one key-binding may trigger the script for a different desired affect -- reboot for instance.  So let's first make some minor changes to the script in /usr/local/sbin/

Pb_poweroff.sh

Code:
#!/bin/sh

if [ "$1" = "OFF" ]
then
   systemctl poweroff
else
   systemctl reboot
fi


The default of the above script is to reboot the Pinebook, regardless of parameter.  On the other hand, if the parameter passed is "OFF" then the command script will shutdown and power off the Pinebook as expected.

To make the changes effective lets change our power off bindsym in  ~/.config/i3/config  to the following:

       bindsym $mod+Shift+XF86_PowerOff exec sudo /usr/local/sbin/Pb_poweroff.sh OFF

To make the reboot change effective add the following bindsym to  ~/.config/i3/config  :

       bindsym $mod+Control+XF86_PowerOff exec sudo /usr/local/sbin/Pb_poweroff.sh REBOOT

Notice I've changed the modifier key from Shift to Control,  and I've changed the parameter to REBOOT.  The effect is that the power button used with $mod+Shift will power off, while the power button used with $mod+Control will in fact reboot the system.

Note:  to make the changes active press $mod+Shift+c to re-read the config file, or press $mod+Shift+r to restart the i3 window manager.

Shy


RE: How to set the Power Off key binding in i3wm for the Pinebook - MarkHaysHarris777 - 09-18-2017

Greetings,

In this segment I'm pointing out that the sudo poweroff and sudo reboot commands are legacy commands ( see the man pages ).  Since systemd the systemctl command should be used with either the poweroff or reboot parms.  I have changed the Pb_poweroff.sh script to accommodate this change:

Pb_poweroff.sh

Code:
#!/bin/sh

if [ "$1" = "OFF" ]
then
   systemctl poweroff
else
   systemctl reboot
fi


Shy


RE: How to set the Power Off key binding in i3wm for the Pinebook - shirman - 09-20-2017

Thank you Wink

Now I'll try to find solution for lid-hibernating, only one thing why I still can't use i3 properly


RE: How to set the Power Off key binding in i3wm for the Pinebook - binholz - 12-25-2018

Thanks Mark,
I got this configured yesterday. Have you figured out how to hibernate the system in i3? I tried systemctl hibernate and it throws an error: Sleep verb not supported. hybrid-sleep gave me the same error via logind.

With Trinity I just need to push the power button to hibernate. I'm using q4os with i3 right now. Any help and advice on hibernation with i3 on the pinebook would greatly be appreciated