Merge master into dev

This commit is contained in:
shadeyg56 2023-08-12 17:58:47 -05:00
parent 47c4b06506
commit 2b30b6078d
8 changed files with 249 additions and 68 deletions

127
README.md
View File

@ -12,34 +12,37 @@ auto-cpufreq is looking for [co-maintainers & open source developers to help sha
## Index
* [Why do I need auto-cpufreq?](https://github.com/AdnanHodzic/auto-cpufreq/#why-do-i-need-auto-cpufreq)
* [Supported architectures and devices](https://github.com/AdnanHodzic/auto-cpufreq/#supported-architectures-and-devices)
* [Features](https://github.com/AdnanHodzic/auto-cpufreq/#features)
* [Installing auto-cpufreq](https://github.com/AdnanHodzic/auto-cpufreq/#installing-auto-cpufreq)
* [Snap store](https://github.com/AdnanHodzic/auto-cpufreq/#snap-store)
* [auto-cpufreq-installer](https://github.com/AdnanHodzic/auto-cpufreq/#auto-cpufreq-installer)
* [AUR package (Arch/Manjaro Linux)](https://github.com/AdnanHodzic/auto-cpufreq/#aur-package-archmanjaro-linux)
* [Post Installation](https://github.com/AdnanHodzic/auto-cpufreq/blob/install_performance_rm/README.md#post-installation)
* [Configuring auto-cpufreq](https://github.com/AdnanHodzic/auto-cpufreq/#configuring-auto-cpufreq)
* [1: power_helper.py script](https://github.com/AdnanHodzic/auto-cpufreq/#1-power_helperpy-script)
* [2: auto-cpufreq config file](https://github.com/AdnanHodzic/auto-cpufreq/#2-auto-cpufreq-config-file)
* [Example config file contents](https://github.com/AdnanHodzic/auto-cpufreq/#example-config-file-contents)
* [How to run auto-cpufreq](https://github.com/AdnanHodzic/auto-cpufreq/#how-to-run-auto-cpufreq)
* [auto-cpufreq modes and options](https://github.com/AdnanHodzic/auto-cpufreq/#auto-cpufreq-modes-and-options)
* [monitor](https://github.com/AdnanHodzic/auto-cpufreq/#monitor)
* [live](https://github.com/AdnanHodzic/auto-cpufreq/#live)
* [overriding governor](https://github.com/AdnanHodzic/auto-cpufreq/#overriding-governor)
* [Install - auto-cpufreq daemon](https://github.com/AdnanHodzic/auto-cpufreq/#install---auto-cpufreq-daemon)
* [Remove - auto-cpufreq daemon](https://github.com/AdnanHodzic/auto-cpufreq/#remove---auto-cpufreq-daemon)
* [stats](https://github.com/AdnanHodzic/auto-cpufreq/#stats)
* [Troubleshooting](https://github.com/AdnanHodzic/auto-cpufreq/#troubleshooting)
* [AUR](https://github.com/AdnanHodzic/auto-cpufreq/#aur)
* [Discussion](https://github.com/AdnanHodzic/auto-cpufreq/#discussion)
* [Donate](https://github.com/AdnanHodzic/auto-cpufreq/#donate)
* [Financial donation](https://github.com/AdnanHodzic/auto-cpufreq/#financial-donation)
* [Paypal](https://github.com/AdnanHodzic/auto-cpufreq/#paypal)
* [BitCoin](https://github.com/AdnanHodzic/auto-cpufreq/#bitcoin)
* [Code contribution](https://github.com/AdnanHodzic/auto-cpufreq/#code-contribution)
* [Why do I need auto-cpufreq?](#why-do-i-need-auto-cpufreq)
* [Supported architectures and devices](#supported-architectures-and-devices)
* [Features](#features)
* [Installing auto-cpufreq](#installing-auto-cpufreq)
* [Snap store](#snap-store)
* [auto-cpufreq-installer](#auto-cpufreq-installer)
* [AUR package (Arch/Manjaro Linux)](#aur-package-archmanjaro-linux)
* [Update using installer](#update-using-auto-cpufreq-installer)
* [Post Installation](#post-installation)
* [Configuring auto-cpufreq](#configuring-auto-cpufreq)
* [1: power_helper.py script (Snap package install only)](#1-power_helperpy-script-snap-package-install-only)
* [2: `--force` governor override](#2---force-governor-override)
* [3: auto-cpufreq config file](#3-auto-cpufreq-config-file)
* [Example config file contents](#example-config-file-contents)
* [How to run auto-cpufreq](#how-to-run-auto-cpufreq)
* [auto-cpufreq modes and options](#auto-cpufreq-modes-and-options)
* [monitor](#monitor)
* [live](#live)
* [overriding governor](#overriding-governor)
* [Install - auto-cpufreq daemon](#install---auto-cpufreq-daemon)
* [Update - auto-cpufreq update](#update---auto-cpufreq-update)
* [Remove - auto-cpufreq daemon](#remove---auto-cpufreq-daemon)
* [stats](#stats)
* [Troubleshooting](#troubleshooting)
* [AUR](#aur)
* [Discussion](#discussion)
* [Donate](#donate)
* [Financial donation](#financial-donation)
* [Paypal](#paypal)
* [BitCoin](#bitcoin)
* [Code contribution](#code-contribution)
## Why do I need auto-cpufreq?
@ -85,10 +88,10 @@ auto-cpufreq is available on the [snap store](https://snapcraft.io/auto-cpufreq)
sudo snap install auto-cpufreq
```
**Please note:**
**Please note:**
* Make sure [snapd](https://snapcraft.io/docs/installing-snapd) is installed and `snap version` version is >= 2.44 for `auto-cpufreq` to fully work due to [recent snapd changes](https://github.com/snapcore/snapd/pull/8127).
* Fedora users will [encounter following error](https://twitter.com/killyourfm/status/1291697985236144130) due to `cgroups v2` [being in development](https://github.com/snapcore/snapd/pull/7825). This problem can be resolved by either running `sudo snap run auto-cpufreq` after the snap installation or by using the [auto-cpufreq-installer](https://github.com/AdnanHodzic/auto-cpufreq/#auto-cpufreq-installer) which doesn't have this issue.
* Fedora users will [encounter following error](https://twitter.com/killyourfm/status/1291697985236144130) due to `cgroups v2` [being in development](https://github.com/snapcore/snapd/pull/7825). This problem can be resolved by either running `sudo snap run auto-cpufreq` after the snap installation or by using the [auto-cpufreq-installer](#auto-cpufreq-installer) which doesn't have this issue.
### auto-cpufreq-installer
@ -98,12 +101,15 @@ Get source code, run installer and follow on screen instructions:
git clone https://github.com/AdnanHodzic/auto-cpufreq.git
cd auto-cpufreq && sudo ./auto-cpufreq-installer
```
### Update using auto-cpufreq-installer
The feature is available from version *1.9.8*. For further information: [--update](#update---auto-cpufreq-update)
In case you encounter any problems with `auto-cpufreq-installer`, please [submit a bug report](https://github.com/AdnanHodzic/auto-cpufreq/issues/new).
### AUR package (Arch/Manjaro Linux)
*AUR is currently unmaintained & has issues*! Until someone starts maintaining it, use the [auto-cpufreq-installer](https://github.com/AdnanHodzic/auto-cpufreq#auto-cpufreq-installer) if you intend to have the latest changes as otherwise you'll run into errors, i.e: [#471](https://github.com/AdnanHodzic/auto-cpufreq/issues/471). However, if you still wish to use AUR then follow the [Troubleshooting](https://github.com/AdnanHodzic/auto-cpufreq/#aur) section for solved known issues.
*AUR is currently unmaintained & has issues*! Until someone starts maintaining it, use the [auto-cpufreq-installer](#auto-cpufreq-installer) if you intend to have the latest changes as otherwise you'll run into errors, i.e: [#471](https://github.com/AdnanHodzic/auto-cpufreq/issues/471). However, if you still wish to use AUR then follow the [Troubleshooting](#aur) section for solved known issues.
* [Binary Package](https://aur.archlinux.org/packages/auto-cpufreq)
(For the latest binary release on github)
@ -119,11 +125,11 @@ auto-cpufreq makes all decisions automatically based on various factors like cpu
### 1: power_helper.py script (Snap package install **only**)
When installing auto-cpufreq using [auto-cpufreq-installer](https://github.com/AdnanHodzic/auto-cpufreq/#auto-cpufreq-installer) if it detects [GNOME Power profiles service](https://twitter.com/fooctrl/status/1467469508373884933) is running it will automatically disable it. Otherwise this daemon will cause conflicts and various other performance issues.
When installing auto-cpufreq using [auto-cpufreq-installer](#auto-cpufreq-installer) if it detects [GNOME Power profiles service](https://twitter.com/fooctrl/status/1467469508373884933) is running it will automatically disable it. Otherwise this daemon will cause conflicts and various other performance issues.
However, when auto-cpufreq is installed as Snap package it's running as part of a container with limited permissions to your host machine, hence it's *highly recommended* you disable GNOME Power Profiles Daemon using `power_helper.py` script.
**Please Note:**
**Please Note:**<br>
The [`power_helper.py`](https://github.com/AdnanHodzic/auto-cpufreq/blob/master/auto_cpufreq/power_helper.py) script is located at `auto_cpufreq/power_helper.py`. In order to have access to it, you need to first clone
the repository:
@ -135,21 +141,21 @@ Navigate to repo location where `power_helper.py` resides, i.e:
Make sure to have `psutil` Python library installed before next step, i.e: `sudo python3 -m pip install psutil`
Then disable GNOME Power Profiles Daemon by runing:
Then disable GNOME Power Profiles Daemon by running:
`sudo python3 power_helper.py --gnome_power_disable`
### 2: `--force` governor override
By default auto-cpufreq uses `balanced` mode which works the best on various systems and situations.
By default auto-cpufreq uses `balanced` mode which works the best on various systems and situations.
However, you can override this behaviour by switching to `performance` or `powersave` mode manually. Performance will result in higher frequencies by default, but also results in higher energy use (battery consumption) and should be used if max performance is necessary. Otherwise `powersave` will do the opposite and extend the battery life to its maximum.
See [`--force` flag](https://github.com/AdnanHodzic/auto-cpufreq/#overriding-governor) for more info.
See [`--force` flag](#overriding-governor) for more info.
### 3: auto-cpufreq config file
You can configure seperate profiles for the battery and power supply. These profiles will let you pick which governor to use, and how and when turbo boost is enabled. The possible values for turbo boost behavior are `always`, `auto` and `never`. The default behavior is `auto`, which only kicks in during high load.
You can configure separate profiles for the battery and power supply. These profiles will let you pick which governor to use, and how and when turbo boost is enabled. The possible values for turbo boost behavior are `always`, `auto` and `never`. The default behavior is `auto`, which only kicks in during high load.
By default, auto-cpufreq does not use the config file! If you wish to use it, the location where config needs to be placed for it to be read automatically is: `/etc/auto-cpufreq.conf`
@ -201,22 +207,25 @@ turbo = auto
## How to run auto-cpufreq
auto-cpufreq should be run with with one of the following options:
* [monitor](https://github.com/AdnanHodzic/auto-cpufreq/#monitor)
* [monitor](#monitor)
- Monitor and see suggestions for CPU optimizations
* [live](https://github.com/AdnanHodzic/auto-cpufreq/#live)
* [live](#live)
- Monitor and make (temp.) suggested CPU optimizations
* [install](https://github.com/AdnanHodzic/auto-cpufreq/#install---auto-cpufreq-daemon) / [remove](https://github.com/AdnanHodzic/auto-cpufreq/#remove---auto-cpufreq-daemon)
* [install](#install---auto-cpufreq-daemon) / [remove](#remove---auto-cpufreq-daemon)
- Install/remove daemon for (permanent) automatic CPU optimizations
* [install_performance](https://github.com/AdnanHodzic/auto-cpufreq/#1-power_helperpy-script)
* [update](#update---auto-cpufreq-update)
- Update auto-cpufreq to the latest release
* [install_performance](#1-power_helperpy-script)
- Install daemon in "performance" mode.
* [stats](https://github.com/AdnanHodzic/auto-cpufreq/#stats)
* [stats](#stats)
- View live stats of CPU optimizations made by daemon
* [force=TEXT](https://github.com/AdnanHodzic/auto-cpufreq/#overriding-governor)
* [force=TEXT](#overriding-governor)
- Force use of either the "powersave" or "performance" governor. Setting to "reset" goes back to normal mode
* config=TEXT
@ -228,13 +237,13 @@ auto-cpufreq should be run with with one of the following options:
* version
- Show currently installed version
* [donate](https://github.com/AdnanHodzic/auto-cpufreq/#financial-donation)
* [donate](#financial-donation)
- To support the project
* help
- Shows all of the above options
Running `auto-cpufreq --help` will print the same list of options as above. Read [auto-cpufreq modes and options](https://github.com/AdnanHodzic/auto-cpufreq/#auto-cpufreq-modes-and-options) for more details.
Running `auto-cpufreq --help` will print the same list of options as above. Read [auto-cpufreq modes and options](#auto-cpufreq-modes-and-options) for more details.
## auto-cpufreq modes and options
@ -277,6 +286,12 @@ If the install has been performed as part of snap package, daemon status can be
`systemctl status snap.auto-cpufreq.service.service`
### Update - auto-cpufreq update
Update functionality works by cloning auto-cpufreq repo to /home directory of currently logged in user, installing it using [auto-cpufreq-installer](#auto-cpufreq-installer) and performing [auto-cpufreq daemon install](#install---auto-cpufreq-daemon) with [latest version](https://github.com/AdnanHodzic/auto-cpufreq/releases) changes.
Update the package by running: `sudo auto-cpufreq --update`
### Remove - auto-cpufreq daemon
auto-cpufreq daemon and its systemd service, along with all its persistent changes can be removed by running:
@ -302,7 +317,12 @@ If daemon has been installed, live stats of CPU/system load monitoring and optim
**A:** If you're using `intel_pstate/amd-pstate` CPU management driver, consider changing it to `acpi-cpufreq`.
This can be done by editing the `GRUB_CMDLINE_LINUX_DEFAULT` params in `/etc/default/grub`.
This can be done by editing the `GRUB_CMDLINE_LINUX_DEFAULT` params in `/etc/default/grub`. For instance:
```
sudo nano /etc/default/grub
# make sure you have nano installed, or you can use your favorite text editor.
```
For Intel users:
@ -316,7 +336,20 @@ For AMD users:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash initcall_blacklist=amd_pstate_init amd_pstate.enable=0"
```
After you are done, run `sudo update-grub` or `sudo grub-mkconfig -o /boot/grub/grub.cfg`, if you are using Arch.
Once you have made the necessary changes to the GRUB configuration file, you can update it by running `sudo update-grub` or `sudo grub-mkconfig -o /boot/grub/grub.cfg` on Arch Linux. On the other hand, for Fedora, you can update the configuration file by running one of the following commands:
```
sudo grub2-mkconfig -o /etc/grub2.cfg
```
```
sudo grub2-mkconfig -o /etc/grub2-efi.cfg
```
```
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# Legacy boot method for grub update.
```
### AUR

View File

@ -20,9 +20,9 @@ fi
#separator
function separator {
local COLOUMNS="`tput cols`"
local COLUMNS="`tput cols`"
echo -e "\n"
printf "%0.s─" $(seq $COLOUMNS)
printf "%0.s─" $(seq $COLUMNS)
echo -e "\n"
}
@ -37,8 +37,8 @@ function root_check {
}
function header {
local COLOUMNS="`tput cols`"
MID="$((COLOUMNS / 2))"
local COLUMNS="`tput cols`"
MID="$((COLUMNS / 2))"
HEADER="$1"
printf "%0.s─" $(seq $((MID-(${#HEADER}/2)- 1)))
echo -n " $HEADER "
@ -272,6 +272,50 @@ function tool_remove {
echo -e "\nauto-cpufreq tool and all its supporting files successfully removed."
separator
}
function tool_update {
# Specify the repository and package name
# IT IS IMPORTANT TO NOTE THAT IF THE REPOSITORY STRUCTURE IS CHANGED, THE FOLLOWING FUNCTION NEEDS TO BE UPDATED ACCORDINGLY
repository="AdnanHodzic/auto-cpufreq"
# Fetch the latest release information from GitHub API
latest_release=$(curl -s "https://api.github.com/repos/$repository/releases/latest")
# Extract the latest release version without using jq
latest_version=$(echo "$latest_release" | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)
# Get the current version of auto-cpufreq
#installed_version=$(pip list | awk '/auto-cpufreq/ {print $2}')
installed_version=$(grep -oP "(?<=__requires__ = 'auto-cpufreq==)\d+(\.\d+)+" /opt/auto-cpufreq/venv/bin/auto-cpufreq)
#Check whether the same is installed or not
if [[ -z "$installed_version" ]]; then
echo "Current version not found, please install auto-cpufreq first"
echo $installed_version
sleep 1
exit 1
fi
installed_version="v$installed_version"
# Compare the latest version with the installed version and perform update if necessary
if [[ "$latest_version" == "$installed_version" ]]; then
echo "auto-cpufreq is up to date"
else
echo -e "Updates are available,\nCurrent version: $installed_version\nLatest version: $latest_version \nNote that your previous custom settings might be \033[1merased\033[0m with the following update \nalong with the \033[1mcurrent\033[0m directory. "
read -p "Do you want to update auto-cpufreq to the latest release? [y/n]: " ans
if [[ "$ans" == "y" ]]; then
header "Updating auto-cpufreq to the latest release\n"
tool_remove
echo -e "deleting the current directory\n"
script_directory="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
mkdir "$script_directory/../auto-cpufreq $latest_version" && cd $_
rm -rf $script_directory
echo -e "cloning to the latest release\n"
git clone https://github.com/AdnanHodzic/auto-cpufreq.git
cd auto-cpufreq
separator
tool_install
else
separator
echo "Aborting..."
sleep 0.5
fi
fi
}
function ask_operation {
header "auto-cpufreq installer"
@ -279,10 +323,11 @@ function ask_operation {
\nOptions:\n"
read -p \
"[I]nstall
[U]pdate
[R]emove
[Q]uit
Select a key: [i/r/q]: " answer
Select a key: [i/u/r/q]: " answer
}
# End of functions
@ -295,6 +340,9 @@ else
"--install")
answer="i"
;;
"--update")
answer="u"
;;
"--remove")
answer="r"
;;
@ -307,6 +355,8 @@ fi
case $answer in
I|i)
tool_install ;;
U|u)
tool_update ;;
R|r)
tool_remove ;;
Q|q)

75
auto_cpufreq/core.py Normal file → Executable file
View File

@ -18,6 +18,8 @@ from math import isclose
from pathlib import Path
from shutil import which
from subprocess import getoutput, call, run, check_output, DEVNULL
import requests
import re
# execution timestamp used in countdown func
from datetime import datetime
@ -162,7 +164,41 @@ def app_version():
except Exception as e:
print(repr(e))
pass
def verify_update():
# Specify the repository and package name
# IT IS IMPORTANT TO THAT IF THE REPOSITORY STRUCTURE IS CHANGED, THE FOLLOWING FUNCTION NEEDS TO BE UPDATED ACCORDINGLY
# Fetch the latest release information from GitHub API
latest_release_url = f"https://api.github.com/repos/AdnanHodzic/auto-cpufreq/releases/latest"
latest_release = requests.get(latest_release_url).json()
latest_version = latest_release["tag_name"]
# Get the current version of auto-cpufreq
# Extract version number from the output string
output = check_output(['auto-cpufreq', '--version']).decode('utf-8')
version_line = next((re.search(r'\d+\.\d+\.\d+', line).group() for line in output.split('\n') if line.startswith('auto-cpufreq version')), None)
installed_version = "v" + version_line
#Check whether the same is installed or not
# Compare the latest version with the installed version and perform update if necessary
if latest_version == installed_version:
print("auto-cpufreq is up to date")
exit(0)
else:
print(f"Updates are available,\nCurrent version: {installed_version}\nLatest version: {latest_version}")
print("Note that your previous custom settings might be erased with the following update")
def new_update():
username = os.getlogin()
home_dir = "/home/" + username
os.chdir(home_dir)
current_working_directory = os.getcwd()
print("Cloning the latest release to the home directory: ")
print(os.getcwd())
run(["git", "clone", "https://github.com/AdnanHodzic/auto-cpufreq.git"])
os.chdir("auto-cpufreq")
print("package cloned to directory ", current_working_directory)
run(['./auto-cpufreq-installer'], input='i\n', encoding='utf-8')
# return formatted version for a better readability
def get_formatted_version():
literal_version = pkg_resources.require("auto-cpufreq")[0].version
@ -416,7 +452,8 @@ def deploy_daemon_performance():
# output warning if gnome power profile is running
gnome_power_detect_install()
gnome_power_svc_disable_performance()
#"gnome_power_svc_disable_performance" is not defined
#gnome_power_svc_disable_performance()
# output warning if TLP service is detected
tlp_service_detect()
@ -1138,10 +1175,20 @@ def sysinfo():
cpu_core = dict()
freq_per_cpu = []
for i in range(0, len(coreid_info), 3):
freq_per_cpu.append(float(coreid_info[i + 1].split(":")[-1]))
# ensure that indices are within the valid range, before accessing the corresponding elements
if i + 1 < len(coreid_info):
freq_per_cpu.append(float(coreid_info[i + 1].split(":")[-1]))
else:
# handle the case where the index is out of range
continue
# ensure that indices are within the valid range, before accessing the corresponding elements
cpu = int(coreid_info[i].split(":")[-1])
core = int(coreid_info[i + 2].split(":")[-1])
cpu_core[cpu] = core
if i + 2 < len(coreid_info):
core = int(coreid_info[i + 2].split(":")[-1])
cpu_core[cpu] = core
else:
# handle the case where the index is out of range
continue
online_cpu_count = len(cpu_core)
offline_cpus = [str(cpu) for cpu in range(total_cpu_count) if cpu not in cpu_core]
@ -1159,15 +1206,26 @@ def sysinfo():
cpu_temp_index = core_temp_labels.index(f"Core {core}")
temp_per_cpu[i] = core_temp["coretemp"][cpu_temp_index].current
else:
temp = list(psutil.sensors_temperatures())
temp_per_cpu = [core_temp[temp[0]][0].current] * online_cpu_count
# iterate over all sensors
for sensor in core_temp:
# iterate over all temperatures in the current sensor
for temp in core_temp[sensor]:
if temp.label == 'CPU':
temp_per_cpu = [temp.current] * online_cpu_count
break
else:
continue
break
else: # if 'CPU' label not found in any sensor, use first available temperature
temp = list(core_temp.keys())[0]
temp_per_cpu = [core_temp[temp][0].current] * online_cpu_count
except Exception as e:
print(repr(e))
pass
print("Core\tUsage\tTemperature\tFrequency")
for (cpu, usage, freq, temp) in zip(cpu_core, usage_per_cpu, freq_per_cpu, temp_per_cpu):
print(f"CPU{cpu}:\t{usage:>5.1f}% {temp:>3.0f} °C {freq:>5.0f} MHz")
print(f"CPU{cpu} {usage:>5.1f}% {temp:>3.0f} °C {freq:>5.0f} MHz")
if offline_cpus:
print(f"\nDisabled CPUs: {','.join(offline_cpus)}")
@ -1236,4 +1294,5 @@ def not_running_daemon_check():
exit(1)
elif os.getenv("PKG_MARKER") == "SNAP" and dcheck == "disabled":
daemon_not_running_msg()
exit(1)
exit(1)

View File

@ -18,6 +18,7 @@ from auto_cpufreq.power_helper import *
@click.command()
@click.option("--monitor", is_flag=True, help="Monitor and see suggestions for CPU optimizations")
@click.option("--live", is_flag=True, help="Monitor and make (temp.) suggested CPU optimizations")
@click.option("--update", is_flag=True, help="Update daemon and package for (permanent) automatic CPU optimizations")
@click.option("--install", is_flag=True, help="Install daemon for (permanent) automatic CPU optimizations")
@click.option("--remove", is_flag=True, help="Remove daemon for (permanent) automatic CPU optimizations")
@ -35,7 +36,7 @@ from auto_cpufreq.power_helper import *
@click.option("--donate", is_flag=True, help="Support the project")
@click.option("--log", is_flag=True, hidden=True)
@click.option("--daemon", is_flag=True, hidden=True)
def main(config, daemon, debug, install, remove, live, log, monitor, stats, version, donate, force, get_state):
def main(config, daemon, debug, update, install, remove, live, log, monitor, stats, version, donate, force, get_state):
# display info if config file is used
def config_info_dialog():
@ -45,7 +46,8 @@ def main(config, daemon, debug, install, remove, live, log, monitor, stats, vers
# set governor override unless None or invalid
if force is not None:
not_running_daemon_check()
set_override(force)
root_check() # Calling root_check before set_override as it will require sudo access
set_override(force) # Calling set override, only if force has some values
if len(sys.argv) == 1:
@ -85,6 +87,8 @@ def main(config, daemon, debug, install, remove, live, log, monitor, stats, vers
set_autofreq()
countdown(2)
else:
pass
#"daemon_not_found" is not defined
daemon_not_found()
elif monitor:
config_info_dialog()
@ -211,7 +215,8 @@ def main(config, daemon, debug, install, remove, live, log, monitor, stats, vers
auto_cpufreq_stats_file.close()
auto_cpufreq_stats_path.unlink()
# ToDo:
# ToDo:
# {the following snippet also used in --update, update it there too(if required)}
# * undo bluetooth boot disable
gnome_power_rm_reminder_snap()
remove_complete_msg()
@ -219,6 +224,32 @@ def main(config, daemon, debug, install, remove, live, log, monitor, stats, vers
root_check()
remove_daemon()
remove_complete_msg()
elif update:
root_check()
if os.getenv("PKG_MARKER") == "SNAP":
print("Detected auto-cpufreq was installed using snap")
# refresh snap directly using this command
print("Please update using snap package manager, i.e: `sudo snap refresh auto-cpufreq`.")
#check for AUR
elif subprocess.run(["bash", "-c", "command -v yay >/dev/null 2>&1"]).returncode == 0 or subprocess.run(["bash", "-c", "command -v pacman >/dev/null 2>&1"]).returncode == 0:
print("Arch-based distribution with AUR support detected. Please refresh auto-cpufreq using your AUR helper.")
else:
verify_update()
ans = input ("Do you want to update auto-cpufreq to the latest release? [y/n]: ")
valid_options = ['y', 'Y', 'yes', 'YES', 'Yes']
if ans.lower() in valid_options:
remove_daemon()
remove_complete_msg()
new_update()
else:
print("incorrect input\n")
print("Aborted")
print("enabling daemon")
run(["auto-cpufreq", "--install"])
print("auto-cpufreq is installed with the latest version")
app_version()
if __name__ == "__main__":

0
requirements.txt Normal file → Executable file
View File

View File

@ -1,2 +1,3 @@
#!/bin/sh
export PATH="$PATH:/usr/local/bin"
exec /usr/local/bin/auto-cpufreq --daemon

View File

@ -100,6 +100,12 @@ function driver () {
cat $FLROOT/cpu0/cpufreq/scaling_driver
}
function write_value () {
if [ -w $FLNM ]; then
echo $VALUE > $FLNM
fi
}
function set_driver () {
DRIVER=`driver`
case $DRIVER in
@ -136,7 +142,7 @@ function set_governor () {
while [ $i -ne $cpucount ]
do
FLNM="$FLROOT/cpu"$i"/cpufreq/scaling_governor"
echo $VALUE > $FLNM
write_value
i=`expr $i + 1`
done
else
@ -178,7 +184,7 @@ function set_frequency () {
while [ $i -ne $cpucount ]
do
FLNM="$FLROOT/cpu"$i"/cpufreq/scaling_setspeed"
echo $VALUE > $FLNM
write_value
i=`expr $i + 1`
done
else
@ -201,7 +207,7 @@ function set_frequency_min () {
while [ $i -ne $cpucount ]
do
FLNM="$FLROOT/cpu"$i"/cpufreq/scaling_min_freq"
echo $VALUE > $FLNM
write_value
i=`expr $i + 1`
done
else
@ -224,7 +230,7 @@ function set_frequency_max () {
while [ $i -ne $cpucount ]
do
FLNM="$FLROOT/cpu"$i"/cpufreq/scaling_max_freq"
echo $VALUE > $FLNM
write_value
i=`expr $i + 1`
done
else
@ -276,7 +282,7 @@ function set_energy_performance_preference () {
while [ $i -ne $cpucount ]
do
FLNM="$FLROOT/cpu"$i"/cpufreq/energy_performance_preference"
echo $VALUE > $FLNM
write_value
i=`expr $i + 1`
done
else

View File

@ -20,6 +20,7 @@ parts:
python-packages:
- setuptools
- wheel
- requests
build-packages:
- gcc
- python3-dev