Final auto-cpufreq & power_helper improvements

This commit is contained in:
Adnan Hodzic 2021-12-04 18:32:50 +01:00
parent 0aef161528
commit fc5ac16fd6
3 changed files with 100 additions and 54 deletions

View File

@ -298,21 +298,8 @@ def deploy_daemon():
# deploy cpufreqctl script func call # deploy cpufreqctl script func call
cpufreqctl() cpufreqctl()
if which("bluetoothctl") is not None: # turn off bluetooth on boot
print("* Turn off bluetooth on boot") bluetooth_disable()
btconf = Path("/etc/bluetooth/main.conf")
try:
orig_set = "AutoEnable=true"
change_set = "AutoEnable=false"
with btconf.open(mode="r+") as f:
content = f.read()
f.seek(0)
f.truncate()
f.write(content.replace(orig_set, change_set))
except Exception as e:
print(f"\nERROR:\nWas unable to turn off bluetooth on boot\n{repr(e)}")
else:
print("* Turn off bluetooth on boot [skipping] (package providing bluetooth access is not present)")
auto_cpufreq_stats_path.touch(exist_ok=True) auto_cpufreq_stats_path.touch(exist_ok=True)
@ -329,16 +316,6 @@ def deploy_daemon():
call("/usr/bin/auto-cpufreq-install", shell=True) call("/usr/bin/auto-cpufreq-install", shell=True)
# ToDo: change to be a warning and move to power_helper?
def bt_snap():
if os.getenv("PKG_MARKER") == "SNAP":
try:
print("\n* Turn off bluetooth on boot")
call("rfkill block bluetooth", shell=True)
except:
print("n\nERROR:\nWas unable to turn off bluetooth on boot")
# remove auto-cpufreq daemon # remove auto-cpufreq daemon
def remove(): def remove():
@ -349,21 +326,8 @@ def remove():
print("\n" + "-" * 21 + " Removing auto-cpufreq daemon " + "-" * 22 + "\n") print("\n" + "-" * 21 + " Removing auto-cpufreq daemon " + "-" * 22 + "\n")
if which("bluetoothctl") is not None: # turn on bluetooth on boot
print("* Turn on bluetooth on boot") bluetooth_enable()
btconf = "/etc/bluetooth/main.conf"
try:
orig_set = "AutoEnable=true"
change_set = "AutoEnable=false"
with open(btconf, "r+") as f:
content = f.read()
f.seek(0)
f.truncate()
f.write(content.replace(change_set, orig_set))
except Exception as e:
print(f"\nERROR:\nWas unable to turn on bluetooth on boot\n{repr(e)}")
else:
print("* Turn on bluetooth on boot [skipping] (package providing bluetooth access is not present)")
# output warning if gnome power profile is stopped # output warning if gnome power profile is stopped
gnome_power_rm_reminder() gnome_power_rm_reminder()
@ -1086,6 +1050,7 @@ def daemon_running_msg():
print( print(
'ERROR: auto-cpufreq is running in daemon mode.\n\nMake sure to stop the deamon before running with --live or --monitor mode' 'ERROR: auto-cpufreq is running in daemon mode.\n\nMake sure to stop the deamon before running with --live or --monitor mode'
) )
footer()
# check if auto-cpufreq --daemon is running # check if auto-cpufreq --daemon is running
def running_daemon(): def running_daemon():

View File

