Re: laptop

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If I get a .24 kernel will I get apm support or must I build it in?

I don't know what needs to be done to get APM support. However, I've attached a fairly simple Python script that will extract the info you want from the /proc/acpi/battery/BAT*/{state,info} files.

Just "chmod ugo+x batt.py" after putting it somewhere in your path, and it will return a percentage along with what should be the state (charging or discharging). It should also handle multiple batteries if you have them. Hope this helps,

-tim




#!/usr/bin/env python
import os, re
from itertools import chain

acpi_battery_path = "/proc/acpi/battery/"
STATE_FILE = 'state'
INFO_FILE = 'info'

extract_mha_re = re.compile(r'^[^:]*:\s*(\d+).*')
def extract_mha(prefix, line):
    if line.startswith(prefix):
        m = extract_mha_re.match(line)
        if m:
            return int(m.group(1))
    return None

for battery in os.listdir(acpi_battery_path):
    if not battery.startswith("BAT"): continue
    battery_path = os.path.join(acpi_battery_path, battery)
    if not os.path.isdir(battery_path): continue
    current = max_cap = 0
    state = "Unknown"
    for line in chain(*map(
            lambda s: file(os.path.join(battery_path, s)),
            (STATE_FILE, INFO_FILE))):
        line = line.strip().lower()
        mha = extract_mha('remaining capacity:', line)
        if mha: current = mha
        mha = extract_mha('design capacity:', line)
        if mha: max_cap = mha
        if line.startswith("charging state:"):
            state = line.split(':', 1)[1].strip()
    print '%s: %i%% (%s)' % (
        battery, (current * 100) / max_cap, state)
#!/usr/bin/env python
import os
import re
from itertools import chain

acpi_battery_path = "/proc/acpi/battery/"
STATE_FILE = 'state'
INFO_FILE = 'info'

extract_mha_re = re.compile(r'^[^:]*:\s*(\d+).*')
def extract_mha(prefix, line):
	if line.startswith(prefix):
		m = extract_mha_re.match(line)
		if m:
			return int(m.group(1))
	return None

for battery in os.listdir(acpi_battery_path):
	if not battery.startswith("BAT"): continue
	battery_path = os.path.join(acpi_battery_path, battery)
	if not os.path.isdir(battery_path): continue
	current = max_cap = 0
	state = "Unknown"
	for line in chain(*map(
			lambda s: file(os.path.join(battery_path, s)),
			(STATE_FILE, INFO_FILE))):
		line = line.strip().lower()
		mha = extract_mha('remaining capacity:', line)
		if mha: current = mha
		mha = extract_mha('design capacity:', line)
		if mha: max_cap = mha
		if line.startswith("charging state:"):
			state = line.split(':', 1)[1].strip()
	print '%s: %i%% (%s)' % (
		battery, (current * 100) / max_cap, state)
_______________________________________________
Blinux-list mailing list
Blinux-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/blinux-list

[Index of Archives]     [Linux Speakup]     [Fedora]     [Linux Kernel]     [Yosemite News]     [Big List of Linux Books]