linutil/core/tabs/applications-setup/auto-cpufreq.sh
2024-11-08 22:10:36 +05:30

112 lines
3.3 KiB
Bash

#!/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 ls /sys/class/power_supply/BAT* >/dev/null 2>&1; 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