How to set the Power Off key binding in i3wm for the Pinebook
#1
Information 
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
marcushh777    Cool

please join us for a chat @  irc.pine64.xyz:6667   or ssl  irc.pine64.xyz:6697

( I regret that I am not able to respond to personal messages;  let's meet on irc! )
  Reply
#2

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
marcushh777    Cool

please join us for a chat @  irc.pine64.xyz:6667   or ssl  irc.pine64.xyz:6697

( I regret that I am not able to respond to personal messages;  let's meet on irc! )
  Reply
#3
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
marcushh777    Cool

please join us for a chat @  irc.pine64.xyz:6667   or ssl  irc.pine64.xyz:6697

( I regret that I am not able to respond to personal messages;  let's meet on irc! )
  Reply
#4
Thank you Wink

Now I'll try to find solution for lid-hibernating, only one thing why I still can't use i3 properly
  Reply
#5
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
  Reply


Possibly Related Threads...
Thread Author Replies Views Last Post
Information Manjaro ARM for Pinebook erchache2000 65 4,387 09-05-2019, 03:07 AM
Last Post: fitter
  Pinebook 1080p / KDE Neon freezes every 5-10 min pyrrhumain 9 276 09-01-2019, 03:11 PM
Last Post: xircledev
  Archlinux (mainline) for Pinebook anarsoul 51 13,713 08-28-2019, 05:23 PM
Last Post: conlaoch
  will openMP work on a pinebook? rustythorn 2 86 07-23-2019, 01:42 PM
Last Post: tophneal
  Armbian - Xenial Desktop (Pinebook) pineadmin 83 17,339 07-17-2019, 01:22 PM
Last Post: catsmile
  pinebook 1080p crash and fix nano2 2 173 06-24-2019, 07:41 PM
Last Post: pyrrhumain
  NIxOS installation guide for Pinebook Surehand53 0 148 06-23-2019, 03:46 AM
Last Post: Surehand53
  Improve the life of your Pinebook battery by setting charger's voltage limits wlad 0 157 06-11-2019, 02:27 PM
Last Post: wlad
  How can I reliably get battery status on pinebook tillea 5 1,280 06-11-2019, 10:10 AM
Last Post: wlad
  pinebook black screen when booting with "different power mode than last used" penzoiders 9 481 06-06-2019, 02:02 PM
Last Post: Surehand53

Forum Jump:


Users browsing this thread: 1 Guest(s)