@ -13,6 +13,12 @@ if sys.argv[0] == "power_helper.py":
else: else:
app_name="auto-cpufreq" app_name="auto-cpufreq"
def header():
print("\n------------------------- auto-cpufreq: Power helper -------------------------\n")
def helper_opts():
print("\nFor full list of options run: python3 power_helper.py --help")
# detect if gnome power profile service is running # detect if gnome power profile service is running
if os.getenv('PKG_MARKER') != "SNAP": if os.getenv('PKG_MARKER') != "SNAP":
gnome_power_stats = call(["systemctl", "is-active", "--quiet", "power-profiles-daemon"]) gnome_power_stats = call(["systemctl", "is-active", "--quiet", "power-profiles-daemon"])
@ -49,26 +55,86 @@ def gnome_power_disable_live():
# disable gnome >= 40 power profiles (install) # disable gnome >= 40 power profiles (install)
def gnome_power_svc_disable(): def gnome_power_svc_disable():
if(gnome_power_stats == 0): if(gnome_power_stats == 0):
print("\n* Disabling GNOME power profiles") print("* Disabling GNOME power profiles")
call(["systemctl", "stop", "power-profiles-daemon"]) call(["systemctl", "stop", "power-profiles-daemon"])
call(["systemctl", "disable", "power-profiles-daemon"]) call(["systemctl", "disable", "power-profiles-daemon"])
call(["systemctl", "mask", "power-profiles-daemon"]) call(["systemctl", "mask", "power-profiles-daemon"])
call(["systemctl", "daemon-reload"]) call(["systemctl", "daemon-reload"])
else:
print("* GNOME power profiles already disabled")
# enable gnome >= 40 power profiles (uninstall) # enable gnome >= 40 power profiles (uninstall)
def gnome_power_svc_enable(): def gnome_power_svc_enable():
if(gnome_power_stats != 0): if(gnome_power_stats != 0):
print("\n* Enabling GNOME power profiles") print("* Enabling GNOME power profiles")
call(["systemctl", "unmask", "power-profiles-daemon"]) call(["systemctl", "unmask", "power-profiles-daemon"])
call(["systemctl", "start", "power-profiles-daemon"]) call(["systemctl", "start", "power-profiles-daemon"])
call(["systemctl", "enable", "power-profiles-daemon"]) call(["systemctl", "enable", "power-profiles-daemon"])
call(["systemctl", "daemon-reload"]) call(["systemctl", "daemon-reload"])
else:
print("* GNOME power profiles already enabled")
# gnome power profiles current status # gnome power profiles current status
def gnome_power_svc_status(): def gnome_power_svc_status():
print("\n* GNOME power profiles status") print("* GNOME power profiles status")
call(["systemctl", "status", "power-profiles-daemon"]) call(["systemctl", "status", "power-profiles-daemon"])
# disable bluetooth on boot
def bluetooth_disable():
if os.getenv("PKG_MARKER") == "SNAP":
bluetooth_notif_snap()
elif which("bluetoothctl") is not None:
print("* Turn off bluetooth on boot")
btconf = Path("/etc/bluetooth/main.conf")
try:
orig_set = "AutoEnable=true"
change_set = "AutoEnable=false"
with btconf.open(mode="r+") as f:
content = f.read()
f.seek(0)
f.truncate()
f.write(content.replace(orig_set, change_set))
except Exception as e:
print(f"\nERROR:\nWas unable to turn off bluetooth on boot\n{repr(e)}")
else:
print("* Turn off bluetooth on boot [skipping] (package providing bluetooth access is not present)")
# enable bluetooth on boot
def bluetooth_enable():
if os.getenv("PKG_MARKER") == "SNAP":
bluetooth_on_notif_snap()
if which("bluetoothctl") is not None:
print("* Turn on bluetooth on boot")
btconf = "/etc/bluetooth/main.conf"
try:
orig_set = "AutoEnable=true"
change_set = "AutoEnable=false"
with open(btconf, "r+") as f:
content = f.read()
f.seek(0)
f.truncate()
f.write(content.replace(change_set, orig_set))
except Exception as e:
print(f"\nERROR:\nWas unable to turn on bluetooth on boot\n{repr(e)}")
else:
print("* Turn on bluetooth on boot [skipping] (package providing bluetooth access is not present)")
# turn off bluetooth on snap message
def bluetooth_notif_snap():
print("\n* Unable to turn off bluetooth on boot due to Snap package restrictions!")
print("\nSteps to perform this action using auto-cpufreq: power_helper script:")
print("python3 power_helper.py --bluetooth_boot_off")
# turn off bluetooth on snap message
def bluetooth_on_notif_snap():
print("\n* Unable to turn on bluetooth on boot due to Snap package restrictions!")
print("\nSteps to perform this action using auto-cpufreq: power_helper script:")
print("python3 power_helper.py --bluetooth_boot_on")
# gnome power removal reminder # gnome power removal reminder
def gnome_power_rm_reminder(): def gnome_power_rm_reminder():
if gnome_power_stats != 0: if gnome_power_stats != 0:
@ -80,15 +146,17 @@ def gnome_power_rm_reminder():
print("cd auto-cpufreq/auto_cpufreq") print("cd auto-cpufreq/auto_cpufreq")
print("python3 power_helper.py --gnome-power-enable") print("python3 power_helper.py --gnome-power-enable")
def gnome_power_rm_reminder_snap(): def gnome_power_rm_reminder_snap():
print("\n----------------------------------- Warning -----------------------------------\n") print("\n----------------------------------- Warning -----------------------------------\n")
print("\nUnable to detect state of GNOME Power Profiles daemon service!") print("Unable to detect state of GNOME Power Profiles daemon service!")
print("Now it's recommended to enable this service.") print("Now it's recommended to enable this service.")
print("\nSteps to perform this action using auto-cpufreq: power_helper script:") print("\nSteps to perform this action using auto-cpufreq: power_helper script:")
print("git clone https://github.com/AdnanHodzic/auto-cpufreq.git") print("git clone https://github.com/AdnanHodzic/auto-cpufreq.git")
print("cd auto-cpufreq/auto_cpufreq") print("cd auto-cpufreq/auto_cpufreq")
print("python3 power_helper.py --gnome-power-enable") print("python3 power_helper.py --gnome-power-enable")
def valid_options(): def valid_options():
print("--gnome-power-enable\t\tEnable GNOME Power Profiles daemon") print("--gnome-power-enable\t\tEnable GNOME Power Profiles daemon")
print("--gnome-power-disable\t\tDisable GNOME Power Profiles daemon\n") print("--gnome-power-disable\t\tDisable GNOME Power Profiles daemon\n")
@ -99,31 +167,45 @@ def valid_options():
@click.option("--gnome_power_enable", is_flag=True, help="Enable GNOME Power profiles service") @click.option("--gnome_power_enable", is_flag=True, help="Enable GNOME Power profiles service")
@click.option("--gnome_power_disable", is_flag=True, help="Disable GNOME Power profiles service") @click.option("--gnome_power_disable", is_flag=True, help="Disable GNOME Power profiles service")
@click.option("--gnome_power_status", is_flag=True, help="Get status of GNOME Power profiles service") @click.option("--gnome_power_status", is_flag=True, help="Get status of GNOME Power profiles service")
def main(gnome_power_enable, gnome_power_disable, gnome_power_status): @click.option("--bluetooth_boot_on", is_flag=True, help="Turn on Bluetooth on boot")
@click.option("--bluetooth_boot_off", is_flag=True, help="Turn off Bluetooth on boot")
def main(gnome_power_enable, gnome_power_disable, gnome_power_status, bluetooth_boot_off, bluetooth_boot_on):
root_check() root_check()
if len(sys.argv) == 1: if len(sys.argv) == 1:
print("\n------------------------- auto-cpufreq: Power helper -------------------------\n") header()
print("Unrecognized option!\n\nRun: \"" + app_name + " --help\" for list of available options.") print("Unrecognized option!\n\nRun: \"" + app_name + " --help\" for list of available options.")
footer() footer()
else: else:
if gnome_power_enable: if gnome_power_enable:
footer() header()
root_check() root_check()
print("Enabling GNOME Power Profiles")
gnome_power_svc_enable() gnome_power_svc_enable()
helper_opts()
footer() footer()
elif gnome_power_disable: elif gnome_power_disable:
footer() header()
root_check() root_check()
print("Disabling GNOME Power Profiles")
gnome_power_svc_disable() gnome_power_svc_disable()
helper_opts()
footer() footer()
elif gnome_power_status: elif gnome_power_status:
footer() header()
root_check() root_check()
print("Status of GNOME Power Profiles")
gnome_power_svc_status() gnome_power_svc_status()
helper_opts()
footer()
elif bluetooth_boot_off:
header()
root_check()
bluetooth_disable()
helper_opts()
footer()
elif bluetooth_boot_on:
header()
root_check()
bluetooth_enable()
helper_opts()
footer() footer()
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -154,8 +154,7 @@ def main(config, daemon, debug, install, live, log, monitor, stats, version, don
root_check() root_check()
running_daemon() running_daemon()
gnome_power_detect_snap() gnome_power_detect_snap()
# ToDo: move elsewhere after func revamp bluetooth_notif_snap()
#bt_snap()
gov_check() gov_check()
run("snapctl set daemon=enabled", shell=True) run("snapctl set daemon=enabled", shell=True)
run("snapctl start --enable auto-cpufreq", shell=True) run("snapctl start --enable auto-cpufreq", shell=True)