Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refact: auto-cpufreq #908

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions core/tabs/applications-setup/auto-cpufreq.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
#!/bin/sh -e

. ../common-script.sh

installAutoCpufreq() {
clear

AUTO_CPUFREQ_PATH="$HOME/.local/share/auto-cpufreq"

if ! command_exists auto-cpufreq; then
printf "%b\n" "${YELLOW}Installing auto-cpufreq.${RC}"

if ! command_exists git && [ "$PACKAGER" != "pacman" ]; then
printf "%b\n" "${YELLOW}Installing git.${RC}"
case "$PACKAGER" in
*)
"$ESCALATION_TOOL" "$PACKAGER" install -y git
;;
esac
fi

case "$PACKAGER" in
pacman)
if command_exists powerprofilesctl; then
printf "%b\n" "${YELLOW}Disabling powerprofilesctl service.${RC}"
"$ESCALATION_TOOL" systemctl disable --now power-profiles-daemon
fi

"$AUR_HELPER" -S --needed --noconfirm auto-cpufreq
"$ESCALATION_TOOL" systemctl enable --now auto-cpufreq
;;
*)
mkdir -p "$HOME/.local/share"

if [ -d "$AUTO_CPUFREQ_PATH" ]; then
rm -rf "$AUTO_CPUFREQ_PATH"
fi

printf "%b\n" "${YELLOW}Cloning auto-cpufreq repository.${RC}"
git clone --depth=1 https://github.com/AdnanHodzic/auto-cpufreq.git "$AUTO_CPUFREQ_PATH"

cd "$AUTO_CPUFREQ_PATH"
printf "%b\n" "${YELLOW}Running auto-cpufreq installer.${RC}"
"$ESCALATION_TOOL" ./auto-cpufreq-installer
"$ESCALATION_TOOL" auto-cpufreq --install
;;
esac
else
printf "%b\n" "${GREEN}auto-cpufreq is already installed.${RC}"
fi
}

applyTweak() {
printf "%b\n" "${YELLOW}Configuring auto-cpufreq.${RC}"

if command_exists auto-cpufreq; then
if [ -d /sys/class/power_supply/BAT0 ]; then
printf "%b\n" "${GREEN}System detected as laptop. Updating auto-cpufreq for laptop.${RC}"
"$ESCALATION_TOOL" auto-cpufreq --force powersave
else
printf "%b\n" "${GREEN}System detected as desktop. Updating auto-cpufreq for desktop.${RC}"
"$ESCALATION_TOOL" auto-cpufreq --force performance
fi
else
printf "%b\n" "${RED}auto-cpufreq is not installed.${RC}"
exit 1
fi
}

removeTweak() {
if command_exists auto-cpufreq; then
printf "%b\n" "${YELLOW}Removing auto-cpufreq tweak.${RC}"
"$ESCALATION_TOOL" auto-cpufreq --force reset
else
printf "%b\n" "${RED}auto-cpufreq is not installed.${RC}"
exit 1
fi
}

main() {
printf "%b\n" "${YELLOW}Do you want to apply the auto-cpufreq tweak or remove it?${RC}"
printf "%b\n" "${YELLOW}1) Apply tweak${RC}"
printf "%b\n" "${YELLOW}2) Remove tweak${RC}"
printf "%b\n" "${YELLOW}3) Exit${RC}"
printf "%b" "Enter your choice [1/3]: "
read -r choice

case "$choice" in
1)
applyTweak
;;
2)
removeTweak
;;
3)
printf "%b\n" "${GREEN}Exiting.${RC}"
exit 0
;;
*)
printf "%b\n" "${RED}Invalid choice. Exiting.${RC}"
exit 1
;;
esac

printf "%b\n" "${GREEN}auto-cpufreq setup complete.${RC}"
}

checkEnv
checkEscalationTool
installAutoCpufreq
main
6 changes: 6 additions & 0 deletions core/tabs/applications-setup/tab_data.toml
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,12 @@ description = "Universal Android Debloater (UAD) is a tool designed to help user
script = "android-debloat.sh"
task_list = "I"

[[data]]
name = "Auto CPU Frequency"
description = "Automatic CPU speed & power optimizer.\nhttps://github.com/AdnanHodzic/auto-cpufreq"
script = "auto-cpufreq.sh"
task_list = "I SS"

[[data]]
name = "Bash Prompt"
description = "The .bashrc file is a script that runs every time a new terminal session is started in Unix-like operating systems.\nIt is used to configure the shell session, set up aliases, define functions, and more, making the terminal easier to use and more powerful.\nThis command configures the key sections and functionalities defined in the .bashrc file from CTT's mybash repository.\nhttps://github.com/ChrisTitusTech/mybash"
Expand Down
98 changes: 0 additions & 98 deletions core/tabs/utils/power-profile.sh

This file was deleted.

5 changes: 0 additions & 5 deletions core/tabs/utils/tab_data.toml
Original file line number Diff line number Diff line change
Expand Up @@ -110,11 +110,6 @@ name = "Auto Login"
script = "auto-login.sh"
task_list = "DE setup"

[[data]]
name = "Auto Power Profiling"
script = "power-profile.sh"
task_list = "I"

[[data]]
name = "Bluetooth Manager"
description = "This utility is designed to manage bluetooth in your system"
Expand Down
2 changes: 2 additions & 0 deletions docs/userguide.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ https://github.com/ChrisTitusTech/neovim
- **Alacritty**: Alacritty is a modern terminal emulator that comes with sensible defaults, but allows for extensive configuration. By integrating with other applications, rather than reimplementing their functionality, it manages to provide a flexible set of features with high performance. The supported platforms currently consist of BSD, Linux, macOS and Windows.
This command installs and condifures alacritty terminal emulator.
- **Android Debloater**: Universal Android Debloater (UAD) is a tool designed to help users remove bloatware and unnecessary pre-installed applications from Android devices, enhancing performance and user experience.
- **Auto CPU Frequency**: Automatic CPU speed & power optimizer.
https://github.com/AdnanHodzic/auto-cpufreq
- **Bash Prompt**: The .bashrc file is a script that runs every time a new terminal session is started in Unix-like operating systems.
It is used to configure the shell session, set up aliases, define functions, and more, making the terminal easier to use and more powerful.
This command configures the key sections and functionalities defined in the .bashrc file from CTT's mybash repository.
Expand Down