diff --git a/battery-suspend.sh b/battery-suspend.sh index 6c14a71..5289a0e 100755 --- a/battery-suspend.sh +++ b/battery-suspend.sh @@ -1,33 +1,30 @@ #/bin/bash # battery-suspend.sh -# This program suspends the computer when the battery gets too low -# Copyright (c) 2024, Scott C. MacCallum (scm@sdf.org). -# All rights reserved. +# This program suspends the computer when the battery gets too low. +# Copyright (c) 2024, Scott C. MacCallum (scott@scm-guru.live). -# Redistribution and use of this software in source and binary forms, with or -# without modification, are permitted provided that the following conditions -# are met: +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# at your option) any later version. -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. -# * Neither the name of Scott C. MacCallum nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission of Scott C. -# MacCallum. +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. +# To do. Add code to verify that the user is root, or has run the script with +# sudo. Add code to verify that the bc program is installed. + +# Change this variable to the group that should be informed of a need to +# charge the battery. On GNU/Linux distributions users are often part of +# their own group e.g. scm. + +group="" # Change this variable to your batteries identification e.g. BAT0 @@ -36,13 +33,22 @@ charge=$(cat /sys/class/power_supply/$battery/charge_now) discharge=$(cat /sys/class/power_supply/$battery/current_now) hours=$(echo "scale=2; $charge / $discharge" | bc) minutes=$(echo "scale=2; $hours * 60" | bc) -minimum="0.16" -# When 10 minutes of battery charge is left, let all users know that -# the comptuer will be suspended and then suspend it +# Change the minimum variable to the minimum amount of minutes that a battery +# has left before the group is informed to recharge it e.g. 40.00. When I +# tested this and the battery-monitor.sh script, I was surprised to discover +# that the computer turned off despite having reported that there was 10 +# minutes left! I created the battery-status.sh script to aid in my +# understanding of what was going on, and I discovered a variance of about 10 +# minutes plus/minus each time that I ran it. Keep the minus 10 minutes in +# mind when setting the minimum value. + +# YOU'VE BEEN WARNED! + +minimum= if (( $(echo "$minutes < $minimum" | bc -l) )); then - echo "Suspending the computer! Power is needed!" | wall + echo "Suspending the computer! Battery charge is needed!" | wall sleep 3 systemctl suspend fi