Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- '''
- Script for checking laptop battery state and displaying warnings
- Needs python3, acpi and gxmessage to be installed
- '''
- import subprocess, re
- from time import sleep
- # seconds of sleep time between battery checks
- sleep_time = 60
- # actions
- # play_sound='aplay /home/marek/temps/alarm.wav'
- # empty_action='/sbin/shutdown -h now'
- # states of battery life
- s_ok = 0 # > 30 min
- s_30 = 1 # <= 30 min
- s_15 = 2 # <= 15 min
- s_10 = 3 # <= 10 min
- s_05 = 4 # <= 5 min
- # main state
- state = s_ok
- def getstate():
- '''getstate() -> state, minutes_left
- return the battery state and battery minutes left'''
- battery_info = subprocess.getoutput('acpi -b')
- battery_state = re.search(r'^Battery \d: (.+), \d+%', battery_info).groups()[0]
- if battery_state.lower() == 'discharging':
- time_left = int(re.search(r'(\d+:\d+)', battery_info).groups()[0].replace(':', ''))
- if time_left <= 5:
- return s_05, time_left
- elif time_left <= 10:
- return s_10, time_left
- elif time_left <= 15:
- return s_15, time_left
- elif time_left <= 30:
- return s_30, time_left
- return s_ok, None
- def printwarning(minutes):
- '''prints battery state warning'''
- subprocess.getoutput('gxmessage -center -title "{M} min battery left" -buttons ok:0 -default ok "{M} minutes of computer battery left..."'.format(M=minutes))
- if __name__ == '__main__':
- while True:
- prevstate = state
- state, time = getstate()
- if prevstate < state or state == s_05:
- printwarning(time)
- sleep(sleep_time)
Advertisement
Add Comment
Please, Sign In to add comment