Gnome-Shell
電池電量不足自定義規則(休眠)
即使在電池電量達到 0% 之後,我也喜歡通過使用筆記型電腦相當長的一段時間(最長 25 分鐘)來濫用筆記型電腦的電池。
但是,有時我會忘記這一點,或者我只是離開了。這會導致硬關機,這可能會破壞文件系統。
告訴電腦在電池報告電量耗儘後 15 分鐘自動休眠的最佳方法是什麼?我的想法是編寫一個 Ruby 或 Bash 腳本,它會定期輪詢適當的
/proc/
子系統,但我想知道是否有內置的東西。
對於任何想要類似功能的人,這裡有一個 Ruby 腳本。
它支持連續多次掛起(耗盡、掛起、充電、耗盡、掛起……),並且盡可能的健壯。
現在它還支持
libnotify
,因此您每分鐘都會收到一條通知。#!/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 } }
因為您自己使用了“濫用”這個詞,所以我不會給您講課:)。
這樣做的一種方法是這樣的:
#!/usr/bin/env bash while [ $(acpi | awk '{print $NF}' | sed 's/%//') -gt 0 ]; do ## Wait for a minute sleep 60s done ## The loop above will exit when the battery level hits 0. ## When that happens, issue the shitdown command to be run in 15 minutes shutdown -h +15
您可以將其添加
/etc/crontab
為由 root 執行。