Para quem quiser uma funcionalidade semelhante, aqui está um script Ruby.
Suporta múltiplas suspensões consecutivas (depleção, suspensão, carga, depleção, suspensão, ...) e é o mais robusto possível.
Agora ele também suporta libnotify
, então você recebe uma notificação a cada minuto.
#!/usr/bin/ruby
require 'eventmachine'
require 'libnotify'
period = 40 # poll evey N seconds
limit = (ARGV[0] || 20).to_i # allow usage N minutes after depletion
def get(prop)
File.read("/sys/class/power_supply/BAT0/#{prop}").chomp
end
def capacity
get(:charge_now).to_i
end
def onBattery?
get(:status) != 'Charging'
end
def action!
'sync'
'systemctl suspend'
end
puts 'Starting battery abuse agent.'
EM.run {
ticks = 0
EM.add_periodic_timer(period) {
if capacity == 0 && onBattery?
ticks += 1
if ticks % 5 == 0
Libnotify.show summary: 'Baterry being abused',
body: "for #{period*ticks} seconds.", timeout: 7.5
end
else
ticks = [ticks-1, 0].max
end
if ticks*period > limit*60
action!
end
}
}