Initial script
This commit is contained in:
commit
740f56c3ca
106
on-ac-power-state-change
Executable file
106
on-ac-power-state-change
Executable file
@ -0,0 +1,106 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# on-ac-power-state-change
|
||||||
|
# Copyright 2019 Mike Peralta
|
||||||
|
# Released under the MIT license (https://opensource.org/licenses/MIT)
|
||||||
|
# Check out my music https://www.MikePeralta.com
|
||||||
|
# This script will execute a command each time the power state is changed (ie: laptop power unplugged or plugged back in)
|
||||||
|
# Pass your desired command to execute as arguments to this script
|
||||||
|
# Example:
|
||||||
|
# $ on-ac-power-state-change echo "My power state has changed!"
|
||||||
|
# Written and tested with acpi version 1.7
|
||||||
|
# Enjoy!
|
||||||
|
# (Note: Use with caution; It will execute any parameters received verbatim)
|
||||||
|
|
||||||
|
#
|
||||||
|
COMMANDS_FOR_STATE_CHANGE="$@"
|
||||||
|
CHECKED_AT_LEAST_ONCE="0"
|
||||||
|
LAST_KNOWN_PLUGGED_IN_STATE=""
|
||||||
|
CURRENT_PLUGGED_IN_STATE=""
|
||||||
|
|
||||||
|
#
|
||||||
|
do_log()
|
||||||
|
{
|
||||||
|
logger "[on-ac-power-state-change] $1"
|
||||||
|
echo "[on-ac-power-state-change] $1"
|
||||||
|
}
|
||||||
|
do_complaint()
|
||||||
|
{
|
||||||
|
logger -s "[on-ac-power-state-change] $1"
|
||||||
|
}
|
||||||
|
do_die()
|
||||||
|
{
|
||||||
|
do_complaint "Fatal: $1"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
demand_acpi()
|
||||||
|
{
|
||||||
|
which acpi > /dev/null
|
||||||
|
if [ $? -ne 0 ];then
|
||||||
|
do_die "acpi doesn't seem to be installed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
is_ac_connected()
|
||||||
|
{
|
||||||
|
# Grab output of acpi
|
||||||
|
demand_acpi
|
||||||
|
ACPI=$(acpi -a)
|
||||||
|
|
||||||
|
#
|
||||||
|
echo "$ACPI" | grep "on-line" > /dev/null
|
||||||
|
if [ $? -eq 0 ];then
|
||||||
|
#echo "Power seems to be plugged in"
|
||||||
|
echo "1"
|
||||||
|
fi
|
||||||
|
echo "$ACPI" | grep "off-line" > /dev/null
|
||||||
|
if [ $? -eq 0 ];then
|
||||||
|
#echo "Power seems to be unplugged"
|
||||||
|
echo "0"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
handle_acpi_state_change()
|
||||||
|
{
|
||||||
|
#
|
||||||
|
CURRENT_PLUGGED_IN_STATE=$(is_ac_connected)
|
||||||
|
|
||||||
|
#
|
||||||
|
if [ "$CHECKED_AT_LEAST_ONCE" = "1" ];then
|
||||||
|
if [ "$CURRENT_PLUGGED_IN_STATE" != "$LAST_KNOWN_PLUGGED_IN_STATE" ];then
|
||||||
|
do_log "Power state has changed!"
|
||||||
|
do_log "Executing commands: $COMMANDS_FOR_STATE_CHANGE"
|
||||||
|
eval "$COMMANDS_FOR_STATE_CHANGE"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
CHECKED_AT_LEAST_ONCE="1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
LAST_KNOWN_PLUGGED_IN_STATE="$CURRENT_PLUGGED_IN_STATE"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
main_loop()
|
||||||
|
{
|
||||||
|
#
|
||||||
|
do_log "Begin main loop"
|
||||||
|
while [ true ];do
|
||||||
|
handle_acpi_state_change
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
do_log "Done with main loop"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
do_log "Begin"
|
||||||
|
main_loop
|
||||||
|
|
||||||
|
|
||||||
|
do_log "Exiting"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user